Python请求与urllib2

时间:2015-05-05 00:40:56

标签: python web-scraping urllib2 python-requests partial

我多次使用过请求库,我知道它有很多优点。但是,我试图检索以下维基百科页面:

https://en.wikipedia.org/wiki/Talk:Land_value_tax

和requests.get部分检索它:

response = requests.get('https://en.wikipedia.org/wiki/Talk:Land_value_tax', verify=False)
html = response.text

我使用urllib2和urllib2.urlopen尝试了它,它完全检索了同一页面:

html = urllib2.urlopen('https://en.wikipedia.org/wiki/Talk:Land_value_tax').read()

有谁知道为什么会发生这种情况以及如何使用请求来解决它?

顺便说一下,看一下这篇文章被查看的次数,我意识到人们有兴趣知道这两个库之间的差异。如果有人知道这两个库之间的其他差异,如果他们编辑这个问题或发布答案并添加这些差异,我将非常感激。

1 个答案:

答案 0 :(得分:3)

在我看来,问题在于目标页面上的脚本。 js驱动的内容在这里呈现(特别是我发现了对mediawiki的调用)。因此,您需要查看Web嗅探器来识别它: enter image description here

怎么办?如果您想要检索整个页面内容,最好插入在页面javascript中运行(评估)的任何库。阅读更多here

更新

  

我对检索从MediaWiki检索的整个页面和统计信息或JS库不感兴趣。我只需要页面的全部内容(通过抓取,而不是MediaWiki API)。

问题是那些js调用其他资源(包括mediawiki)可以将WHOLE页面呈现给客户端。但由于库不支持JS执行,因此不执行js =>页面部分未从其他资源加载=>目标页面不完整。