我正在抓取一些网页,并解析其中的一些数据,但其中一个网站似乎阻止了我的请求。使用Python3和urllib.requests的代码版本运行良好。我的问题是我需要使用Python2.7,而我无法使用urllib2获得响应
这些请求不应该是相同的吗?
Python 3版本:
def fetch_title(url):
req = urllib.request.Request(
url,
data=None,
headers={
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36'
}
)
html = urllib.request.urlopen(req).read().encode('unicode-escape').decode('ascii')
return htmlPython 2.7版本:
import urllib2
opener = urllib2.build_opener()
opener.addheaders = [(
'User-Agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36'
)]
response = opener.open('http://website.com')
print response.read()发布于 2017-03-03 09:56:49
下面的代码应该可以工作,本质上是使用python2.7,你可以用你想要的头创建一个字典,并使用urllib2.Request来格式化你的请求,这样它就可以在urllib2.urlopen中正常工作。
import urllib2
def fetch_title(url):
my_headers = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36"
}
return urllib2.urlopen(urllib2.Request(url, headers=my_headers)).read()https://stackoverflow.com/questions/42568143
复制相似问题