我正在尝试使用python为我的项目从FEC.gov网站上删除一些数据。通常我使用python mechanize
和beautifulsoup
进行抓取。
我已经能够找出大部分问题,但似乎无法解决问题。似乎数据流入表和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问题。
有什么想法或建议吗?我可以使用硒或类似的东西但这是我试图避免的东西。
- 将会
答案 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