【发布时间】:2017-07-22 22:18:57
【问题描述】:
我正在抓取一些网页并解析其中的一些数据,但其中一个网站似乎阻止了我的请求。使用带有 urllib.requests 的 Python 3 的代码版本可以正常工作。我的问题是我需要使用 Python 2.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 html
Python 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()
【问题讨论】:
-
我确实收到了来自两个版本的响应,但我使用 urllib.requests 获得了完整的内容页面,并且我获得了带有 urllib2 版本的站点的阻止版本
标签: python python-2.7 python-3.x python-requests urllib2