资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

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

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

成都创新互联公司专注于盐边企业网站建设,自适应网站建设,电子商务商城网站建设。盐边网站建设公司,为盐边等地区提供建站服务。全流程定制开发,专业设计,全程项目跟踪,成都创新互联公司专业和态度为您提供的服务

场景

>>> r = requests.get('https://google.cn') # get
>>> r
 # 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实现网络请求问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。


网页标题:Python中怎么利用Requests实现网络请求
网站路径:http://cdkjz.cn/article/gdijps.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220