有没有一种方法可以模拟“模拟”;选择“全部-复制-粘贴”;在Python的网页上?

有没有一种方法可以模拟“模拟”;选择“全部-复制-粘贴”;在Python的网页上?,python,python-3.x,Python,Python 3.x,我正试图从网页中提取一些数据。但是,如果我使用urllib.request模块,结果会很混乱,因为数据位于html表中(也不是很完美) 我发现,如果我在浏览器中打开页面,简单地对记事本执行CTRL+A、CTRL+C、CTRL+V操作,我就能得到我想要的东西。有没有一种方法可以在python中进行模拟,因为我需要在大量页面上进行模拟 我也尝试过使用BeautifulSoup,但正如我所说的,这些表做得非常糟糕,这将归结为修改用于提取每个表的文本的代码,这将比实际手动复制粘贴花费更多的时间。有一些替

我正试图从网页中提取一些数据。但是,如果我使用urllib.request模块,结果会很混乱,因为数据位于html表中(也不是很完美)

我发现,如果我在浏览器中打开页面,简单地对记事本执行CTRL+A、CTRL+C、CTRL+V操作,我就能得到我想要的东西。有没有一种方法可以在python中进行模拟,因为我需要在大量页面上进行模拟


我也尝试过使用BeautifulSoup,但正如我所说的,这些表做得非常糟糕,这将归结为修改用于提取每个表的文本的代码,这将比实际手动复制粘贴花费更多的时间。

有一些替代方法

  • 仍在使用
    urllib
    ,但自己删除HTML标记或使用Beauty Soup
  • 如果您熟悉Qt,请使用
    QWebKit
    模块加载网页并提取文本
  • 用于控制web浏览器的驱动程序
  • 如果计划中没有使用Windows和可移植性,则可以使用WinAPI(
    SendMessage
    PostMessage
    )来模拟CTRL+A、CTRL+C和CTRL+V

希望这有帮助

我对Python非常陌生,我不知道selenium是什么,但是如果你能找到某种模式,你应该能够做到你所描述的。关键是找到一种模式。下面是一些示例脚本,可以让您了解如何开始

import urllib2
from bs4 import BeautifulSoup

f = open('C:/Users/rshuell001/Desktop/test.txt', 'w')

link = "http://espn.go.com/nba/team/roster/_/name/bkn/brooklyn-nets" 
page = urllib2.urlopen(link)
soup = BeautifulSoup(page, "html.parser")

table = soup.find("table")

for row in table.findAll("tr",{"class":["oddrow","evenrow"]}):
    col = row.findAll('td')

    player = col[1].string
    position = col[2].string

    f.write(player + '\t' + position + '\n')

f.close()


********  ********  ********  ********  ********  ********  ********  ********  ********  ********  


from bs4 import BeautifulSoup
from urllib2 import urlopen


def make_soup(url):
    html = urlopen(url).read()
    return BeautifulSoup(html)


def get_teams():
    url = "http://espn.go.com/nba/teams"
    soup = make_soup(url)
    teams = []
    for team_chunk in soup.find_all('ul', class_='medium-logos'):
        li_tags = team_chunk.find_all('li')
        for li in li_tags:
            team = li.h5.a
            link = team['href']
            teams.append(link.encode('utf-8'))

    return teams

if __name__ == "__main__":
    print get_teams()
    print len(get_teams())


import requests
from bs4 import BeautifulSoup

r = requests.get("http://www.kijiji.ca/h-gander/1700255")
soup = BeautifulSoup(r.content)
print soup.find_all("a",{"class":"category-selected"})


import requests
from bs4 import BeautifulSoup

url = "http://www.indeed.com/jobs?q=hardware+engineer&l=San+Francisco%2C+CA"

r = requests.get(url)
soup = BeautifulSoup(r.content)

job_titles = soup.find_all("h2", {"class", "jobtitle"})

for job in job_titles:
    print job.text.strip()

简单的回答是不。。。长句的答案是使用beautifulsoup在htmlOk中辛苦工作,谢谢,这很有帮助。至少我不必再搜索解决方案了:)另一个可能尝试的库是Scrapy(),Selenium绝对是一个不错的选择(WinAPI听起来很有希望,但我不知道)。如果有足够的模式来拉起页面并向下钻取标签以提取文本,那么Scrapy可能会起作用。但是,感谢您的努力,所讨论的表实际上是不一致的,因此在您深入HTML的那一刻,内容就不可用了。