Python爬虫教程

第一章: 初学乍练-Python快速入门

第二章: 初窥门径-从全局把握网络爬虫

第三章: 爬虫数据-网页与JSON

第四章: 爬虫核心-HTTP协议

第五章: 手到擒来-数据的抓包

第六章: 利刃出鞘-HTTP请求库

第七章: 尘埃落定-数据的解析

第八章: 逆向初探-JS逆向

第九章: 爬虫进阶-Selenium, 中间人拦截

第十章:斗转星移-常用的反爬策略及应对方法

首页 > Python爬虫教程 > 第二章: 初窥门径-从全局把握网络爬虫 > 2.1节: 网络爬虫核心原理

2.1节: 网络爬虫核心原理

薯条老师 2021-02-05 10:34:14 235441 2

编辑 收藏

2.1.1 爬虫与数据的纠葛

在广袤的互联网中,有这样一种"爬虫生物",穿梭于万维网中,将承载信息的网页吞食,然后交由搜索引擎进行转化,吸收,并最终"孵化"出结构化的数据,供人快速查找,展示。这种"生物",其名曰"网络蜘蛛"。现实中的蜘蛛形状可怖,以致于让大多数人忽略了其对人类有益的事实。网络蜘蛛虽以数据为食,但是数据的生产者-网站,需要借助爬虫的帮助,将网页提交给搜索引擎。

网站需要爬虫的帮助,爬虫也需要不断抓取新的数据,以完成其使命。但爬虫只是程序员写出来的程序,一种数据抓取的工具,在有心人的操作下,网络蜘蛛会变成"恶意爬虫",将目标网站的数据窃为己有,同时给网站带来过大的压力,影响网站的正常运转。

 

1612492565(1).jpg 

上图的蜘蛛网,与互联网的网状结构比较相似。蜘蛛网上的蜘蛛,就好比是互联网中的网络爬虫。蜘蛛顺着网线,从当前节点,爬行到下一个节点,不断前行,层层递进,最终将站点上的数据尽食于腹中。

2.1.2 网络爬虫的种类

网络爬虫按其实现方式的不同,主要分为以下两种类型:

爬虫种类

 

描述

通用网络爬虫

需要有一个初始URL,在抓取过程中,不断获取新的URL以进行数据抓取

聚焦网络爬虫

聚焦于特定的主题进行数据抓取

通用网络爬虫,顾名思义,以通用目的为主的网络爬虫。这类爬虫,需要有一个初始URL。先将初始URL对应的网页抓取下来,然后解析网页中的URL,将新URL加入到抓取队列当中,再进行下一轮的抓取。通用网络爬虫的抓取过程,详见下图:

1612492591(1).jpg 

 

而聚焦网络爬虫,顾名思义,系聚焦于特定的主题进行数据抓取。它需要在通用网络爬虫的基础上进行主题的定义和抓取过程中的主题筛选,以保证抓取的是特定主题的内容。

在通用网络爬虫和聚焦网络爬虫之外,还有增量式网络爬虫和深层网络爬虫。我们在学习网络爬虫的类型时,需着重理解每一种爬虫的抓取过程,然后尝试用代码进行模拟和实现,这样方可彻底的理解。

进一步理解爬虫的机制,需掌握爬虫的核心原理。

2.1.3 爬虫的核心原理

理解爬虫的核心原理,需要回答这两个问题:为什么爬虫可以抓取到数据?爬虫抓取到的是什么格式的数据?

第一个问题:为什么爬虫可以抓取到数据?

 

我们平时使用较多的上网工具是浏览器,浏览器与爬虫的数据抓取过程非常相似。打开浏览器,在地址栏中输入url,然后按下回车键,就可以在浏览器中看到url所对应的网页数据。

之所以能看到网页的内容,是因为浏览器将网页抓取到本地,然后对网页中的js脚本进行解析,对网页的文本数据进行样式渲染。

浏览器通过http协议与网页所在的服务器进行交互,服务器根据浏览器的http请求,将请求的网页再返回给浏览器。爬虫的数据抓取,也是一样的原理,通过http协议与http服务器进行交互。对http服务器来说,不论浏览器还是爬虫,都是http客户端。

1612492610(1).jpg 

理解爬虫的核心原理,需要先掌握http协议。在下一节内容中,会从全局的角度,对http协议进行讲解。Python提供了urllib以及requests模块,通过这些模块,可以在Python程序中发起http请求。关于requests模块,会在1.3节中作初步讲解。


第二个问题:爬虫抓取到的是什么格式的数据?

 

爬虫向网页所在的服务器发起请求以后,服务器响应的通常是HTML格式的文本数据。HTML是一种对网页进行描述的标记语言,使用尖括号<>加标签名的方式将内容进行标记,每一个标签名表示一个特定的语义。

http服务器响应的不一定是HTML。在很多情况下,会返回json格式的文本数据。我们在编写爬虫程序时,需具体问题具体分析。

HTML标签通常是成对出现的,分为起始标签和结束标签,结束标签中会带一个/符号。比如标记网页标题的<h1></h1>, 标记网页段落的<p>和</p>,标记网页链接的<a>和</a>。HTML格式简单举例:

<html>
<h1>Python网络爬虫核心原理及实战</h1>
<p>
在广袤的互联网中,有这样一种"爬虫生物",穿梭于万维网中,将承载信息的网页吞食,然后交由搜索引擎进行转化,吸收,
并最终"孵化"出结构化的数据,供人快速查找,展示。这种"生物",其名曰"网络蜘蛛"。
</p>
<a href=”http://chipscoco.com/?id=666”>下一页</a>
</html>

爬虫在抓取到HTML文本以后,需要对HTML格式的数据进行解析,以获取所需的内容。比如解析出上文html实例中的h1标签的标题:

Python网络爬虫核心原理及实战

解析出p标签中的段落:

在广袤的互联网中,有这样一种"爬虫生物",穿梭于万维网中,将承载信息的网页吞食,然后交由搜索引擎进行转化,吸收,并最终"孵化"出结构化的数据,供人快速查找,展示。这种"生物",其名曰"网络蜘蛛"

解析出a标签中的url:

http://chipscoco.com/?id=666

Beautifule Soup是Python社区中的一款功能强大的解析库,利用Beautifule Soup可以轻松地解析出HTML中的数据。将数据解析出来以后,还需要对数据进行存储,预处理,特征提取,数据挖掘,可视化等操作。感兴趣的同学可以进一步学习大数据分析、挖掘等相关知识。

2.1.4 知识要点

(1) 爬虫是程序员写出来的程序,一种数据抓取的工具

(2) 网络爬虫按其实现方式的不同,主要分为通用网络爬虫,聚焦网络爬虫

(3) 爬虫的数据抓取,主要是通过http协议与http服务器进行交互。对http服务器来说,不论浏览器还是爬虫,都是http客户端。

(4) 爬虫向网页所在的服务器发起请求以后,服务器响应的是HTML格式的文本数据。

2.1.5 最具实力的小班培训

薯条老师在广州有开设线下培训班,小班授课模式,一班最多6个人。也可一对一授课,全程帮助你学好计算机,实现高薪就业。不在广州的同学可提供住宿,也可以报名线上小班,用腾讯会议上直播课。

(1) Python后端工程师高薪就业班,月薪11K-18K,免费领取课程大纲
(2) Python中高级爬虫逆向工程师就业班,月薪15K-25K,包拿Offer
(3) Python数据分析+商业分析+数据科学就业班,企业级项目实战,月薪10K-20K
(4) Python量化交易就业班,A股+期货+数字货币量化,月薪10K-40K
(5) Python机器学习+深度学习算法工程师,月薪20-50K

跟薯条老师学习的学生有拿到花生日记,林氏家居,南方电网,京东, 阿里等公司的offer, 学生的最低薪资有6K,最高薪资有18K, 平均就业薪资有11000。

扫码咨询薯条老师:

扫码领学习资料.jpg


已有2位薯条发表了看法:

欢迎 发表评论: