Python爬虫-基础知识

什么是爬虫

平时我们上网,是通过点击浏览器中的各种链接(或在浏览器中输入一个URL地址),打开对应的网页,然后用眼睛从网页中找到我们感兴趣的内容,最后把内容存储在我们大脑中的一系列动作。
爬虫就是把上述过程通过代码进行自动化处理的程序

爬虫的用途

相信看到这篇文章的人直接或间接的使用过爬虫。

  • 搜索引擎
    搜索引擎 (百度、Google)就是爬虫的产物。它们把网上的各种网页信息进行爬取后,按照一定的格式把网页信息进行存储,当用户通过搜索引擎进行查询时,通过算法把相关内容呈献在搜索结果中,然后用户通过点击链接就能跳转到对应网站。
  • 商品比价
    同一商品在不同平台的价格爬取,然后把结果呈现给用户。
  • 信息收集
    把感兴趣的文章等信息从网上爬取后存储在本地,即使在断网的情况下也能随时进行阅读。
  • 其它
    爬虫的功能还有很多,比较海量数据的爬取及分析等。每个人都有不同的需求,总之只要是能人工从网络上获取的信息,基本上都可以通过爬虫来实现自动化。

怎样实现爬虫

本篇不涉及具体代码,只从原理上讲怎样实现爬虫,为后面用代码实现爬虫功能打下理论基础。

爬虫流程

前文提到爬虫是上网获取信息的自动化程序,通过浏览器访问网页的大致流程如下:

网络
网络
浏览器发送请求
服务器处理及响应
浏览器接收服务器数据
浏览器呈现数据内容
页面操作

其中服务器处理及响应我们的代码控制不了,所以不用考虑;浏览器怎样呈现数据我们不关心,所以也不考虑。
所以对于爬虫要关心的流程如下:

模拟发送请求
接收服务器数据
解析内容
保存数据
模拟页面操作

接下来分节来说明怎么自动化实现这个过程:

模拟发送请求

请求包含哪些内容

在我们通过浏览器上网过程中,是浏览器请求发送给服务器
例:在浏览器地址栏中输入:【https://www.baidu.com/s?wd=python】后回车,浏览器就向百度服务器发起了请求(Request)。这个请求中包含了以下内容,如图:
在这里插入图片描述
其中**请求头(Request Headers)**格式是基本固定的:

  1. 第一行包含了以下信息:
    1.1 方法:GET 或 POST
    1.2 资源路径:相对于主机的路径(例中为【/s?wd=python】)
    1.3 协议/协议版本:例子使用的是HTTP协议,版本为1.1
  2. 第二行包含的是域名(例中为【www.baidu.com】)
  3. 其它行信息:
    3.1 User-Agent:告诉服务器当前是通过什么工具连接到服务器的
    3.2 Cookie:保存了服务器与浏览器交互的一些常用信息
    3.3 其它头信息以后遇到时再详细说明
  4. 如果是POST方法,那么请求还包括一个Body,包含用户数据(如:创建用户等所填写的表单数据)

爬虫要怎样发请求

简单的爬虫在发送一个请求时,可能没有完全包含上述请求头(Request Headers)中提到的内容。在服务器在接收到请求后,会对请求进行分析,如果发现不是从正规渠道来的请求(如爬虫),则会返回错误页面。
所以爬虫要做的是怎样模拟出和浏览器发出一样的请求内容,让服务器分辨不出请求的来源是爬虫程序。

接收服务器数据

服务器向浏览器返回HTTP响应,响应包括:响应头(Response Headers)响应内容(Response Body)

  1. 响应头(Response Headers)
    1.1 响应代码:200表示成功,3xx表示重定向,4xx表示客户端发送的请求有错误,5xx表示服务器端处理时发生了错误
    1.2 响应类型:由Content-Type指定,例如:Content-Type: text/html;charset=utf-8表示响应类型是HTML文本,并且编码是UTF-8,Content-Type: image/jpeg表示响应类型是JPEG格式的图片
  2. 响应内容(Response Body)
    页面所对应的HTML代码

解析内容

待解析的内容,实际上就是上述从服务器接收到的HTML代码。了解HTML基础知识是内容解析的前提。有一个基本认知即可,不用太深入。
在Chrome浏览器中,可以通过F12键来查看一个页面的HTML内容,如下图:
在这里插入图片描述
可以看到在HTML中,是通过各种<标签>内容</标签>的形式来封装各种内容的。所以解析内容,就是对各种标签进行提取和解析

保存数据

从服务器返回内容中提取出有效数据后,要对其进行持久化保存,这样方便以后使用。
通常数据保存方式有以下两种:

  1. 文件
    如:txt文本文件,Excel文件等
  2. 数据库
    如:Mysql等关系型数据库,Mongdb、Redis等Nosql数据库等

模拟页面操作

就像用户操作一样,通过页面上的链接不断跳转到新的页面进行浏览。爬虫会分析出网页中有哪个可跳转的链接(URL),然后根据需要向该URL发出新的请求,使爬虫可以不断爬取到新的内容(已经爬取过的URL不会再爬取,这个操作叫做去重)。
如果要爬取的只有1个页面,该步骤就不需要了。

结语

了解了爬虫的基本知识,就可以用代码去实现了。在后续的文章中,我会用Python去实现相关功能,敬请期待。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值