一、requests的常用方法使用样式
1.requests.get(url, params=None, **kwargs)
向HTML网页提交GET请求的方法,对应于HTTP的POST
2.requests.post(url, data=None, json=None, **kwargs)
向HTML网页提交POST请求的方法,对应于HTTP的POST
3.requests.request(method, url, **kwargs)
构造一个请求,支撑一下各方法的基础方法
4.requests.head(url, **kwargs)
获取HTML网页头信息的方法,对应于HTTP的HEAD
5.**kwargs:控制访问的参数,均为可选项,共13个
1)params:字典或字节序列,作为参数增加到url中
kv = {'key1':'value1','key2':'value2'} r = requests.request('GET','http://www.baidu.com',params=kv)
2)data:字典、字节序列或文件对象,作为Request的对象
kv = {'key1':'value1','key2':'value2'} r = requests.request('POST','http://www.baidu.com',data=kv)
3)json:JSON格式的数据,作为Request的内容
kv = {'key1':'value1','key2':'value2'} r = requests.request('POST','http://www.baidu.com',json=kv)
4)headers:字典,HTTP定制头
hd = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36"} r = requests.request('POST','http://www.baidu.com',headers=hd)
5)cookies:字典或CookieJar,Request中的cookie
6)auth:元组,支持HTTP认证功能
7)files:字典类型,传输文件
fs = {'file':open('data.xls','rb')} r = requests.request('POST','http://www.baidu.com',files=fs)
8)timeout:设定超时时间,秒为单位
r = requests.request('GET','http://www.baidu.com',timeout=10)
9)proxies:字典类型,设置访问代理服务器,可以增加登录认证
pxs = {'http':'http://user:pass@10.10.10.1:1523'} r = requests.request('GET','http://www.baidu.com',proxies=pxs)
10)allow_redirects:True/False,默认为Ture,重定向开关
11)stream:True/False,默认为True,获取内容立即下载开关
12)verify:True/False,默认为True,认证SSL证书开关
13)cert:本地SSL证书路径
6.请求会话
在很多时候我们开发的爬虫需要登录,登录后我们需要记录登录状态,否则无法爬取登录后才能爬取的网页,在request中提供了requests.Session()这样的类:
import requests s = requests.Session() s.get('http://httpbin.org/get')
这样我们的request只要调用一次登录入口就会自动维护网站的Session记录我们的登录状态,以后我们可以直接使用request访问登录才能访问的页面。
7.Cookie获取
我们可以使用cookies来获取响应中的cookie: 如果某个响应中包含一些 cookie,你可以快速访问它们:
req = requests.get("https://ptorch.com") req = requests.get("https://ptorch.com") print(req.cookies) print(req.cookies['laravel_session'])
要想发送你的cookies到服务器,可以使用cookies参数:
cookies = dict(cookies_are='working Test') req = requests.get("http://httpbin.org/cookies", cookies=cookies) print(req.text) # '{"cookies": {"cookies_are": "working Test"}}'
Cookie的返回对象为RequestsCookieJar,它的行为和字典类似,但界面更为完整,适合跨域名跨路径使用。你还可以把Cookie Jar传到Requests中:
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 = 'http://httpbin.org/cookies' req = requests.get(url, cookies=jar) print(req.text) # '{"cookies": {"tasty_cookie": "yum"}}'
保存cookie方便下次访问,我们需要将CookieJar转为字典或者将字典转为CookieJar
#将CookieJar转为字典: cookies = requests.utils.dict_from_cookiejar(r.cookies) #将字典转为CookieJar: ookies = requests.utils.cookiejar_from_dict(cookie_dict, cookiejar=None, overwrite=True)
8.下载图片
有时候我们想下载我们爬取页面的img图片,你可以使用requests请求图片,获取response.content文本信息,实际上获取的是图片的二进制文本,然后保存即可:
import requests response = requests.get("https://ptorch.com/img/logo.png") img = response.content open('logo.jpg', 'wb').write(response.content)
如果要下载验证码,可以使用上面的会话请求加载这里的下载代码即可。