




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章认识网络爬虫《Python网络爬虫基础教程》学习目标/Target熟悉网络爬虫的概念及分类,能够归纳通用网络爬虫和聚焦网络爬虫的区别了解网络爬虫的应用场景,能够列举至少3个网络爬虫的应用场景熟悉网络爬虫的Robots协议,能够说明robots.txt文件中每个选项的含义熟悉防网络爬虫的应对策略,能够列举至少3个应对防网络爬虫的策略学习目标/Target掌握网络爬虫的工作原理,能够定义通用网络爬虫和聚焦网络爬虫的工作原理熟悉网络爬虫的工作流程,能够归纳网络爬虫抓取网页的完整流程了解网络爬虫的实现技术,能够说出使用Python实现网络爬虫有哪些优势熟悉网络爬虫的实现流程,能够归纳使用Python实现网络爬虫的流程章节概述/Summary随着网络的蓬勃发展,万维网成为大量信息的载体,如何有效提取并利用这些信息成为一个巨大的挑战。网络爬虫作为一种自动采集数据技术,凭借自身强大的自动提取网页数据的能力,成为当下互联网高效、灵活地收集数据的解决方案之一。本章主要对网络爬虫的基础知识进行详细地讲解。目录/Contents1.11.21.3什么是网络爬虫网络爬虫的应用场景网络爬虫合法性探究1.41.5网络爬虫的工作原理和流程网络爬虫实现技术探究什么是网络爬虫1.1熟悉网络爬虫的概念及分类,能够归纳通用网络爬虫和聚焦网络爬虫的区别学习目标1.1什么是网络爬虫1.1什么是网络爬虫网络爬虫(WebCrawler)又称网络蜘蛛、网络机器人,它是一种按照一定规则,自动浏览万维网的程序或脚本。通俗地讲,网络爬虫就是一个模拟真人浏览万维网行为的程序,这个程序可以代替真人自动请求万维网,并接收从万维网返回的数据。与真人浏览万维网相比,网络爬虫能够浏览的信息量更大,效率也更高。
网络爬虫概念1.1什么是网络爬虫网络爬虫历经几十年的发展,技术变得更加多样化,并结合不同的需求衍生出类型众多的网络爬虫。网络爬虫按照系统结构和实现技术大致可以分为4种类型,分别是通用网络爬虫、聚焦网络爬虫、增量式网络爬虫、深层网络爬虫。
网络爬虫分类聚焦网络爬虫通用网络爬虫增量式网络爬虫深层网络爬虫1.1什么是网络爬虫通用网络爬虫(GeneralPurposeWebCrawler)又称全网爬虫(ScalableWebCrawler),是指访问全互联网资源的网络爬虫。通用网络爬虫是“互联网时代”早期出现的传统网络爬虫,它是搜索引擎(如百度、谷歌、雅虎等)抓取系统的重要组成部分,主要用于将互联网中的网页下载到本地,形成一个互联网内容的镜像备份。通用网络爬虫
网络爬虫分类1.1什么是网络爬虫聚焦网络爬虫(FocusedCrawler)又称主题网络爬虫(TopicalCrawler),是指有选择性地访问那些与预定主题相关网页的网络爬虫,它根据预先定义好的目标,有选择性地访问与目标主题相关的网页,获取所需要的数据。与通用网络爬虫相比,聚焦网络爬虫只需要访问与预定主题相关的网页,这不仅减少了访问和保存的页面数量,而且提高了网页的更新速度,可见,聚焦网络爬虫在一定程度度节省了网络资源,能满足一些特定人群采集特定领域数据的需求。
网络爬虫分类聚焦网络爬虫1.1什么是网络爬虫增量式网络爬虫(IncrementalWebCrawler)是指对已下载的网页采取增量式更新,只抓取新产生或者已经发生变化的网页的网络爬虫。增量式网络爬虫只会抓取新产生的或内容变化的网页,并不会重新抓取内容未发生变化的网页,这样可以有效地减少网页的下载量,减少访问时间和存储空间的耗费,但是增加了网页抓取算法的复杂度和实现难度。
网络爬虫分类增量式网络爬虫1.1什么是网络爬虫深层网络爬虫(DeepWebCrawler)是指抓取深层网页的网络爬虫,它要抓取的网页层次比较深,需要通过一定的附加策略才能够自动抓取,实现难度较大。
网络爬虫分类深层网络爬虫网页按存在方式可以分为表层网页(SurfaceWeb)和深层网页(DeepWeb),关于这两类网页的介绍如下。多学一招表层网页是指传统搜索引擎可以索引的页面,主要以超链接可以到达的静态网页构成的网页。深层网页是指大部分内容无法通过静态链接获取的,只能通过用户提交一些关键词才能获取的网页,如用户注册后内容才可见的网页。表层网页与深层网页网络爬虫的应用场景1.2了解网络爬虫的应用场景,能够列举至少3个网络爬虫的应用场景学习目标1.2网络爬虫的应用场景随着互联网信息的“爆炸”,网络爬虫渐渐为人们所熟知,并被应用到了社会生活的众多领域。作为一种自动采集网页数据的技术,很多人其实并不清楚网络爬虫具体能应用到什么场景。事实上,大多数依赖数据支撑的应用场景都离不开网络爬虫,包括搜索引擎、舆情分析与监测、聚合平台、出行类软件等。1.2网络爬虫的应用场景舆情分析与监测搜索引擎聚合平台出行类软件
网络爬虫的应用场景搜索引擎是通用网络爬虫最重要的应用场景之一,它会将网络爬虫作为最基础的部分——互联网信息的采集器,让网络爬虫自动到互联网中抓取数据。例如,谷歌、百度、必应等搜索引擎都是利用网络爬虫技术从互联网上采集海量的数据。1.2网络爬虫的应用场景搜索引擎
网络爬虫的应用场景政府或企业通过网络爬虫技术自动采集论坛评论、在线博客、新闻媒体或微博等网站中的海量数据,采用数据挖掘的相关方法(如词频统计、文本情感计算、主题识别等)发掘舆情热点,跟踪目标话题,并根据一定的标准采取相应的舆情控制与引导措施。例如,百度热点排行榜、微博热搜排行榜。1.2网络爬虫的应用场景
网络爬虫的应用场景舆情分析与检测如今出现的很多聚合平台,如返利网、慢慢买等,也是网络爬虫技术的常见的应用场景,这些平台就是运用网络爬虫技术对一些电商平台上的商品信息进行采集,将所有的商品信息放到自己的平台上展示,并提供横向数据的比较,帮助用户寻找实惠的商品价格。例如,用户在慢慢买平台搜索华为智能手表后,平台上展示了很多款华为智能手表的价格分析及价格走势等信息。1.2网络爬虫的应用场景
网络爬虫的应用场景聚合平台出行类软件,比如飞猪、携程、去哪儿等,也是网络爬虫应用比较多的场景。这类应用运用网络爬虫技术,不断地访问交通出行的官方售票网站刷新余票,一旦发现有新的余票便会通知用户付款买票。不过,官方售票网站并不欢迎网络爬虫的这种行为,因为高频率地访问网页极易造成网站出现瘫痪的情况。1.2网络爬虫的应用场景
网络爬虫的应用场景出行类软件网络爬虫合法性探究1.3网络爬虫在访问网站时,需要遵循“有礼貌”的原则,这样才能与更多的网站建立友好关系。即便如此,网络爬虫的爬行行为仍会给网站增加不小的压力,严重时甚至可能会影响网站的正常访问。为了约束网络爬虫的恶意行为,网站内部加入了一些防爬虫措施来阻止网络爬虫。与此同时,网络爬虫也研究了防爬虫措施的应对策略。1.3网络爬虫合法性探究熟悉网络爬虫的Robots协议,能够说明robots.txt文件中每个选项的含义学习目标1.3.1Robots协议Robots协议又称爬虫协议,它是国际互联网界通行的道德规范,用于保护网站数据和敏感信息,确保网站用户的个人信息和隐私不受侵犯。为了让网络爬虫了解网站的访问范围,网站管理员通常会在网站的根目录下放置一个符合Robots协议的robots.txt文件,通过这个文件告知网络爬虫在抓取该网站时存在哪些限制,哪些网页是允许被抓取的,哪些网页是禁止被抓取的。
Robots协议1.3.1Robots协议当网络爬虫访问网站时,应先检查该网站的根目录下是否存在robots.txt文件。若robots.txt文件不存在,则网络爬虫会访问该网站上所有被口令保护的页面;若robots.txt文件存在,则网络爬虫会按照该文件的内容确定访问网站的范围。
robots.txt文件1.3.1Robots协议robots.txt文件中的内容有着一套通用的写作规范。下面以豆瓣网站根目录下的robots.txt文件为例,分析robots.txt文件的语法规则。
robots.txt文件1.3.1Robots协议
豆瓣网站robots.txt文件1.3.1Robots协议User-agent:
*Disallow:/subject_search...Disallow:/share/Allow:/ads.txtSitemap:/sitemap_index.xmlSitemap:/sitemap_updated_index.xml#Crawl-delay:5User-agent:WandoujiaSpiderDisallow:/User-agent:Mediapartners-Google...
robots.txt文件选项说明1.3.1Robots协议User-agent:用于指定网络爬虫的名称。若该选项的值为“*”,则说明robots.txt文件对任何网络爬虫均有效。带有“*”号的User-agent选项只能出现一次。例如,示例的第一条语句User-agent:*。Disallow:用于指定网络爬虫禁止访问的目录。若Disallow选项的内容为空,说明网站的任何内容都是被允许访问的。在robots.txt文件中,至少要有一个包含Disallow选项的语句。例如,Disallow:/subject_search禁止网络爬虫访问目录/subject_search。
robots.txt文件选项说明1.3.1Robots协议Allow:用于指定网络爬虫允许访问的目录。例如,Allow:/ads.txt表示允许网络爬虫访问目录/ads.txt。Sitemap:用于告知网络爬虫网站地图的路径。例如,Sitemap:/sitemap_index.xml和/sitemap_updated_index.xml这两个路径都是网站地图,主要说明网站更新时间、更新频率、网址重要程度等信息。1.3.1Robots协议Robots协议只是一个网站与网络爬虫之间达成的“君子”协议,它并不是计算机中的防火墙,没有实际的约束力。如果把网站比作私人花园,那么robots.txt文件便是私人花园门口的告示牌,这个告示牌上写有是否可以进入花园,以及进入花园后应该遵守的规则,但告示牌并不是高高的围栏,它只对遵守协议的“君子”有用,对于违背协议的人而言并没有太大的作用。尽管Robots协议没有一定的强制约束力,但网络爬虫仍然要遵守协议,违背协议可能会存在一定的法律风险。熟悉防网络爬虫的应对策略,能够列举至少3个应对防网络爬虫的策略学习目标1.3.2防爬虫应对策略1.3.2防爬虫应对策略网络爬虫会采取一些应对策略继续访问网站,常见的应对策略包括添加User-Agent字段、降低访问频率、设置代理服务、识别验证码。添加User-Agent字段降低访问频率设置代理服务器识别验证码浏览器在访问网站时会携带固定的User-Agent(用户代理,用于描述浏览器的类型及版本、操作系统及版本、浏览器插件、浏览器语言等信息),向网站表明自己的真实身份。网络爬虫每次访问网站时可以模仿浏览器的上述行为,也就是在请求网页时携带User-Agent,将自己伪装成一个浏览器,如此便可以绕过网站的检测,避免出现被网站服务器直接拒绝访问的情况。1.3.2防爬虫应对策略添加User-Agent字段降低访问频率设置代理服务器识别验证码如果同一账户在较短的时间内多次访问了网页,那么网站运维人员会推断此种访问行为可能是网络爬虫的行为,并将该账户加入到黑名单禁止访问网站。为防止网站运维人员从访问量上推断出网络爬虫的身份,可以降低网络爬虫访问网站的频率。不过,这种方式会降低网络爬虫的爬行效率,为了弥补这个不足,我们可以适当地调整一些操作,如让网络爬虫每抓取一次页面数据就休息几秒钟,或者限制每天抓取的页面数据的数量。1.3.2防爬虫应对策略添加User-Agent字段降低访问频率设置代理服务器识别验证码网络爬虫在访问网站时,若反复使用同一IP地址进行访问,则极易被网站认出网络爬虫的身份后进行屏蔽、阻止、封禁等。此时可以在网络爬虫和Web服务器之间设置代理服务器。有了代理服务器之后,网络爬虫会先将请求发送给代理服务器,代理服务器再转发给服务器,这时服务器记录的是代理服务器的IP地址,而不是网络爬虫的IP地址。1.3.2防爬虫应对策略添加User-Agent字段降低访问频率设置代理服务器识别验证码有些网站在检测到某个客户端的IP地址访问次数过于频繁时,会要求该客户端进行登录验证,并随机提供一个验证码。为了应对这种突发情况,网络爬虫除了要输入正确的账户密码之外,还要像人类一样通过滑动或点击行为识别验证码,如此才能继续访问网站。由于验证码的种类较多,不同的验证码需要采用不同的技术进行识别,具有一定的技术难度。1.3.2防爬虫应对策略网络爬虫的工作原理和流程1.4掌握网络爬虫的工作原理,能够定义通用爬虫和聚焦爬虫的工作原理学习目标1.4.1网络爬虫的工作原理通用网络爬虫和聚焦网络爬虫是如何工作的?1.4.1网络爬虫的工作原理通用网络爬虫的采集目标是整个互联网上的所有网页,它会从一个或多个初始URL开始,获取初始URL对应的网页数据,并不断从该网页数据中抽取新的URL放到队列中,直至满足一定的条件后停止。
通用网络爬虫的工作原理1.4.1网络爬虫的工作原理1.4.1网络爬虫的工作原理(1)获取初始URL。既可以由用户指定,也可以由待采集的初始网页指定。(2)抓取页面,并获得新URL。根据初始URL抓取对应的网页,之后将该网页存储到原始网页数据库中,并且在抓取网页的同时对网页内容进行解析,并从中提取出新URL。(3)将新URL放入URL队列。有了新URL之后,我们需要将新URL放入URL队列中。(4)读取新URL。从URL队列中读取新URL,并根据该URL获取对应网页数据,同时从新网页中抽取新的URL。(5)是否满足停止条件。若网络爬虫满足设置的停止条件,则停止采集;若网络爬虫没有满足设置的停止条件,则继续根据新URL抓取对应的网页,并重复步骤(2)~(5)。聚焦网络爬虫面向有特殊需求的人群,它会根据预先设定的主题顺着某个垂直领域进行抓取,而不是漫无目的地随意抓取。与通用网络爬虫相比,聚焦网络爬虫会根据一定的网页分析算法对网页进行筛选,保留与主题有关的网页链接,舍弃与主题无关的网页链接,其目的性更强。
聚焦网络爬虫的工作原理1.4.1网络爬虫的工作原理1.4.1网络爬虫的工作原理(1)根据需求确定好聚焦网络爬虫的采集目标,以及进行相关的描述。(2)获取初始URL。(3)根据初始URL抓取页面,并获得新URL。(4)从新URL中过滤掉与采集目标无关的URL。(5)将过滤后的URL放到URL队列中。(6)根据一定的抓取策略,从URL队列中确定URL优先级,并确定下一步要抓取的URL。(7)从下一步要抓取的URL中读取新URL,以准备根据新URL抓取下一个网页。(8)若聚焦网络爬虫满足设置的停止条件,或没有可获取的URL时,停止采集;若网络爬虫没有满足设置的停止条件,则继续根据新URL抓取对应的网页,并重复步骤(3)~(8)。熟悉网络爬虫的工作流程,能够归纳网络爬虫抓取网页的完整流程学习目标1.4.2网络爬虫抓取网页的流程(1)选择一些网页,将这些网页的链接作为种子URL放入待抓取URL队列中。(2)从待抓取URL队列中依次读取URL。(3)通过DNS解析URL,把URL地址转换为网站服务器所对应的IP地址。(4)将IP地址和网页相对路径名称交给网页下载器,网页下载器负责网页内容的下载。(5)网页下载器将相应网页的内容下载到本地。(6)将下载到本地的网页存储到页面库中,同时将使用过的URL放入到已抓取的URL队列中,避免重复抓取。(7)对于刚下载的网页中抽取出所包含的URL信息。(8)在已抓取URL队列中检查抽取的URL是否被下载过。如果它还未被下载过,则将这个URL放入待抓取URL队列中。如此重复(2)~(8),直到待抓取URL队列为空。1.4.2网络爬虫抓取网页的流程网络爬虫实现技术探究1.5了解网络爬虫的实现技术,能够说出使用Python实现网络爬虫有哪些优势学习目标1.5网络爬虫实现技术探究为满足用户快速从网页上采集数据的需求,市面上出现了一些可视化界面的网络爬虫工具,比如八爪鱼采集器、火车头采集器等。除了直接使用这些现成的工具之外,我们也可以开发一个自己的网络爬虫。目前,开发网络爬虫的语言主要有PHP、Go、C++、Java、Python共5种。
网络爬虫的实现技术1.5.1网络爬虫的实现技术
网络爬虫的实现技术1.5.1网络爬虫的实现技术PHPPHP语言的优点是语法简洁,容易上手,拥有丰富的网络爬虫功能模块;缺点是对多线程的支持不太友好,需要借助扩展实现多线程技术,并发处理的能力相对较弱。GoC+Go语言的优点是高并发能力强、开发效率高、丰富的标准库,通过Go语言开发的网络爬虫程序性能更好;缺点是普及性不高。C++语言的优点是运行速度快、性能强;缺点是学习成本高、代码成型速度慢。网络爬虫的实现技术
网络爬虫的实现技术1.5.1网络爬虫的实现
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 定向钻安全施工协议书
- 朋友结婚签婚前协议书
- 贸易合伙协议书
- 安置房买卖中介协议书
- 烘焙店全体转让协议书
- 洗车店合作联营协议书
- 模特儿培训合作协议书
- 电梯管理协议书
- 维修基金协议书
- 耕地界桩协议书
- (正式版)SHT 3551-2024 石油化工仪表工程施工及验收规范
- (2024年)版ISO9001质量管理体系培训教材
- 2022年10月自考00445中外教育管理史试题及答案含解析
- 2022-2023部编人教版小学一年级英语下册教案(全册)
- T-GLYH 007-2023 公路沥青路面厂拌热再生技术规范
- 灭火器材的选用和配置要求
- 19层写字楼给排水毕业设计(图和设计说明全套)
- 钢结构焊接技术中的安全操作注意事项
- 公共服务满意度指数调查
- 《多形红斑》课件
- 呼吸内科研究热点与新进展讲解
评论
0/150
提交评论