Python urllib2在某些网站上不起作用

时间:2010-04-03 18:44:25

标签: python urllib2 urllib

我发现您无法使用Python的urllib2(或urllib)从某些网站上阅读。一个例子......

urllib2.urlopen("http://www.dafont.com/").read()
# Returns ''

当您使用浏览器访问该网站时,这些网站会起作用。我甚至可以使用PHP抓它们(没有尝试其他语言)。我见过其他网站存在同样的问题 - 但目前还不记得网址。

我的问题是......

  1. 这个问题的原因是什么?
  2. 有任何解决方法吗?

3 个答案:

答案 0 :(得分:6)

我相信它会被User-Agent阻止。您可以使用以下示例代码更改User-Agent:

USERAGENT = 'something'
HEADERS = {'User-Agent': USERAGENT}

req = urllib2.Request(URL_HERE, headers=HEADERS)
f = urllib2.urlopen(req)
s = f.read()
f.close()

答案 1 :(得分:3)

尝试设置其他用户代理。查看this link中的答案。

答案 2 :(得分:0)

我是发布问题的人。我有一些怀疑 - 但不确定 - 这就是我在这里发布问题的原因。

这个问题的原因是什么?

我认为这是由于主机使用robot.txt或htaccess阻止了urllib库。但不确定。甚至不确定它是否可能。

此问题的解决方法是什么?

如果你在Unix中,这将有效...

contents = commands.getoutput("curl -s '"+url+"'")