Python---爬虫请求库---requests

本文深入探讨了Python的Requests库,解析其相较于urllib的优势,包括简洁性、跨版本兼容性及自动解压功能。文章详细介绍了response对象的常用方法,如text与content属性的区别,以及如何处理编码问题。此外,还分享了模拟登录的三种方法和一些实用的小技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用request的优势

  1. requests的底层实现就是urllib(更加简单,方便。)

  2. requests在python2 和python3中通用,方法完全一样

  3. requests简单易用

  4. Requests能够自动帮助我们解压(gzip压缩的等)网页内容(urllib需要自动解压)response.status_code  (状态码)

response的常用方法

  1. response.text   r.encoding(观察对方服务器的响应,根据 响应头部的内容,猜测是用的什么编码)

  2. r.encoding = “utf-8” 指定编码方式

  3. r.content 返回的是没有进行任何修改的bytes类型的字符串  使用r.content.decode()转换成str类型的字符串。

  4. response.status_code  (状态码)

  5. response.request.headers (请求头)response headers 内有Set-cookie ,是服务器发送过来在客户端设置的cookie,也可以通过js设置cookie

  6. response.request.url

  7. response.headers  响应头

  8. response.text 和response.content的区别

    1. response.text

      1. 类型:str

      2. 解码类型: 根据HTTP 头部对响应的编码作出有根据的推测,推测的文本编码

      3. 如何修改编码方式:response.encoding=”gbk”

    2. response.content获取的是原始二进制数据

      1. 类型:bytes

      2. 解码类型: 没有指定

      3. 如何修改编码方式:response.content.deocde(“utf8”)

  9. response中编解码的解决

    1. response.content.decode("gbk")

    2. 推荐使用chardet包中detect()函数,获取编码方式,99%确定是GB231编码。但也可能使用的是GBK编码(GBK是GB2312的扩展,由于GBK是向下兼容GB2312,因此你检测到GB2312,则直接用GBK来编码/解码。

request发送请求(模拟登陆)

  1. 模拟登陆1

    1. session类,来实现客户端和服务端的会话保持

    2. 实例化一个session对象session = requests.session()

    3. 让session发送get或者post请求response = session.get(url,headers)

    4. 使用session登陆,服务器给浏览器配置cookie,使用带有cooki的session发起get请求

  2. 模拟登陆2

    1. cookies字符串放在headers中

  3. 模拟登陆3

    1. 使用带有cookies的session请求个人主页

    2. cookies = {i.split("=")[0]:i.split("=")[1] for i in cookie.split("; ")}

requests小技巧

  1. requests.utils.dict_from_cookiejar(response.cookies)把cookie对象转化为字典
  2. request.utils.cookiejar_from_dict({"BDORZ":"1233"})

  3. request.utils.unquote(url)解码url地址,将编码的汉字转换回来

  4. request.utils.quote(url)编码url地址

  5. response = requests.get("https://www.12306.cn/mormhweb/ ", verify=False(验证关闭))请求 SSL证书验证

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值