从以网络流方式加载数据的网站刮取webdata

时间:2012-02-24 17:47:39

标签: 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 ......但是,如果你在那个网址上使用browser.open(),你得到的只是前5行。

我猜它是因为机械化不会在执行.read()之前让页面完全加载。我尝试在time.sleep(10).open()之间添加.read(),但这并没有太大区别。

我检查过,网站上没有javascript或AJAX(或者当你使用'view-source'时至少没有可见的)。所以我认为这不是一个javascript问题。

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

- 将会

2 个答案:

答案 0 :(得分:1)

为什么不使用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来使用。

答案 1 :(得分:0)

为什么不使用mechanize

之类的内容,而不是使用requests