《精通Python网络爬虫:核心技术、框架与项目实战》——第二篇 Part 2核心技术篇 第3章 网络爬虫实现原理与实现技术 3.1 网络爬虫实现原理详解-阿里云开发者社区

开发者社区> 华章计算机> 正文

《精通Python网络爬虫:核心技术、框架与项目实战》——第二篇 Part 2核心技术篇 第3章 网络爬虫实现原理与实现技术 3.1 网络爬虫实现原理详解

简介:
+关注继续查看

本节书摘来自华章出版社《精通Python网络爬虫:核心技术、框架与项目实战》一书中的第3章,第3.1节,作者 韦 玮,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

第二篇 Part 2

核心技术篇

第3章 网络爬虫实现原理与实现技术

第4章 Urllib库与URLError异常处理

第5章 正则表达式与Cookie的使用

第6章 手写Python爬虫

第7章 学会使用Fiddler

第8章 爬虫的浏览器伪装技术

第9章 爬虫的定向爬取技术

通过前面章节的学习,我们已经基本认识了网络爬虫,那么网络爬虫应该怎么实现?核心技术又有哪些呢?在本篇中,我们首先会介绍网络爬虫的相关实现原理与实现技术;随后,讲解Urllib库的相关实战内容;紧接着,带领大家一起开发几种典型的网络爬虫,让大家在实战项目中由浅入深地掌握Python网络爬虫的开发;在学会了一些经典的网络爬虫开发之后,我们将一起研究学习Fiddler抓包分析技术、浏览器伪装技术、爬虫定向抓取技术等知识,让大家更加深入地进入到网络爬虫技术的世界中来。

第3章

网络爬虫实现原理与实现技术

我们已经初步认识了网络爬虫,并了解了网络爬虫的应用领域。在这一章中,我们将学习网络爬虫的实现原理及其实现技术,并使用metaseeker为大家做一个简单的爬虫案例。

3.1 网络爬虫实现原理详解

不同类型的网络爬虫,其实现原理也是不同的,但这些实现原理中,会存在很多共性。在此,我们将以两种典型的网络爬虫为例(即通用网络爬虫和聚焦网络爬虫),分别为大家讲解网络爬虫的实现原理。

1.通用网络爬虫

首先我们来看通用网络爬虫的实现原理。通用网络爬虫的实现原理及过程可以简要概括如下(见图3-1)。

1)获取初始的URL。初始的URL地址可以由用户人为地指定,也可以由用户指定的某个或某几个初始爬取网页决定。

2)根据初始的URL爬取页面并获得新的URL。获得初始的URL地址之后,首先需要爬取对应URL地址中的网页,爬取了对应的URL地址中的网页后,将网页存储到原始数据库中,并且在爬取网页的同时,发现新的URL地址,同时将已爬取的URL地址存放到一个URL列表中,用于去重及判断爬取的进程。

3)将新的URL放到URL队列中。在第2步中,获取了下一个新的URL地址之后,会将新的URL地址放到URL队列中。

4)从URL队列中读取新的URL,并依据新的URL爬取网页,同时从新网页中获取新URL,并重复上述的爬取过程。

5)满足爬虫系统设置的停止条件时,停止爬取。在编写爬虫的时候,一般会设置相应的停止条件。如果没有设置停止条件,爬虫则会一直爬取下去,一直到无法获取新的URL地址为止,若设置了停止条件,爬虫则会在停止条件满足时停止爬取。


3bac7258fa4ff513d509317a0d40f2f3c5fc124f

以上就是通用网络爬虫的实现过程与基本原理,接下来,我们为大家分析聚焦网络爬虫的基本原理及其实现过程。

2.聚焦网络爬虫

聚焦网络爬虫,由于其需要有目的地进行爬取,所以对于通用网络爬虫来说,必须要增加目标的定义和过滤机制,具体来说,此时,其执行原理和过程需要比通用网络爬虫多出三步,即目标的定义、无关链接的过滤、下一步要爬取的URL地址的选取等,如图3-2所示。


d2f3b567ec029f49f8f28dc5f233462116c3426c

1)对爬取目标的定义和描述。在聚焦网络爬虫中,我们首先要依据爬取需求定义好该聚焦网络爬虫爬取的目标,以及进行相关的描述。

2)获取初始的URL。

3)根据初始的URL爬取页面,并获得新的URL。

4)从新的URL中过滤掉与爬取目标无关的链接。因为聚焦网络爬虫对网页的爬取是有目的性的,所以与目标无关的网页将会被过滤掉。同时,也需要将已爬取的URL地址存放到一个URL列表中,用于去重和判断爬取的进程。

5)将过滤后的链接放到URL队列中。

6)从URL队列中,根据搜索算法,确定URL的优先级,并确定下一步要爬取的URL地址。在通用网络爬虫中,下一步爬取哪些URL地址,是不太重要的,但是在聚焦网络爬虫中,由于其具有目的性,故而下一步爬取哪些URL地址相对来说是比较重要的。对于聚焦网络爬虫来说,不同的爬取顺序,可能导致爬虫的执行效率不同,所以,我们需要依据搜索策略来确定下一步需要爬取哪些URL地址。

7)从下一步要爬取的URL地址中,读取新的URL,然后依据新的URL地址爬取网页,并重复上述爬取过程。

8)满足系统中设置的停止条件时,或无法获取新的URL地址时,停止爬行。

现在我们初步掌握了网络爬虫的实现原理以及相应的工作流程,下面来了解网络爬虫的爬行策略。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
《数据分析实战 基于EXCEL和SPSS系列工具的实践》一2.3 在分析需求和模型之间搭起桥梁
我们在现实工作中面临的都是实际的需求,这些需求往往乍一看跟数据分析并没有多少关系,例如: 成本上升了,对价格如何影响? 如何降低物流成本?
1169 0
艾伟也谈项目管理,ERP项目实施要未雨绸缪不要亡羊补牢
  在ERP项目中,要做到在项目实施的未雨绸缪,不会出现亡羊补牢的情况就需要项目管理和实施人员在项目推进过程中队下面的阶段进行预测,把握好发展的趋势,掌握项目的主动权。下面就提出一些建议,供大家讨论。希望对大家有用。
758 0
阿里文娱测试实战:机器学习+基于热度链路推荐的引流,让对比测试更精准
引流对比测试是目前阿里内部常用的一种回归测试手段,它基于线上真实流量做采集、回放、对比,通过对比结果评估代码变更是否影响了线上链路和功能。通过这种方案,极大地降低了手工构造测试数据的成本:
745 0
python3爬虫(二)实战- 爬糗事百科
2017-3-09 代码如下. 必须加上head否则无法抓取. # -*- coding:utf-8 -*- import urllib.
906 0
《Kinect应用开发实战:用最自然的方式与机器对话》一3.2 基于“管道”的系统架构
本节书摘来自华章出版社《Kinect应用开发实战:用最自然的方式与机器对话》一书中的第3章,第3.2节,作者 余涛,更多章节内容可以访问云栖社区“华章计算机”公众号查看
1833 0
【双11背后的技术】Weex 双11会场大规模应用的秒开实战和稳定性保障
作者:鬼道  前言 Native 开发的诸多亮点中,流畅体验和系统调用是最多被提及的。流畅体验体现在页面滚动/动画的流畅性,背后是更好的内存管理和更接近原生的性能;同时又是 Web 的痛点:资源首次下载、长页面内存溢出和滚动性能、动画性能、传统 web 性能(如JS执行效率)。
4345 0
编程实战——电影管理器之利用MediaInfo获取高清视频文件的相关信息
随着高速(20M)宽带、HTPC、大容量硬盘(3T)的普及,下载高清片并利用大屏幕观看也成为普通的事情。 随着下载影片的增多,管理就有了问题,有时在茫茫文件夹下找寻一个影片也是一件费时费力的事。 于是萌生了自己编写电影管理器的想法,并逐步逐步在实现。
749 0
Python爬虫入门教程 37-100 云沃客项目外包网数据爬虫 scrapy
爬前叨叨 2019年开始了,今年计划写一整年的博客呢~,第一篇博客写一下 一个外包网站的爬虫,万一你从这个外包网站弄点外快呢,呵呵哒 数据分析 官方网址为 https://www.clouderwork.
757 0
10059
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载