网络爬虫基础

一、网络爬虫的介绍

1.网络爬虫库

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

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

selenium库:selenium库可用于驱动计算机中的浏览器执行相关命令,而无需用户手动操作。常用于自动驱动浏览器实现办公自动化和Web应用程序测试

2.robots.txt规则

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

二、requests库和网页源代码

1.requests库的安装

pip install requests

可以使用以下命令查看库的信息

pip show requests

2.网页源代码

用户使用浏览器访问网页时,往往会忽视网页的源代码,而想要获取网页中的信息需要从网页的源代码出发。

三、获取网页资源

1.get()函数

在requests库中获取HTML网页内容的方法是使用get()函数。

get(url,params=None,**kwargs)

参数url:表示需要获取的HTML网址(也称为url)。

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

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

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

2.get()搜素信息

从搜索结果网页中可以看到当前页面的网址为https://www.ptpress.com.cn/search? keyword=excel,其中https://www.ptpress.com.cn/为官网主页,search表示搜索,keyword表示搜索的关键词((这里值为excel,表示需要搜索的关键词为"excel"),"?"用于分隔search和keyword。

3.get()添加信息

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

四、返回Response对象

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

1.Response的属性

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

常见的HTTP(Hypertext Transfer Protocol,超文本传送协议)状态码有200(请求成功)、301(网页内

容被永久转移到其他url)、404(请求的网页不存在)、500(内部服务器错误)等,更多状态码可以使用搜索引擎 查询。

headers(响应头) :服务器返回的附加信息,主要包括服务器传递的数据类型、使用的压缩方法、语言、服务器的信息、响应该请求的时间等。
url :响应的最终url位置。
encoding :访问r.text时使用的编码。
cookies:服务器返回的文件。这是服务器为辨别用户身份,对用户操作进行会话跟踪而存储在用户本地终端上的数据。

2.返回网页内容

Response对象中返回网页内容有两种方法,分别是text()方法和content())方法,其中text()方法在前面的内容中有介绍,它是以字符串的形式返回网页内容。而content(方法是以二进制的形式返回网页内容,常用于直接保存网页中的媒体文件。

相关推荐
B站计算机毕业设计之家1 小时前
大数据项目:基于python电商平台用户行为数据分析可视化系统 电商订单数据分析 Django框架 Echarts可视化 大数据技术(建议收藏)
大数据·python·机器学习·数据分析·django·电商·用户分析
weixin_421585011 小时前
静态图(Static Graph) vs 动态执行(Eager Execution)
python
杰瑞不懂代码1 小时前
【公式推导】AMP算法比BP算法强在哪(二)
python·算法·机器学习·概率论
无垠的广袤1 小时前
【工业树莓派 CM0 NANO 单板计算机】小智语音聊天
人工智能·python·嵌入式硬件·语言模型·树莓派·智能体·小智
BlackPercy2 小时前
[Matplotlib] 动态视频生成
python·matplotlib
B站计算机毕业设计之家2 小时前
大数据:基于python唯品会商品数据可视化分析系统 Flask框架 requests爬虫 Echarts可视化 数据清洗 大数据技术(源码+文档)✅
大数据·爬虫·python·信息可视化·spark·flask·唯品会
27669582922 小时前
闪购商家端 mtgsig
java·python·c#·node·c·mtgsig·mtgsig1.2
AndrewHZ2 小时前
【Python与生活】Python文本分析:解码朱自清散文的语言密码
python·beautifulsoup·jieba·语言学·文本分析·文学分析·朱自清
Keep_Trying_Go2 小时前
基于Transformer的目标统计方法(CounTR: Transformer-based Generalised Visual Counting)
人工智能·pytorch·python·深度学习·transformer·多模态·目标统计