网络爬虫与数据采集笔记电子免费分享完整版|百度网盘下载
编者评论:网络爬虫和数据收集笔记电子免费共享
网络爬虫与数据采集笔记系统地介绍了网络爬虫的理论知识和基础工具,包括网络爬虫涉及的Java基础知识、HTTP协议和网络抓包基础知识、网页内容获取等,让你更深刻的了解互联网,有兴趣的欢迎下载学习
通过网络爬虫收集大数据
网络数据采集是指通过网络爬虫或网站公共API从网站获取数据信息。该方法可以从网页中提取非结构化数据,存储为统一的本地数据文件,并以结构化的方式存储。支持图片、音频、视频等文件或附件的收藏,附件与文本可自动关联。
在互联网时代,网络爬虫主要为搜索引擎提供最全面、最新的数据。
在大数据时代,网络爬虫是更有用的从互联网收集数据的工具。目前已知的各种网络爬虫工具有数百种,网络爬虫工具基本上可以分为三类。
分布式网络爬虫工具,例如 Nutch。
Crawler4j、WebMagic、WebCollector 等 Java 网络爬虫工具。
Scrapy(基于 Python 语言开发)等非 Java 网络爬虫工具。
相关内容部分预览
网络爬虫原理
网络爬虫是根据一定的规则自动爬取网络信息的程序或脚本。
网络爬虫可以自动收集他们可以访问的所有页面内容,为搜索引擎和大数据分析提供数据源。在功能上,爬虫一般具有数据采集、处理和存储三种功能,如图1所示。
网页除了供用户阅读的文字信息外,还包含一些超链接信息。
网络爬虫系统通过网页中的超链接信息不断获取网络上的其他网页。网络爬虫从一个或多个初始网页的URL开始,获取初始网页上的URL。在抓取网页的过程中,它不断地从当前页面中提取新的 URL 并放入队列中,直到满足系统的某些停止条件。
网络爬虫系统一般会选择一些出度(网页中超链接数量)较大的重要网站的URL作为种子URL的集合。
网络爬虫系统使用这些种子集作为初始 URL 来开始数据爬取。因为网页中包含链接信息,所以会通过已有网页的URL获取一些新的URL。
网页之间的指向结构可以看作是一片森林。每个种子URL对应的网页是森林中一棵树的根节点,使得网络爬虫系统可以根据广度优先搜索算法或深度优先搜索算法进行搜索。该算法遍历所有网页。
由于深度优先搜索算法可能会导致爬虫系统落入网站内部,不利于搜索距离网站首页比较近的网页信息,所以广度优先搜索算法一般用于收集网页。
网络爬虫系统首先将种子URL放入下载队列,简单地从队列头部取一个URL下载其对应的网页,获取网页内容并存储,然后解析网页中的链接信息以获取一些新的 URL。
其次,根据一定的网页分析算法,过滤掉与主题无关的链接,保留有用的链接,放入等待抓取的URL队列中。
最后取出一个URL,下载其对应的网页,然后解析,如此循环,直到遍历全网或满足某个条件。
网络爬虫工作流程
1) 首先选择种子 URL 的一部分。
2) 将这些网址放入待抓取的网址队列中。
3) 从待爬取的URL队列中取出待爬取的URL,解析DNS,获取主机IP地址,下载该URL对应的网页,存入下载的网页库中。此外,将这些 URL 放入 Crawl URL 队列。
4) 分析已爬取URL队列中的URL,分析其中的其他URL,将这些URL放入待爬取URL队列,从而进入下一个循环。
图2网络爬虫的基本工作流程
网络爬虫抓取策略
谷歌和百度等常见搜索引擎抓取的网页数量通常以数十亿计。那么,面对这么多的网页,如何才能让网络爬虫尽可能的遍历所有的网页,从而尽可能的扩大网页信息的覆盖范围,
这是网络爬虫系统面临的一个关键问题。在网络爬虫系统中,爬取策略决定了网页被爬取的顺序。
本节首先简要介绍网络爬取策略中使用的基本概念。
1) 网页之间的关系模型
从互联网的结构来看,网页通过各种超链接相互连接,形成一个巨大而复杂的相互关联的有向图。
如果把网页看成图中的某个节点,把网页中指向其他网页的链接看成是这个节点到其他节点的边,那么我们可以很容易地在互联网。塑造成有向图。
理论上,通过遍历算法对图进行遍历,几乎可以访问互联网上的所有网页。
2) 网页分类
从爬虫的角度来划分互联网,互联网的所有页面可以分为5个部分:下载和未过期页面、下载和过期页面、待下载页面、已知页面和未知页面,如图如图 4 所示。
在本地抓取的网页实际上是互联网内容的镜像和备份。互联网正在动态变化。当互联网的一部分内容发生变化时,本地抓取的网页就会失效。因此,下载的网页分为两类:下载的未过期网页和下载的过期网页。
要下载的页面是 URL 队列中要抓取的页面。
已知网页是指尚未被爬取且不在待爬取URL队列中,但可以通过分析已爬取的页面或待爬取URL对应的页面得到的网页。
还有一些网页是网络爬虫无法直接抓取下载的,称为不可知网页。
以下重点介绍几种常见的爬取策略。
1、通用网络爬虫
通用网络爬虫也称为全网络爬虫。爬取对象从一些种子 URL 延伸到整个网络,主要为门户搜索引擎和大型网络服务提供商收集数据。
为了提高工作效率,一般的网络爬虫都会采用一定的爬取策略。常用的爬取策略有深度优先策略和广度优先策略。
1) 深度优先策略
深度优先策略意味着网络爬虫会从起始页开始,逐个跟踪链接,直到无法再深入为止。
网络爬虫在完成一个爬取分支后返回上一个链接节点,进一步搜索其他链接。当所有的链接都遍历完后,爬取任务结束。
这种策略比较适合垂直搜索或者站内搜索,但是在抓取页面内容较深的网站时会造成巨大的资源浪费。
以图3为例,遍历的路径为1→2→5→6→3→7→4→8、
在深度优先策略中,当搜索一个节点时,该节点的子节点和子节点的后继节点都在该节点的兄弟节点之前。深度优先策略是在搜索空间的时候,会尽量往深处走,只有在找不到某个节点的后继节点时才考虑其兄弟节点。
这样的策略决定了深度优先的策略不一定能找到最优解,甚至因为深度的限制而无法找到解。
如果不受限制,它会沿着一条路径无限扩展,这将“捕获”成大量数据。一般来说,使用深度优先策略会选择一个合适的深度,然后反复搜索直到找到一个解,这样会降低搜索的效率。因此,当搜索数据量较小时,一般采用深度优先策略。
2) 广度优先策略
广度优先策略根据网页内容目录层次的深度对页面进行爬取,较浅的目录层次的页面先爬取。当同一级别的页面被爬取时,爬虫进入下一级继续爬取。
以图3为例,遍历的路径为1→2→3→4→5→6→7→8
因为广度优先策略是在第N层的节点扩展完成后进入第N+1层,所以保证通过最短路径找到解。
该策略可以有效控制页面的爬取深度,避免遇到无限深分支时爬取无法结束的问题。易于实现,不需要存储大量的中间节点。缺点是爬到目录需要很长时间。更深的页面。
如果搜索的时候分支太多,即节点的后继节点太多,算法会耗尽资源,每天可用空间变坏
2、专注于网络爬虫
聚焦网络爬虫,也称为主题网络爬虫,是选择性地抓取与预定义主题相关的页面的网络爬虫。
1) 基于内容评价的爬取策略
DeBra 将文本相似度的计算方法引入网络爬虫,提出了 Fish Search 算法。
该算法以用户输入的查询词为主题,包含查询词的页面被视为与该主题相关的页面,其局限性在于无法评估该页面与该主题的相关性.
Herseovic 改进了 Fish Search 算法,提出了 Shark Search 算法,利用空间向量模型计算页面与主题的相关性。
使用基于连续值计算链接值的方法,不仅可以计算出哪些链接与主题相关,还可以得到相关度的量化大小。
2) 基于链接结构评估的爬取策略
网页不同于普通的文本,它是一个包含大量结构化信息的半结构化文档。
网页不是单独存在的。页面中的链接表示页面之间的关系。基于链接结构的搜索策略模式利用这些结构特征来评估页面和链接的重要性来确定搜索顺序。其中,PageRank算法就是这种搜索策略模式的代表。
PageRank算法的基本原理是,如果一个网页被多次引用,它可能是一个重要的网页。如果一个网页没有被多次引用,而是被一个重要网页引用,那么它也可能是一个重要网页。一个网页的重要性同样传递给它所指的网页。
将某个页面的PageRank除以该页面上存在的前向链接,并将得到的值与前向链接所指向的页面的PageRank相加,即得到链接的PageRank页。
如图 5 所示,PageRank 为 100 的页面将其重要性平等地传递给它所引用的两个页面,每个页面获得 50,而 PageRank 为 9 的同一页面给它一个参考。 3 个页面被传递了一个值 3、
PageRank 为 53 的页面的值源自引用它的两个页面传递的值。
图 5 PageRank 算法示例
3)基于强化学习的爬取策略
Rennie 和 McCallum 将强化学习引入到聚焦爬虫中,使用贝叶斯分类器根据整个网页文本和链接文本对超链接进行分类,并计算每个链接的重要性以确定链接被访问的顺序。
4) 基于上下文图的爬取策略
Diligenti 等人。提出了一种爬取策略,通过构建上下文图来学习网页之间的相关性。该策略可以训练一个机器学习系统,通过该系统可以计算当前页面到相关网页的距离。最先访问最近页面中的链接。
3、增量网络爬虫
增量网络爬虫是指对下载的网页进行增量更新,只爬取新生成或更改的网页的爬虫。可以在一定程度上保证爬取的页面尽可能的新。 .
增量网络爬虫有两个目标:
使存储在本地页面设置中的页面保持最新。
提高本地页面集中页面的质量。
为了实现第一个目标,增量网络爬虫需要通过重新访问网页来更新本地页面集合中的页面内容。常用的方法有统一更新法、个体更新法和分类更新法。
在统一更新方法中,网络爬虫以相同的频率访问所有网页,而不管网页的更改频率。
在单个更新方法中,网络爬虫会根据更改频率重新访问单个页面。
在基于分类的更新方法中,网络爬虫根据网页的变化频率将网页分为更新较快的网页子集和更新慢的网页子集,然后访问这两类网页具有不同的频率。
为了实现第二个目标,增量网络爬虫需要对网页的重要性进行排名。常见的策略包括广度优先策略和PageRank优先策略。
4、深网爬虫
网页按存在方式可分为表层网页和深层网页。
地表网页是指可以被传统搜索引擎索引的页面,主要是可以通过超链接到达的静态网页。
深层页面是那些大部分内容无法通过静态链接访问、隐藏在搜索表单后面且只有提交一些关键字的用户才能访问的页面。
深网爬虫架构由六个基本功能模块(爬取控制器、解析器、表单分析器、表单处理器、响应分析器、LVS控制器)和两个爬虫内部数据结构(URL列表和LVS表面)组成。
其中,LVS(LabelValueSet)表示标签和值集,用于表示填充表单的数据源。在爬取过程中,最重要的部分是表单填写,包括基于领域知识的表单填写和基于网页结构分析的表单填写。