首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Python2.7中重新创建urllib.requests?

如何在Python2.7中重新创建urllib.requests?
EN

Stack Overflow用户
提问于 2017-03-03 07:50:01
回答 1查看 970关注 0票数 1

我正在抓取一些网页,并解析其中的一些数据,但其中一个网站似乎阻止了我的请求。使用Python3和urllib.requests的代码版本运行良好。我的问题是我需要使用Python2.7,而我无法使用urllib2获得响应

这些请求不应该是相同的吗?

Python 3版本:

代码语言:javascript
复制
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版本:

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-03 09:56:49

下面的代码应该可以工作,本质上是使用python2.7,你可以用你想要的头创建一个字典,并使用urllib2.Request来格式化你的请求,这样它就可以在urllib2.urlopen中正常工作。

代码语言:javascript
复制
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()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42568143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档