Python爬虫之requests基础用法详解

 更新时间:2023年10月23日 10:36:20   作者:ZhiHuaWei  
这篇文章主要介绍了Python爬虫之requests基础用法详解,虽然Python的标准库中urllib模块已经包含了平常我们使用的大多数功能,但是它的API使用起来让人感觉不太友好,而requests库使用更简洁方便,需要的朋友可以参考下

requests库介绍

虽然Python的标准库中urllib模块已经包含了平常我们使用的大多数功能,但是它的API使用起来让人感觉不太友好,而requests库宣传是“HTTP for Human”,说明使用更简洁方便。由于requests库不是标准库,所以我们首先需要安装这个requests库。

requests的安装和文档地址

利用 pip 命令可以非常方便您的安装:

    pip install requests

中文文档:https://2.python-requests.org//zh_CN/latest/index.html

发送get请求

发送GET请求,直接调用requests.get()就可以了,想要发送什么类型的请求,就调用什么方法。

代码示例:

    # 引入requests库
    import requests
    
    # 向指定的url发送请求,并返回
    url = 'https://www.baidu.com/'
    # 发送get请求
    req = requests.get(url=url)
    # 响应内容
    print('状态码:', req.status_code)
    print('请求地址:', req.url)
    print('当前编码:', req.encoding)
    # req.encoding = 'utf-8'  # 设置编码
    # 以encoding解析返回内容。字符串方式的响应体,会自动根据响应头部的字符编码进行解码
    print('内容1:', req.text)
    # 以字节形式(二进制)返回。字节方式的响应体,会自动为你解码 gzip 和deflate 压缩。
    print('内容2:', req.content)
    # print('内容2:', req.content.decode())
    # 以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回None
    print('headers:', req.headers)
    # 返回原始响应体,也就是 urllib 的 response 对象,使用 使用 r.raw.read()
    print('原始响应体:', req.raw)
    # print(req.raw.read())

发送post请求

发送POST请求也是非常简单,直接调用requests.post()就可以了;如果返回的是json数据,那么可以使用response.json()来将json字符串转换为字典或者列表。

代码示例:

    # 引入requests库
    import requests
    
    # 声明定义请求头
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36',
    }
    # 请求地址
    post_url = 'https://fanyi.baidu.com/sug'
    # 参数
    form_data = {
        'kw': 'honey'
    }
    # 进行post请求
    req = requests.post(url=post_url, data=form_data, headers=headers)
    # 响应内容
    print('状态码:', req.status_code)
    print('请求地址:', req.url)
    print('当前编码:', req.encoding)
    # req.encoding = 'utf-8'  # 设置编码
    # 以encoding解析返回内容。字符串方式的响应体,会自动根据响应头部的字符编码进行解码
    print('内容1:', req.text)
    # 以字节形式(二进制)返回。字节方式的响应体,会自动为你解码 gzip 和deflate 压缩。
    print('内容2:', req.content)
    # print('内容2:', req.content.decode())
    # 以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回None
    print('headers:', req.headers)
    # 返回原始响应体,也就是 urllib 的 response 对象,使用 使用 r.raw.read()
    print('原始响应体:', req.raw)
    # print(req.raw.read())
    # 返回json对象
    print('json:', req.json())

requests异常处理

我们在实际使用过程中,可能会遇到网络的各种变化会导致请求过程发生各种未知的错误导致程序中断,这就使我们的程序不能很好的去处理错误。所以为了使我们的程序在请求时遇到错误,可以捕获这种错误,就要用到try…except方法,以及了解requests可能发生的各种错误。

    import requests

    url = 'http://www.b.com'
    try:
        req = requests.get(url=url)
        print(req.text)
    except requests.exceptions.ConnectionError as e:
        print(e)
    except requests.exceptions.ChunkedEncodingError as e:
        print(e)
    except requests.exceptions.HTTPError as e:
        print(e)

response的一些属性

上面的代码例子中已经有说明,在此再列举一遍。

    # 响应内容
    print('状态码:', req.status_code)
    print('请求地址:', req.url)
    print('当前编码:', req.encoding)
    # req.encoding = 'utf-8'  # 设置编码
    # 以encoding解析返回内容。字符串方式的响应体,会自动根据响应头部的字符编码进行解码
    print('内容1:', req.text)
    # 以字节形式(二进制)返回。字节方式的响应体,会自动为你解码 gzip 和deflate 压缩。
    print('内容2:', req.content)
    # print('内容2:', req.content.decode())
    # 以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回None
    print('headers:', req.headers)
    # 返回原始响应体,也就是 urllib 的 response 对象,使用 使用 r.raw.read()
    print('原始响应体:', req.raw)
    # print(req.raw.read())
    # 获取返回的json数据
    print('json:', req.json())
  • response.content:这个是直接从网络上面抓取的数据,没有经过任何解码,所以是一个butes类型,其实在硬盘上和网络上传输的字符串都是bytes类型。
  • response.text:这个是string的数据类型,是requests库将response.content进行解码的字符串,解码需要指定一个编码方式,requests回根据自己的请求来判断解码方式,所以有时候可能会由于解码方式不同产生乱码,这时候就应该使用response.content.decode('utf-8')继续手动解码。

到此这篇关于Python爬虫之requests基础用法详解的文章就介绍到这了,更多相关Python的requests基础用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python实现基于Fasttext的商品评论数据分类的操作流程

    Python实现基于Fasttext的商品评论数据分类的操作流程

    这篇文章主要介绍了Python实现基于Fasttext的商品评论数据分类,今天使用的fasttext更像是一个集成的库,把向量化和分类一起做掉了,这个对于使用层面来讲就更方便了一些,需要的朋友可以参考下
    2022-06-06
  • Python树的序列化与反序列化的实现

    Python树的序列化与反序列化的实现

    在本文中,我们将深入讨论如何实现树的序列化与反序列化算法,提供Python代码实现,并详细说明算法的原理和步骤,感兴趣的可以了解一下
    2023-11-11
  • Python除法保留两位小数点的三种方法实现

    Python除法保留两位小数点的三种方法实现

    这篇文章主要给大家介绍了关于Python除法保留两位小数点的三种方法实现,在py应用中有许多拿结果中的多个整数进行运算,难免少不了除法(如单位换算等),但是整数进行运算后只会返回整数,一般结果基本需要精确到后两位,需要的朋友可以参考下
    2023-08-08
  • python实现web应用框架之增加响应对象

    python实现web应用框架之增加响应对象

    这篇文章主要介绍了python利用web应用框架如何增加响应对象的,文中有相应的代码示例,对大家的学习或工作有一定的参考价值,需要的同学可以参考下
    2023-05-05
  • Python 普通最小二乘法(OLS)进行多项式拟合的方法

    Python 普通最小二乘法(OLS)进行多项式拟合的方法

    今天小编就为大家分享一篇Python 普通最小二乘法(OLS)进行多项式拟合的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • Python使用Selenium、PhantomJS爬取动态渲染页面

    Python使用Selenium、PhantomJS爬取动态渲染页面

    本文主要介绍了Python使用Selenium、PhantomJS爬取动态渲染页面,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • python Dtale库交互式数据探索分析和可视化界面

    python Dtale库交互式数据探索分析和可视化界面

    这篇文章主要为大家介绍了python Dtale库交互式数据探索分析和可视化界面实现功能详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • Python urllib 入门使用详细教程

    Python urllib 入门使用详细教程

    urllib 库,它是 Python 内置的 HTTP 请求库,不需要额外安装即可使用,这篇文章主要介绍了Python urllib 入门使用,需要的朋友可以参考下
    2022-11-11
  • selenium+python环境配置教程详解

    selenium+python环境配置教程详解

    这篇文章主要介绍了selenium+python环境配置教程,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-05-05
  • 只用20行Python代码实现屏幕录制功能

    只用20行Python代码实现屏幕录制功能

    python小哥哥发现女朋友最近总是很忙的样子,晚上匆匆忙忙道过晚安就不说话了.可是,QQ头像却会偶尔亮起来.小哥哥非常担心,是不是账号被盗了呢然后,就想帮女朋友排查一下所以就用python写了一个录制脚本,悄悄装在女友电脑上,需要的朋友可以参考下
    2021-06-06

最新评论