温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Python中怎么利用Requests实现网络请求

发布时间:2021-07-10 14:31:31 来源:亿速云 阅读:238 作者:Leah 栏目:大数据

Python中怎么利用Requests实现网络请求,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

场景

>>> r = requests.get('https://google.cn') # get
>>> r
<Response [200]> # HTTP 响应200
>>> r.headers['content-type'] # 网页类型
'text/html'
>>> r.encoding # 正在使用的编码
'ISO-8859-1

   

基础用法

上面这个是最简单的,不需要上面认证、服务器认证代理、请求内容、定制头等,比如带上请求数据,把需要的数据封装为字典,然后用 params 带入即可。


# 在浏览器访问的网址是
# https://google.cn/get?key2=value2&key1=value1
# 用 Requests 来访问
>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.get('https://google.cn/get', params=payload)

 


对返回的内容还可以解析,有一个内置的 JSON 解码器,不过是针对一个返回的是一个字典,如果是多个字典的话,有报错异常提示。


>>> import requests
>>> r = requests.get('https://google.cn/events')
>>> r.json()
[{u'repository': {u'open_issues': 0, u'url': 'https://google.cn/...

 


如果JSON解码失败,则 r.json() 引发异常。例如,如果响应获得 204(无内容),或者响应包含无效的 JSON ,则尝试 r.json() 引发。


ValueError: No JSON object could be decoded
 


自定义 header 内容


>>> headers = {'user-agent': 'my-app/0.0.1'}
>>> r = requests.get(url, headers=headers)

 


对于 POST 的请求,则需要带上 data


>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.post("https://google.cn/post", data=payload)

    

在爬取数据的时候,有时候会遇到网站是用 cookies 来访问的,这个时候需要认证,获取到 cookies,然后带上参数 cookies 即可访问。


>>> url = 'https://google.cn/cookies'
>>> cookies = dict(cookies_are='working')
>>> r = requests.get(url, cookies=cookies)

 


还有一些网站反「爬」机制的,会加上多个路径的 cookies,就可以用到


>>> jar = requests.cookies.RequestsCookieJar()
>>> jar.set('tasty_cookie', 'yum', domain='httpbin.org', path='/cookies')
>>> jar.set('gross_cookie', 'blech', domain='httpbin.org', path='/elsewhere')
>>> url = 'https://google.cn/cookies'
>>> r = requests.get(url, cookies=jar)


关于Python中怎么利用Requests实现网络请求问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI