大家好,欢迎来到IT知识分享网。
一、什么是网络爬虫
1.爬虫简介
网络爬虫 ( Web Crawler) 又称网络蜘蛛、网络机器人它是一种按照一定规则,自动浏览万维网的程序或脚本。通俗地讲,网络爬虫就是一个模拟真人浏览万维网行为的程序这个程序可以代替真人自动请求万维网,并接收从万维网返回的数据。与真人浏览万维网相比,网络爬虫能够浏览的信息量更大,效率也更高。其主要功能是按照一定的规则,自动地抓取互联网上的信息,并将这些信息存储在本地或者数据库中,以供后续的数据处理和分析。网络爬虫通常被用于搜索引擎、数据挖掘、信息监控等领域。我们可以使用网络爬虫对数据信息进行自动采集,比如应用于搜索引擎中对站点进行爬取收录,应用于数据分析与挖掘中对数据进行采集,应用于金融分析中对金融数据进行采集,除此之外,还可以将网络爬虫应用于舆情监测与分析、目标客户数据的收集等各个领域。
2.爬虫类型
网络爬虫历经几十年的发展,技术变得更加多样化,并结合不同的需求衍生出类型众多的网络爬虫。网络爬虫按照系统结构和实现技术大致可以分为 4 种类型,分别是通用网络爬虫聚焦网络爬虫、增量式网络爬虫、深层网络爬虫。
2.聚焦网络爬虫
聚焦网络爬虫 (Focused Crawler ) 又称主题网络爬虫( Topical Crawler ),是指有选择性地访问那些与预定主题相关网页的网络爬虫,它根据预先定义好的目标,有选择性地访问与目标主题相关的网页,获取所需要的数据与通用网络爬虫相比,聚焦网络爬虫只需要访问与预定主题相关的网页,这不仅减少了访问和保存的页面数量,而且提高了网页的更新速度,可见,聚焦网络爬虫在一定程度度节省了网络资源,能满足一些特定人群采集特定领域数据的需求。
3.爬虫命名组件
1.爬虫调度器(Scheduler):负责管理整个爬虫的调度流程,包括URL的管理和调度等。
2.网页下载器(Downloader):负责下载网页内容,可以使用Python中的requests库或者Scrapy框架中的下载器等。
3.网页解析器(Parser):负责解析网页内容,提取出需要的信息,可以使用Python中的BeautifulSoup库或者Scrapy框架中的解析器等。
4.数据存储器(Pipeline):负责将解析出来的数据存储到数据库或者文件中,可以使用Python中的MySQLdb库或者Scrapy框架中的数据存储器等。
二、网络爬虫的应用场景
随着互联网信息的“爆炸”,网络爬虫渐渐为人们所熟知,并被应用到了社会生活的众多领域。作为一种自动采集网页数据的技术,很多人其实并不清楚网络爬虫具体能应用到什么场景。事实上,大多数依赖数据支撑的应用场景都离不开网络爬虫,包括搜索引擎、舆情分析与监测、聚合平台、出行类软件等。
三、爬虫协议
1.Robots 协议
Robots 协议又称爬虫协议,它是国际互联网界通行的道德规范,用于保护网站数据和敏感信息,确保网站用户的个人信息和隐私不受侵犯。为了让网络爬虫了解网站的访问范围,网站管理员通常会在网站的根目录下放置一个符合 Robots 协议的 robots.txt 文件通过这个文件告知网络爬虫在抓取该网站时存在哪些限制,哪些网页是允许被抓取的,哪些网页是禁止被抓取的。
2.robots.txt 文件
当网络爬虫访问网站时,应先检查该网站的根目录下是否存在 robots.txt 文件。若 robots.txt 文件不存在则网络爬虫会访问该网站上所有被口令保护的页面;若robots.txt 文件存在,则网络爬虫会按照该文件的内容确定访问网站的范围。robots.txt是网站管理者写给爬虫的一封信,里面描述了网站管理者不希望爬虫做的事,比如:不要访问某个文件、文件夹,禁止某些爬虫的访问,限制爬虫访问网站的频率。在抓取网页之前,应该先阅读robots.txt,了解并执行网站管理者制定的爬虫规则。robots.txt 文件中的内容有着一套通用的写作规范下面以豆瓣网站根目录下的 robots.txt 文件为例,分析robots.txt 文件的语法规则。
1.User-agent:用于指定网络爬虫的名称。若该选项的值为“*”,则说明 robots.txt 文件对任何网络爬虫均有效。带有“*”号的 Useragent 选项只能出现一次。例如,示例的第一条语句 User-agent:*。
3.Allow: 用于指定网络爬虫允许访问的目录。例如,Alow: /ads.txt 表示允许网络爬虫访问目录/ads.txt。
四、网络爬虫的工作原理
通用网络爬虫的采集目标是整个互联网上的所有网页,它会从一个或多个初始URL开始,获取初始URL对应的网页数据,并不断从该网页数据中抽取新的 URL放到队列中,直至满足一定的条件后停止。
(1)获取初始 URL。既可以由用户指定,也可以由待采集的初始网页指定。 https://www.baidu.com/
(2)抓取页面,并获得新 URL。根据初始URL抓取对应的网页之后将该网页存储到原始网页数据库中,并且在抓取网页的同时对网页内容进行解析,并从中提取出新 URL。
(3)将新 URL放入URL队列。有了新URL之后,我们需要将新URL放入URL队列中。
(4)读取新URL。从URL队列中读取新URL,并根据该 URL获取对应网页数据,同时从新网页中抽取新的URL。
(5)是否满足停止条件。若网络爬虫满足设置的停止条件,则停止采集;若网络爬虫没有满足设置的停止条件,则继续根据新 URL抓取对应的网页,并重复步骤 (2) ~ (5).
五、网络爬虫爬取网页的流程
六、开发网络爬虫的语言
1.PHP:PHP语言的优点是语法简洁,容易上手,拥有丰富的网络爬虫功能模块;缺点是对多线程的支持不太友好,需要借助扩展实现多线程技术,并发处理的能力相对较弱。
2.Go:Go语言的优点是高并发能力强、开发效率高、丰富的标准库通过Go语言开发的网络爬虫程序性能更好;缺点是普及性不高。
3.C++:C语言的优点是运行速度快、性能强;缺点是学习成本高代码成型速度慢。
4.Java:Java在网络爬虫方向已经形成了完善的生态圈,非常适合开发大型网络爬虫项目,但重构成本比较高。
5.Python:使用Python在网络爬虫方向已经形成完善的生态圈,它拥有娇俏的多线程处理能力,但是网页解析能力不够强大。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/127133.html