2

这段代码工作正常并阅读 html。然后该站点停止提供有关 read() 的任何数据。没有错误代码。

这是因为网络服务器检测到了一些不寻常的东西,对吧?(在我想设置用户代理之前,我遇到了错误 403:不良行为)

urllib2 是否有一些明显的标志可以引发标志?切换到另一个图书馆会有帮助吗?

我没有做任何可疑的事情。我看不出使用这个库读取页面和使用 lynx 浏览器之间的任何行为差异。

import urllib2
opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
search_url='http://www.google.com/?search=stackoverflow"'
raw = opener.open(search_url)
print raw.headers
print raw.read()
4

2 回答 2

2

鉴于您的打印语句,我假设您是通过 Python2.x 执行此操作的 大卫罗宾逊的建议可能在这里有所作为。

另一方面,我个人使用过以下示例片段

import urllib2

req = urllib2.Request('http://www.voidspace.org.uk')
response = urllib2.urlopen(req)
the_page = response.read()

多次,在多个用例中,从未遇到过您的错误。

于 2012-05-07T16:32:22.207 回答
0

尝试使用 mechanize 而不是普通的 urllib2 来抓取搜索引擎,它可以更好地模仿浏览器的行为。

于 2012-05-08T11:37:51.067 回答