1. requests库
Posted Mrs.King_UP
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1. requests库相关的知识,希望对你有一定的参考价值。
-
requests库和python内置的urllib库:一般使用requests库,这是对urllib的再次封装
-
发起请求:有get和post两种方式,返回Response对象
- get和post区别:get用于指定资源的获取,post用于把实体提交到指定的资源,会导致服务器上状态的变化;get请求将请求参数放在url上,数据在网页链接中可见,post请求的内容不可见,安全性更高
- 使用:
r=requests.get(url)
data=‘key1’:’value1’,’key2’:’value2’
r=requests.post(url,data=data)
- Response的属性
- r.status_code:response对象的状态编码,为200时正常,4XX或5XX为异常,可通过r.raise_for_status()来抛出异常
- r.encoding:返回页面的编码格式,是根据页面中的header中的charset解析出来的,若header中没有这一字段,默认为ISO-8859-1。r.encoding=r.apparent_encoding来解决乱码问题
- r.apparent_encoding:从内容对页面的编码格式进行推断
- r.text:得到str类型的网页文本信息
- r.content:得到bytes类型的网页文本信息,需要通过r.content.decode()解码,相当于r.text
- 定制请求:
- 一般使用:r=requests.get(url)
- 定制请求:r=requests.get(url,headers=headers,cookies=cookies,allow_redirects=True,timeout=30)
- headers和cookies都是字典形式,反爬中会用到
- headers:服务器对于每一个请求的浏览器都会对其判定身份,是基于headers中的User-Agent值,每一个浏览器访问服务器时的User-Agent都不同,因此,爬虫需要伪装成浏览器,并且在爬取的过程中自动切换,从而防止网站的封杀。(User-Agent:用以识别客户端的操作系统及版本、浏览器及版本等信息,加上此信息可以伪装为浏览器,不加可能会被识别为爬虫)
- cookies:用户在页面中输入用户名和密码之后,浏览器将用户名和密码发送给服务器,服务器进行验证,验证通过之后将用户信息加密后封装成cookie放在请求头中返回给浏览器;浏览器收到服务器返回的数据后,将cookie保存起来,下次浏览器再次请求服务器时,会将cookie也放在请求头中传给服务器;服务器收到请求后从请求头拿到cookie并解析用户信息,说明用户已经登录。cookie是将用户的信息保存在客户端的。Cookie无论是服务器发给浏览器还是浏览器发给服务器,都是放在请求头中的。
- 如何获取页面的headers和cookies?
拿淘宝来说,- 先登录淘宝页面,然后登录淘宝账号
- 右键检查,Network,刷新页面(Ctrl+R),Name,copy中选择copy as cURL(bash)
- 进入https://curl.trillworks.com/,将刚刚copy的内容复制进去,选择python,该网站会自动解析出headers和cookie。
- allow_redirects:重定向,网络请求被重新定个方向转到其他位置,一般出现这种情况时是网站调整、网页地址改变等。
- timeout:在设定的时间内停止等待响应,只在连接中有效。
- 其他
requests.put()#覆盖掉原有的数据
payload=“key1”:“data1”,“key2”:“data2”,“key3”:“data3”
r=requests.put(‘http://httpbin.org/put’,data=payload) - 异常获取
#IP地址归属地自动查询
import requests
url = “http://www.ip138.com/iplookup.asp?ip=”
try:
r = requests.get(url + ‘202.204.80.112&action=2’)
r.raise_for_status()
r.encoding = r.apparent_encoding
print(r.text[-500:])
except:
print(“爬取失败”)
以上是关于1. requests库的主要内容,如果未能解决你的问题,请参考以下文章