python - 从以流式方式加载数据的网站抓取网络数据

标签 python web-scraping mechanize

我正在尝试使用 python 从 FEC.gov 网站上抓取一些数据,用于我的一个项目。通常我使用 python mechanizebeautifulsoup做刮痧。

我已经能够弄清楚大部分问题,但似乎无法解决问题。似乎数据已流入表中,而 mechanize.Browser() 只是停止监听。

所以这里的问题是:
如果您访问 http://query.nictusa.com/cgi-bin/can_ind/2011_P80003338/1/A ...您会得到前 500 名姓氏以 A 开头的贡献者,并已向候选人 P80003338 捐款...但是,如果您在该 url 上使用 browser.open(),您得到的只是前 5 行。

我猜是因为 Mechanize 没有让页面在 .read() 之前完全加载被执行。我试着放一个 time.sleep(10) .open()之间和 .read()但这并没有太大区别。

我检查了一下,网站中没有 javascript 或 AJAX(或者至少在您使用“查看源”时不可见)。所以我不认为它是一个 javascript 问题。

有什么想法或建议吗?我可以使用 Selenium 或类似的东西,但这是我试图避免的东西。

-将要

最佳答案

为什么不使用像 lxml 这样的 html 解析器与 xpath expressions .

我试过

>>> import lxml.html as lh
>>> data = lh.parse('http://query.nictusa.com/cgi-bin/can_ind/2011_P80003338/1/A')
>>> name = data.xpath('/html/body/table[2]/tr[5]/td[1]/a/text()')
>>> name
[' AABY, TRYGVE']
>>> name = data.xpath('//table[2]/*/td[1]/a/text()')
>>> len(name)
500
>>> name[499]
' AHMED, ASHFAQ'
>>>

同样,您可以创建 xpath expression您选择与之合作。

关于python - 从以流式方式加载数据的网站抓取网络数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9435512/

相关文章:

python - argparse 子解析器的帮助中缺少字符

java - 使用 Java 和 XPath 提取网页内容

python - 从 Tableau map 中抓取数据

ruby-on-rails - 使用 Mechanize 过滤数组结果

python - 尽管 mechanize 可以工作,但 urllib.urlopen 不适用于此 url

python - 使用 mechanize python 登录 Instagram

Python 连接到 Hive 使用 pyhs2 和 Kerberos 身份验证

Python字典理解

python - 为什么 multiprocessing 中的新对象具有相同的 id?

javascript - 在网页上的cmd行中显示数据