我发现您无法使用 Python 的 urllib2(或 urllib)从某些站点读取内容。一个例子...
urllib2.urlopen("http://www.dafont.com/").read()
# Returns ''
当您使用浏览器访问该站点时,这些站点就会起作用。我什至可以使用 PHP 抓取它们(没有尝试其他语言)。我见过其他有同样问题的网站——但现在不记得网址了。
我的问题是...
- 这个问题的原因是什么?
- 任何解决方法?
我相信它被用户代理阻止了。您可以使用以下示例代码更改 User-Agent:
USERAGENT = 'something'
HEADERS = {'User-Agent': USERAGENT}
req = urllib2.Request(URL_HERE, headers=HEADERS)
f = urllib2.urlopen(req)
s = f.read()
f.close()
尝试设置不同的用户代理。检查此链接中的答案。
我是发布问题的人。我有一些怀疑 - 但不确定 - 这就是我在这里发布问题的原因。
我认为这是由于主机使用robot.txt 或htaccess 阻止了urllib 库。但不确定。甚至不确定它是否可能。
如果你在 Unix 中,这将工作......
contents = commands.getoutput("curl -s '"+url+"'")