前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python常用库-Requests网络请求

Python常用库-Requests网络请求

原创
作者头像
叉叉敌
发布2019-02-27 23:19:52
7090
发布2019-02-27 23:19:52
举报
文章被收录于专栏:ChasaysChasays

场景

Python 应用场景非常广泛,大数据、爬虫、人工智能等,常见的热门领域都离不开这个家伙,今天又来说说 Python 常用的库之一「Requests」,只要是与网络相关的的操作,都离不开这个库。RESTful 常见的增删改查「CRUD」都用这个可以实现。

基础的操作有,请求一个页面,获取「get」网页内容。

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

#基础用法

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

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

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

代码语言:txt
复制
>>> 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() 引发。

代码语言:txt
复制
ValueError: No JSON object could be decoded

自定义 header 内容

代码语言:txt
复制
>>> headers = {'user-agent': 'my-app/0.0.1'}
>>> r = requests.get(url, headers=headers)

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

代码语言:txt
复制
>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.post("https://google.cn/post", data=payload)

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

代码语言:txt
复制
>>> url = 'https://google.cn/cookies'
>>> cookies = dict(cookies_are='working')
>>> r = requests.get(url, cookies=cookies)

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

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

注意

应当指出的是,呼叫的成功 r.json() 并不能 表明响应成功。某些服务器可能会在失败的响应中返回 JSON 对象(例如,HTTP 500的错误详细信息)。这样的JSON将被解码并返回。要检查请求是否成功,请使用 r.raise_for_status() 或检查r.status_code 您的期望。

小结

Requests 一个强大的网络应用库,在了解了上面的知识后,可以用来爬爬数据,比如豆瓣、知乎、以及公众号的数据,行动起来吧,网上也有很多类似的教程,可以跟着多动手,实战一番。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 场景
  • 注意
  • 小结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com