news 2026/4/16 17:01:49

Python中的网络爬虫

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python中的网络爬虫

一、网络爬虫库

1、网络爬虫库

网络爬虫通俗来讲就是使用代码将HTML网页的内容下载到本地的过程。爬取网页主要是为了获取网的中的关键信息,例如网页中的数据、图片、视频等。Python语言中提供了多个具有爬虫功能的库,下面将具体介绍

urllib库:是Python自带的标准库,无须下载、安装即可直接使用。urllib库中包含大量的爬虫功能,但其代码编写略显复杂。

reguests库:是Python的第三方库,需要下载、安装之后才能使用。由于requests库是在urllib库的基的上建立的,它包含urllib库的功能,这使得requests库中的函数和方法的使用更加友好,因此requests库使用起来更方便。

scrapy库:是Python的第三方库,需要下载、安装之后才能使用。是一个适用于专业应用程序开发的网络爬虫库。scrapy库集合了爬虫的框架,通过框架可创建一个专业爬虫系统。

selenium库:是Python的第三方库,需要下载、安装后才能使用。selenium库可用于驱动计算机中的浏览器执行相关命令,而无须用户手动操作。常用于自动驱动浏览器实现办公自动化和Web应用程序测试。

2、robots.txt 规则

在正式学习网络爬虫之前,需要掌握爬取规则,不是网站中的所有信息都允许被爬取,也不是所有的网站都允许被爬取。在大部分网站的根目录中存在一个robots.txt文件,该文件用于声明此网站中禁止访问的url和可以访问的url。用户只需在网站域名后面加上/robots.txt即可读取此文件的内容。

介绍robots.txt文件的内容:

User - agent:表示访问网站的搜索引擎,User - agent的值为 * 表示所有类型的搜索引擎;如果User - agent后面加Wandoujia Spider,就表示Wandoujia Spider搜索引擎需要遵守的规则

Disallow:表示该搜索引擎不允许访问的url

Allow:表示该搜索引擎允许访问的url

Sitemap:网站地图,用于提供网站中所有可以被爬取的url,方便搜索引擎能够快速爬取到对应网页

#:代表注释,与python的概念相同

Crawl - delayCrawl - delay: 5是说爬虫每次访问时间间隔5秒,为了避免因用户频繁访问而导致服务器拥挤,使用户无法正常使用浏览器

二、requests库和网页源代码

1、request库的安装

在命令提示符或终端安装:

pip install requests

安装完成后可以用以下命令查看库的信息

pip show requests

2、网页源代码

打开网页后鼠标右击,在点击检查,或者快捷键F12就可以查看网页的源代码

三、获取网页资源

requests库具有获取网页内容和向网页中提交信息的功能

1、get()函数

在requests库中获取HTML网页内容的方法是使用get()函数,形式如下:

requests.get(url, params=None, headers=None,**kwargs)

参数url:表示获取的HTML网址

参数params:表示可选参数,以字典的形式发送信息,当需要向网页中提交查询信息时使用

参数**kwargs:表示请求采用的可选参数

返回值:返回一个由类Response创建的对象。类Response位于requests库的models.py文件中

用get()搜索信息

import requests r = requests.get('https://www.ptpress.com.cn/search?keyword=excel') print(r.text)

search表示搜索,keyword表示要搜索的关键词,?用于分隔search和keyword

用get()添加信息

get()函数中第二个参数params会以字典的形式在url后自动添加信息,需要提前将params定义为字典

import requests info ={'keyword':'excel' } r = requests.get('https://www.ptpress.com.cn/search',params=info) print(r.url) print(r.text)

代码解释:

第2行代码建立字典info,包含一个键值对

r = requests.get('https://www.ptpress.com.cn/search', params=info)
调用get()方法向邮电出版社搜索接口发送请求,参数params=info会自动将字典转为?keyword=excel拼接到 URL 后。变量r接收服务器返回的响应对象。

2、返回Response对象

通过get()函数获取HTML网页内容后,由于网页多样性,通常还需要对网页返回Reaponse对象进行设置

Response属性

Response包含的属性有status_code、headers、url、encoding、cookies等。

status_code(状态码):当获取一个HTML网页时,网页所在的服务器会返回一个状态码,表明本次获取网页的状态。例如访问人民邮电出版社官网,当使用get()函数发出请求时,人民邮电出版社官网的服务器接收到请求信息后,会先判断请求信息是否合理,如果请求合理则返回状态码200和网页信息;如果请求不合理则返回一个异常状态码。


常见的HTTP(Hypertext Transfer Protocol,超文本传送协议)状态码有200(请求成功)、301(网页内容被永久转移到其他url)、404(请求的网页不存在)、500(内部服务器错误)等,更多状态码可以使用搜索引擎查询。


因此在使用get()函数请求访问网页时,为了确保获取正确的网页信息,需要判断服务器返回的状态码是否为200。Response对象中的status_code为服务器返回的状态码。

示例代码:

import requests r = requests.get('https://www.ptpress.com.cn') print(r.status_code) if r.status_code == 200: print(r.text) else: print('本次访问失败')

代码解释:

第3行代码输出Response对象返回的状态码。
第4行代码用于判断状态码是否为200,如果为200,则输出获取的网页内容,否则表明访问存在异常。

• headers(响应头):服务器返回的附加信息,主要包括服务器传递的数据类型、使用的压缩方法、语言、服务器的信息、响应该请求的时间等。

• url:响应的最终url位置。

• encoding:访问r.text时使用的编码。

• cookies:服务器返回的文件。这是服务器为辨别用户身份,对用户操作进行会话跟踪而存储在用户本地终端上的数据

设置编码

当访问网页时,若获取的内容是乱码,是网页读取编码错误导致的,可通过设置requests.get(url)返回的Response对象的encoding='utf-8'来修改“Response对象.text”文本内容的编码方式。

Response对象还提供了apparent_encoding()方法自动识别网页编码,但该方法由机器识别,可能存在错误(大部分情况可用)。

若要设置自动识别编码,可使用以下形式:
Response对象.encoding=Response对象.apparent_encoding

示例代码:

import requests r = requests.get('此处填入"百度官网地址".com') r.encoding = r.apparent_encoding print(r.text)

第3行代码设置自动识别编码,执行后输出可识别文字;若仍乱码,需自行设置encoding编码方式。

返回网页内容

Response对象返回网页内容有两种方法:

• text():以字符串形式返回网页内容(前文已介绍)。

• content():以二进制形式返回网页内容,常用于保存网页中的媒体文件。

示例代码(下载人民邮电出版社官网中的图片):
01

import requests r = requests.get('https://cdn.ptpress.cn/uploading/Material/978-7-115-41359-8/72jpq/41359-8-72.jpg') f2 = open('b.jpg','wb') f2.write(r.content) f2.close()

代码说明:

• 第2行:用get()访问图片URL。

• 第3行:用open()创建b.jpg文件,以二进制写入模式(wb)打开。

• 第4行:将获取的URL内容以二进制形式写入文件。

• 执行后,对应文件夹会存储该图片

小项目:实现处理获取的网页信息

任务:在某个网站上上架了新书,现在需要用request方法获取所有新书的书名

示例代码:

import requests import re r = requests.get('https://www.ryjiaoyu.com/book') result = re.findall(r'title=(.+?)">(.+?)</a></h4>',r.text) for i in range(len(result)): print('第',i+1,'本书: ',result[i][1])

运行结果:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 8:58:45

LOG:如何在Linux系统安装微软雅黑字体

安装微软雅黑字体&#xff0c;操作系统&#xff1a;Ubuntu22.04准备字体文件&#xff0c;下载微软雅黑字体&#xff0c;字体格式ttf&#xff0c;文件名称&#xff1a;msyh.ttf msyhbd.ttf。打开系统字体文件夹&#xff1a;/usr/share/fonts/truetype&#xff0c;创建文件夹&…

作者头像 李华
网站建设 2026/4/15 17:09:56

8、Kali Linux 安装与配置全解析

Kali Linux 安装与配置全解析 1. Kali Linux 安装概述 Kali Linux 的安装过程涉及多个方面,包括安装要求、不同文件系统的安装方式、预配置安装以及在 ARM 设备上的安装等。 1.1 安装要求 Kali Linux 的安装要求因安装的类型而异,具体如下表所示: | 安装类型 | 内存要求…

作者头像 李华
网站建设 2026/4/16 10:45:55

EPLAN电气设计:格式刷技巧一键统一图纸格式

EPLAN电气设计&#xff1a;格式刷技巧一键统一图纸格式在EPLAN里有个格式刷功能&#xff0c;能一键复制粘贴格式效果。用法很简单&#xff1a;操作起来就这么几步:1、复制格式选中已设置好格式的元件&#xff08;如文本、符号、连接点等&#xff09;点击工具栏中的"格式刷…

作者头像 李华
网站建设 2026/4/16 3:57:30

天津网站建设好用的商企无限注重优质的用户体验

天津网站建设好用的商企无限在当今数字化时代&#xff0c;网站已成为企业展示形象、拓展业务的重要窗口。对于天津的企业而言&#xff0c;选择一家靠谱的网站建设公司至关重要&#xff0c;而商企无限在天津网站建设领域表现出色&#xff0c;值得企业关注。专业的技术团队商企无…

作者头像 李华
网站建设 2026/4/16 15:26:03

RPCS3多开实战:解锁PS3模拟器并行运行的完整指南

RPCS3多开实战&#xff1a;解锁PS3模拟器并行运行的完整指南 【免费下载链接】rpcs3 PS3 emulator/debugger 项目地址: https://gitcode.com/GitHub_Trending/rp/rpcs3 你想过同时畅玩多款PS3经典游戏吗&#xff1f;RPCS3模拟器多实例运行技术让这成为可能。本文将深入解…

作者头像 李华
网站建设 2026/4/16 9:07:42

蛋白质语言模型ESM-2深度解析:650M参数架构揭秘与实战指南

在蛋白质序列分析领域&#xff0c;facebook/esm2_t33_650M_UR50D作为ESM-2系列的重要模型&#xff0c;以650M参数规模实现了精度与效率的完美平衡。本文将深度解析该模型的架构设计哲学&#xff0c;并提供从能力测试到场景化部署的完整实战指南。 【免费下载链接】esm2_t33_650…

作者头像 李华