Python3爬虫请求库的使用requests
Posted Infi_chu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python3爬虫请求库的使用requests相关的知识,希望对你有一定的参考价值。
Infi-chu:
http://www.cnblogs.com/Infi-chu/
一、基本用法:
1. 安装:
pip install requests
2. 例子:
import requests url = \'http://www.baidu.com\' r = requests.get(url) print(type(r)) # 类型是str(JSON格式) print(r.status_code) print(r.text) print(r.cookies)
【注】其余请求方法也是一样的
r = requests.post(url) r = requests.put(url) r = requests.delete(url) r = requests.head(url) r = requests.options(url)
3. GET请求:
- 例子
import requests url = \'http://www.baidu.com\' r = requests.get(url) print(r.text)
若想在url中添加参数有两种方式:
a. 直接添加
r = requests.get(url+参数)
b. 通过params参数添加
import requests data = {"name":"Infi-chu","age":"23"} r = requests.get(url,params=data)
网页的返回类型是str类型,是JSON格式的,我们可以直接调用 json()方法
若返回结果不是JSON格式,便会出现解析错误,抛出 json.decode.JSONDecodeError异常
- 抓取网页
可使用正则表达式和headers。
- 抓取二进制数据
图片、音频、视频等文件本质上都是二进制码组成的。
抓取GitHub图标:
import requests r = requests.get("http://github.com/favicon.ico") print(r.text) print(r.content) # 保存图片 with open(\'favicon.ico\',\'wb\') as f: f.write(r.content)
- 添加headers
在爬取知乎时必须在User-Agent中加入信息,否则不能爬取,会被拦截
4. POST请求
improt requests data = {\'name\':\'Infi-chu\',\'age\'=\'23\'} r = requests.post(\'http://www.baidu.com\',data=data)
成功后会在form中看到所提交的数据(F12查看)
5. 响应
发送数据后,得到的就是响应,我们使用text和content获取了内容,下面是另外的信息:
import requests r = requests.get(\'http://www.baidu.com\') print(type(r.status_code),r.status_code) print(type(r.headers),r.headers) print(type(r.cookies),r.cookies) print(type(r.history),r.history) print(type(r.url),r.url)
headers 属性返回 CaseInsensitiveDict 类型
cookies 属性返回 RequestsCookieJar 类型
二、高级用法:
1.文件上传
import requests f = {\'file\':open(\'favicon.ico\',\'rb\')} r = requests.post(url,files=f) print(r.text)
2.Cookies
import requests r = requests.get(url) print(r.cookies) for k,v in r.cookies.items(): print(k+"="+v)
3.会话维持
使用Session对象
import requests s = requests.Session() s.get(\'http://httpbin.org/cookies/set/number/123456789\') r = s.get(\'http://httpbin.org/cookies\') print(r.text)
4.SSL证书验证
requests提供了证书验证的功能,使用verify参数控制是否检查此证书,默认是True,会自动验证
5.代理设置
对于某些网站,在测试的时候请求几次,能正常获取信息,但是一旦大规模爬取,可能会出现验证码或直接封掉IP,导致一段时间内无法访问
代理设置:
import requests proxy = {\'http\':\'http://ip:port\',\'https\':\'https://ip:port\'} requests.get(\'https://www.taobao.com\',proxies=proxy)
6.超时设置
import requests r = requests.get(\'https://www.taobao.com\',timeout=1) print(r.status_code)
7.身份认证
import requests from requests.auth import HTTPBasicAuth r = requests.get(url,auth=HTTPBasicAuth(\'username\',\'password\')) print(r.status_code) # 可简写为 r = requests.get(url,auth=(\'username\',\'password\')) print(r.status_code) # 也提供了OAuth认证,使用 pip3 install requests_oauthlib
8.Prepared Request
将请求表示为数据结构,这个数据结构叫Prepared Request
以上是关于Python3爬虫请求库的使用requests的主要内容,如果未能解决你的问题,请参考以下文章