为什么我无法访问某些网站的HTML

时间:2016-06-04 01:23:00

标签: python python-2.7

所以我一直在努力学习如何使用python有效地从网站中提取数据。理想情况下,我希望以比我目前在网站www.transfermarkt.com上更有效的方式收集数据,这是一个足球网站,但出于某种原因,该网站的行为似乎与其他所有网站不同。我试过了。即使是下面的简单代码也只是让我基本上没有回应。任何人都可以解释为什么我不能获得本网站的HTML,但我可以与其他网站。

import urllib
htmlfile = urllib.urlopen("http://www.transfermarkt.com")
htmltext = htmlfile.read()
print (htmltext)

2 个答案:

答案 0 :(得分:4)

您指定的网站已在http://www.transfermarkt.com/robots.txt中阻止机器人。因此,您必须使用用户代理作为浏览器进行访问。

所以基本上你的代码应该是

import urllib2
opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
response = opener.open("http://www.transfermarkt.com")
print (response.read())

答案 1 :(得分:1)

来自urllib#urlopen文档:

  

一个警告:read()方法,如果省略size参数或   否定,直到数据流结束才可能读取;没有   确定来自套接字的整个流的好方法   在一般情况下阅读。

如果您检查了您尝试阅读的网站的响应标头,您会看到没有Content-Length标头,这是因为传输已分块,您需要在获取之前阅读所有这些块内容。

data = htmlfile.read(512)
while data is not None:
    htmltext += data

Aswin指出的事情。