• 项目二:学会使用python爬虫请求库(小白入门级)


    上一章已经了解python爬虫的基本知识,这一次让我们一起来学会如何使用python请求库爬取目标网站的信息。当然这次爬虫之旅相信我能给你带来不一样的体验。

    目录

    一、安装requests 库

    简介

    安装

    步骤

    1.requests的基本使用3步骤

    2.查看所使用编码

    3.设置编码

    二、认识requests请求方法

    GET请求

    简介

    基本语法

    POST请求

    简介

    基本语法


    一、安装requests 库

    简介

    requests库是一个Python HTTP客户端库,使得发送HTTP请求变得简单。

    requests库提供了一种简洁直观的API,用于发送各种HTTP请求,如GET、POST、PUT、DELETE等,并处理返回的响应。

    使用requests库,开发者可以轻松地添加头部信息、发送表单数据、上传文件、处理Cookies、使用代理等。它还支持SSL证书验证、连接超时设置、会话对象复用等高级功能。

    requests库的设计哲学是“HTTP for Humans”(人类的HTTP),意味着它的API设计尽量符合人类的直觉,让HTTP请求变得像喝水一样自然。

    安装

    安装命令:pip install requests

    注意你需要在安装python虚拟环境下执行,没有python虚拟环境安装命令会报错,当然你也可以使用其他软件来执行,比如pycham、vscode等都可以(前提是你要配置好python环境才能正常运行)

    步骤
    1.requests的基本使用3步骤
    • 导入模块
    • 发送get请求, 获取响应:
    • 从响应中获取数据:
    1. #导入请求库
    2. import requests
    3. #设置请求网址
    4. response = requests.get('https://www.baidu.com/')
    5. #获取响应数据
    6. print(response.text)

    response 常见属性

    • response.text :  响应体 str类型
    • response.ecoding : 二进制转换字符使用的编码
    • respones.content:  响应体 bytes类型

    输出结果:

    vscode编辑器输出结果

    但是作者发现输出的结果包含了一些特殊的字符,ç¾åº¦ä¸ä¸ï¼äå°è´´å»å½这些字符实际上是UTF-8编码的中文字符,由于在命令提示符中没有正确显示,所以看起来像是乱码。

    2.查看所使用编码

    如果要想知道自已所使用的是什么编码,直接添加如下

    1. # 导入请求库
    2. import requests
    3. # 设置请求网址
    4. response = requests.get("https://www.baidu.com/")
    5. # 输出信息
    6. print(response.text)
    7. # 获取编码
    8. print(response.encoding)

    输出结果如下:

    就可以看到圈红色的就是所使用的编码ISO-8859-1

    小提示:

    ISO-8859-1,也称为Latin-1,是一种单字节字符集编码,它是为了表示西欧语言中的大部分字符而设计的。这种编码标准是国际标准化组织(ISO)1987年制定的,它是ISO 8859系列字符集编码中的第一个成员。

    ISO-8859-1编码可以表示256个不同的字符,包括英文字母(大写和小写)、数字、标点符号以及一些特殊符号。此外,它还包括西欧语言中的特殊字符,如法语的ç、é、è、ê、ë,德语的ä、ö、ü,以及西班牙语的ñ等。

    在计算机和网络技术中,ISO-8859-1曾经被广泛用作默认的字符编码,特别是在早期的互联网和电子邮件系统中。然而,随着多语言互联网内容的增长,这种编码逐渐被更通用的Unicode编码(如UTF-8)所取代,因为Unicode能够表示世界上大多数语言的字符,而ISO-8859-1仅限于西欧语言。

    HTML文档中,可以通过标签来指定使用ISO-8859-1字符集。在HTTP头部信息中,也可以通过Content-Type字段来指定字符编码,例如:Content-Type: text/html; charset=ISO-8859-1

    3.设置编码

    要想把我们的所获取的乱码变为中文字符,只需要设置编码为UTF-8即可,代码如下

    1. # 导入请求库
    2. import requests
    3. # 设置请求网址
    4. response = requests.get('https://www.baidu.com/')
    5. # 设置编码
    6. response.encoding = 'utf8'
    7. # 输出信息
    8. print(response.text)

    输出结果:

    上图结果可知乱码变为中文,是不很简单啊,哈哈。

    除了设置编码,还有其他使用技巧,比如代码如下

    1. # 打印响应的二进制数据
    2. print(response.content)
    3. # 把二进制数据转换字符串
    4. print(response.content.decode())

    这两个代码可以单独使用或者组合使用,全看个人使用意愿,但最终目的是把不认识的字转换为我们能认识的字就可以了。

    二、认识requests请求方法

    这次我们来认识以下requests请求库的主要七个方法,如下:

    requsts.requst() - > 构造一个请求,最基本的方法,是下面方法的支撑
    requsts.get() - >获取网页,对应HTTP中的GET方法
    requsts.post() - > 向网页提交信息,对应HTTP中的POST方法
    requsts.head() - > 获取html网页的头信息,对应HTTP中的HEAD方法
    requsts.put() - > 向html提交put方法,对应HTTP中的PUT方法
    requsts.patch() - > 向html网页提交局部请求修改的的请求,对应HTTP中的PATCH方法
    requsts.delete() - > 向html提交删除请求,对应HTTP中的DELETE方法

    这次我们来简单的学会如何使用get方法和post方法

    GET请求
    简介
    • 用途:GET方法主要用于从服务器请求数据。可用于读取操作,并且结果会被显示给用户,如浏览网页。
    • 参数传递:GET方法的参数通过URL传递,通常以键值对的形式附加在URL之后。例如:http://example.com/index.php?name=value&anothername=value2
    • 安全性:由于GET请求的参数在URL中可见,因此不适合传输敏感信息,如密码或个人信息。
    • 缓存:GET请求的结果可以被浏览器缓存,也可以被书签保存。
    • 数据量限制:GET方法由于参数在URL中传递,因此对传输的数据量有限制(URL长度限制)。
    基本语法
    1. #导入请求库
    2. import requests
    3. #发送GET请求
    4. r = requests.get('http://httpbin.org/get')
    5. #打印响应内容
    6. print(r.text)

    提示

    r : 是一个Response对象,一个包含服务器资源的对象
    get(url) : 是一个Request对象,构造一个向服务器请求资源的Request。

    上述代码是先导入请求库,然后构建简单的get请求方法,设置请求目标网址,最后输出响应信息的一个简单流程。

    输出结果

    可以看到我们成功发送get请求,返回结果包含有请求头,URL,IP等信息。

    下面我们来解释代码各行意思,相信你会了解代码的意图

    1. {
    2. "args": {}, #空值,表示在GET请求中没有包含任何查询字符串参数。
    3. #请求头headers包含的列出内容
    4. "headers": {
    5. "Accept": "*/*", #指示客户端可以处理的MIME类型
    6. "Accept-Encoding": "gzip, deflate", #指示客户端可以接受的内容编码格式
    7. "Host": "httpbin.org", #指示服务器正在访问的主机名
    8. "User-Agent": "python-requests/2.31.0", #包含了发出请求的用户代理的信息
    9. "X-Amzn-Trace-Id": "Root=1-661cb1d9-5734386062c81b176d2d6f2b" #用于AWS X-Ray跟踪的请求ID
    10. },
    11. "origin": "112.224.144.133", #表示发出请求的客户端的IP地址
    12. "url": "http://httpbin.org/get" #表示请求的URL
    13. }

    根据上述简单的案例我想我们能够写出一个简单get请求方法,并且能读懂代码的意思,接下来我们在深入一下怎么使用带参数的get请求传递参数

    带参数的GET请求的格式

    http://example.com/resource?param1=value1¶m2=value2¶m3=value3
    • http://example.com/resource 是资源的URL。
    • param1=value1&param2=value2&param3=value3 是查询字符串,包含了三个参数。
    • param1param2param3 是参数的名称(键)。
    • value1value2value3 是与参数名称相对应的值。

    对于GET的请求如果我们想要添加多余的信息,一般需要在URL后面拼接,用一个【  ?】分割,参数传递过来后再用【 & 】的符号分割即可。例如我想要添加两个参数,其中name是China,age是5000,然后来构造这个请求连接,那这样的话就可以写为

    r = requests.get('http://httpbin.org/get?name=China&age=5000')
    

    0k,这行代码我们构造完毕,接下来我们再使用params这个用来传递参数,方便我们添加代码,一目了然。

    提醒:构造好的代码理论上可以直接执行,但是一般情况下,此信息数据会用字典来存储。

    代码如下:

    1. import requests
    2. # 设置参数
    3. data = {
    4. 'name':'China',
    5. 'age':5000
    6. }
    7. # url拼接
    8. r = requests.get('http://httpbin.org/get',params=data)
    9. print(r.text)

    输出结果:

    好了上述代码我们已经学会如何使用GET请求,也学会了如何构造参数请求的方式和传递参数。

    POST请求
    简介
    • 用途:POST方法主要用于向服务器提交数据,以创建或更新资源。可用于产生副作用的操作,如表单提交。
    • 参数传递:POST方法的参数在请求体中传递,不会显示在URL中。这使得POST方法可以传输更大量的数据。
    • 安全性:POST方法相对GET方法来说更安全,因为参数不会在URL中暴露。
    • 缓存:POST请求的结果通常不会被浏览器缓存,也不能被书签保存。
    • 数据量限制:POST方法没有数据量限制,理论上可以传输更大量的数据,但实际上可能受到服务器配置或HTTP库的限制。
    基本语法
    1. # 导入请求库
    2. import requests
    3. # 发送请求
    4. res = requests.post('http://www.httpbin.org/post',data={'username':'China','password':5000})
    5. # text 接收返回内容
    6. print(res.text)

    注意哈,post方法用于提交数据,跟get方法不同

    输出结果

    提示:res作为变量名代表“response”的缩写,这是一个广泛接受的做法,用于表示HTTP请求的响应对象。当然,您也可以使用其他变量名,如responser

    POST请求的语法格式通常遵循以下结构:

    1. POST /path/to/resource HTTP/1.1 #post请求方式以及请求路径和协议版本
    2. Host: www.example.com #指定IP地址
    3. Content-Type: application/x-www-form-urlencoded #请求体的媒体类型
    4. Content-Length: [length] #请求体的长度
    5. [key1=value1&key2=value2] #请求体的内容

    这个post请求参数的语法格式我们一般不需要太重视(按实际需要),因为这是基于HTTP协议的原始请求格式,无需手动构造请求函数,高级的HTTP客户端库(如Python的requests库)会帮助我们处理这些细节。

    好了,今日分享到此一游,通过这次学习我们可以学会如何通过安装和使用requests请求库以及能够编写基本的请求函数代码,同时也能够认识post和get两个不同的请求方法

    点个关注不迷路,期待你的肯定🎁❤️💖

  • 相关阅读:
    langchain 加载各种格式文件读取方法
    GOODIX TOUCH驱动移植
    AutoDL平台transformers环境搭建
    【Leetcode】1776. Car Fleet II
    . NET Core Razor动态菜单实现
    【Java】中的String、StringBuffer和StringBuilder的区别
    【数据结构】---排序的各种常见算法-入门写法
    Windows通过ssh免密登录Ubuntu (3)
    vue2升级vue3:vue2 vue-i18n 升级到vue3搭配VueI18n v9
    肖sir__linux讲解(2.1)
  • 原文地址:https://blog.csdn.net/2201_75876277/article/details/137757456