2

我发现您无法使用 Python 的 urllib2(或 urllib)从某些站点读取内容。一个例子...

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

当您使用浏览器访问该站点时,这些站点就会起作用。我什至可以使用 PHP 抓取它们(没有尝试其他语言)。我见过其他有同样问题的网站——但现在不记得网址了。

我的问题是...

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

3 回答 3

6

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

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

req = urllib2.Request(URL_HERE, headers=HEADERS)
f = urllib2.urlopen(req)
s = f.read()
f.close()
于 2010-04-03T18:55:57.617 回答
3

尝试设置不同的用户代理。检查此链接中的答案。

于 2010-04-03T18:56:09.663 回答
0

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

这个问题的原因是什么?

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

这个问题的任何解决方法?

如果你在 Unix 中,这将工作......

contents = commands.getoutput("curl -s '"+url+"'")
于 2010-04-03T18:48:46.897 回答