网络爬虫概念1.1什么是网络爬虫网络爬虫历经几十年的发展,技术变得更加多样化,并结合不同的需求衍生出类型众多的网络爬虫。网络爬虫按照系统结构和实现技术大致可以分为4种类型,分别是通用网络爬虫、聚焦网络爬虫、增量式网络爬虫、深层网络爬虫。
网络爬虫分类聚焦网络爬虫通用网络爬虫增量式网络爬虫深层网络爬虫1.1什么是网络爬虫通用网络爬虫(GeneralPurposeWebCrawler)又称全网爬虫(ScalableWebCrawler),是指访问全互联网资源的网络爬虫。通用网络爬虫是“互联网时代”早期出现的传统网络爬虫,它是搜索引擎(如百度、谷歌、雅虎等)抓取系统的重要组成部分,主要用于将互联网中的网页下载到本地,形成一个互联网内容的镜像备份。通用网络爬虫
网络爬虫分类增量式网络爬虫1.1什么是网络爬虫深层网络爬虫(DeepWebCrawler)是指抓取深层网页的网络爬虫,它要抓取的网页层次比较深,需要通过一定的附加策略才能够自动抓取,实现难度较大。
网络爬虫分类深层网络爬虫网页按存在方式可以分为表层网页(SurfaceWeb)和深层网页(DeepWeb),关于这两类网页的介绍如下。多学一招表层网页是指传统搜索引擎可以索引的页面,主要以超链接可以到达的静态网页构成的网页。深层网页是指大部分内容无法通过静态链接获取的,只能通过用户提交一些关键词才能获取的网页,如用户注册后内容才可见的网页。表层网页与深层网页网络爬虫的应用场景1.2了解网络爬虫的应用场景,能够列举至少3个网络爬虫的应用场景学习目标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。
通用网络爬虫的工作原理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.5.1网络爬虫的实现技术
网络爬虫的实现技术1.5.1网络爬虫的实现技术PHPPHP语言的优点是语法简洁,容易上手,拥有丰富的网络爬虫功能模块;缺点是对多线程的支持不太友好,需要借助扩展实现多线程技术,并发处理的能力相对较弱。GoC+Go语言的优点是高并发能力强、开发效率高、丰富的标准库,通过Go语言开发的网络爬虫程序性能更好;缺点是普及性不高。C++语言的优点是运行速度快、性能强;缺点是学习成本高、代码成型速度慢。网络爬虫的实现技术
网络爬虫的实现技术1.5.1网络爬虫的实现技术JavaJava在网络爬虫方向已经形成了完善的生态圈,非常适合开发大型网络爬虫项目,但重构成本比较高。Python使用Python在网络爬虫方向已经形成完善的生态圈,它拥有娇俏的多线程处理能力,但是网页解析能力不够强大。网络爬虫的实现技术
scheme2.2.1URL简介传输协议说明示例File访问本地计算机的资源file:///Users/itcast/Desktop/basic.htmlFTP文件传输协议,访问共享主机的文件资源/moviesHTTP超文本传输协议,访问远程网络资源/template/gfquan/src/logo.pngHTTPS安全的SSL加密传输协议,访问远程网络资源/channel/wallpaperMailto访问电子邮件地址mailto:null@scheme选项用于规定如何访问指定资源的主要标识符,它会告诉负责解析URL的应用程序应该使用什么传输协议。
host2.2.1URL简介host指存放资源的主机名或者IP地址,它用于标识互联网上的唯一一台计算机,保证用户在联网的计算机上可以高效地从成千上万台计算机中找到这台计算机。IP地址分为IPv4(互联网通信协议第4版)和IPv6(互联网协议第6版),目前较通用的IP地址是IPv4,它通常“点分十进制”表示成“a.b.c.d”的形式,并通过DNS服务将域名和IP地址相互映射,比如.就是对应的域名。
port2.2.1URL简介port用于标识在一台计算机上运行的不同程序,它与主机地址以“:”进行分隔。每个网络程序都对应一个或多个特定的端口号,例如,采用HTTP协议的程序默认使用的端口号为80,采用HTTPS协议的程序默认使用的端口号为443。
请求行GET/item/Python/407313HTTP/1.1请求行的内容具体如下。在请求行中,GET表示向服务器请求网络资源时所使用的请求方法,/item/Python/407313表示请求的URL地址,HTTP/1.1表示使用的HTTP版本。2.2.3HTTP请求格式
请求行常用的请求方法包括GET和POST,其中GET用于请求服务器发送某个资源,POST用于向服务器提交表单或上传文件,表单数据或文件的数据会包含在请求体中。请求方法GET和POST的区别主要体现两个方面。GET请求方法通过请求参数传输数据,最多只能传输2KB的数据;POST请求方法通过实体内容传输数据,可以传输的数据大小没有限制。传输数据大小GET请求方法的参数信息会在URL中明文显示,安全性比较低;POST请求方法传递的参数会隐藏在实体内容中,用户看不到,安全性更高。安全性2.2.3HTTP请求格式
状态行HTTP/1.1200OK状态行的内容具体如下。在状态行中,HTTP/1.1表示HTTP协议的版本号,200表示响应状态码,OK表示响应状态码的简短描述。2.2.4HTTP响应格式
状态行响应状态码代表服务器的响应状态,它的作用是告知浏览器请求Web资源的结果,如请求成功、请求异常、服务器处理错误等。响应状态码说明100~199表示服务器成功接收部分请求,要求浏览器继续提交剩余请求才能完成整个处理过程200~299表示服务器成功接收请求并已完成整个处理过程。常见状态码为200,表示Web服务器成功处理了请求300~399表示未完成请求,要求浏览器进一步细化请求。常见的状态码有302(表示请求的页面临时转移至新地址)、307(表示请求的资源临时从其他位置响应)和304(表示使用缓存资源)400~499表示浏览器发送了错误的请求,常见的状态码有404(表示服务器无法找到被请求的页面)和403(表示服务器拒绝访问,权限不够)500~599表示Web服务器出现错误,常见的状态码为500,表示本次请求未完成,原因在于服务器遇到不可预知的情况2.2.4HTTP响应格式
响应头状态行下面的部分便是若干个响应头信息,关于响应头中的常用字段以及常用值的介绍如下。Cache-Control表示服务器告知浏览器当前的HTTP响应是否可以缓存。Connection表示浏览器是否使用持久HTTP连接。Content-Encoding表示服务器对特定媒体类型的数据进行压缩。Content-Type表示服务器告知浏览器实际返回的内容的内容类型。2.2.4HTTP响应格式
响应正文响应正文是服务器返回的具体数据,常见的数据是HTML源代码。浏览器在接收到HTTP响应后,会根据响应正文的不同类型进行不同的处理。如果响应正文是DOC文档,这时浏览器会借助安装在本机的Word程序打开这份文档;如果响应正文是RAR压缩文档,这时浏览器会弹出一个下载窗口让用户下载解压软件;如果响应正文是HTML文档,这时浏览器会在自身的窗口中展示该文档。2.2.4HTTP响应格式网页基础2.3熟悉网页基础知识,能够区分HTML、CSS和JavaScript三者的区别学习目标2.3.1网页开发技术
HTMLHTML的英文全称HyperTextMarkupLanguage,即超文本标记语言,是一种用于创建网页的标准标记语言。一个HTML文档由一系列的HTML元素组成。2.3.1网页开发技术
HTML开始标签、内容、结束标签组合在一起便构成了一个完整的HTML元素。开始标签:标识元素的起始位置,由尖括号包裹着元素名称。结束标签:标识元素的结束位置,与开始标签相似,只不过在元素名称之前多了一个/。内容:表示元素的内容,位于开始标签和结束标签之间。2.3.1网页开发技术
HTML标签说明表示根标签,用于定义HTML文档
~表示标题标签,用于定义HTML标题,其中的等级最高,的等级最低
表示图像标签,用于定义图像
的等级最高,的等级最低
表示图像标签,用于定义图像
表示段落标签,用于定义段落表示链接标签,用于定义链接