1. requests库

  1. requests库和python内置的urllib库:一般使用requests库,这是对urllib的再次封装

  2. 发起请求:有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)
  1. 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
  1. 定制请求:
  • 一般使用: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?
    拿淘宝来说,
    1. 先登录淘宝页面,然后登录淘宝账号
    2. 右键检查,Network,刷新页面(Ctrl+R),Name,copy中选择copy as cURL(bash)
    3. 进入https://curl.trillworks.com/,将刚刚copy的内容复制进去,选择python,该网站会自动解析出headers和cookie。
  • allow_redirects:重定向,网络请求被重新定个方向转到其他位置,一般出现这种情况时是网站调整、网页地址改变等。
  • timeout:在设定的时间内停止等待响应,只在连接中有效。
  1. 其他
    requests.put()#覆盖掉原有的数据
    payload={“key1”:“data1”,“key2”:“data2”,“key3”:“data3”}
    r=requests.put(‘http://httpbin.org/put’,data=payload)
  2. 异常获取
    #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(“爬取失败”)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mrs.King_UP

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值