php 爬虫抓取网页数据(使用7个HTML文件来模拟互联网资源,先要了解网络爬虫的分类)

优采云 发布时间: 2022-02-20 13:04

  php 爬虫抓取网页数据(使用7个HTML文件来模拟互联网资源,先要了解网络爬虫的分类)

  爬虫又称网络爬虫或网络蜘蛛,主要用于从互联网或局域网下载各种资源。如html静态页面、图片文件、js代码等。网络爬虫的主要目的是为其他系统提供数据源,如搜索引擎(谷歌、百度等)、深度学习、数据分析、大数据, API 服务等。这些系统属于不同的领域,并且是异构的,因此通过一个网络爬虫为所有这些系统提供服务肯定是不可能的。因此,在学习网络爬虫之前,首先要了解网络爬虫的分类。

  如果按照爬取数据的范围来分类,网络爬虫可以分为以下几类。

  全网爬虫:用于爬取整个互联网的数据,主要用作搜索引擎(如谷歌、百度等)的数据源。

  站内爬虫:与全网爬虫类似,仅用于抓取站内网络资源。主要用作企业内部搜索引擎的数据源。

  有针对性的爬虫:这种爬虫的应用是相当广泛的,我们大部分的讨论都是关于这种爬虫的。这种爬虫只关心特定的数据,比如网页中的PM2.5实时监控数据、天猫胸罩的销售记录、美团网的用户评论等。抓取这些数据的目的是也五花八门,有的用于加工和分拣,有的用于自己的程序,有的用于统计分析,得到一些有价值的结果,比如哪种颜色的文胸卖得最好。

  本文主要讲解第一类爬虫,全网爬虫的实现。

  由于整个互联网的数据太大,这里用一些网页来模拟整个互联网的页面来模拟爬取这些页面。

  这里使用了7个HTML文件来模拟互联网资源,将这7个HTML文件放在本地nginx服务器的虚拟目录中,以便爬取这7个HTML文件。

  整个网络爬虫至少要有一个入口点(通常是门户的首页网站),然后爬虫会爬取这个入口点指向的页面,然后是所有的链接节点(一个节点)在页面中将添加到 href 属性的值中提取。这样会得到更多的Url,然后用同样的方法抓取这些Url指向的HTML页面,然后提取这些HTML页面中a节点的href属性的值,然后继续,直到分析完所有的HTML页面。直到最后。只要任何一个 HTML 页面都可以通过入口点到达,那么所有的 HTML 页面都可以通过这种方式进行爬取。这显然是一个递归过程,下面的伪代码就是用来描述这个递归过程的。

  从前面的描述可以看出,要实现一个全网爬虫,需要以下两个核心技术。

  下载网页资源(html、css、js、json)

  分析网络资源

  假设下载资源是通过download(url)函数完成的,那么url就是要下载的资源的链接。下载函数返回网络资源的文本内容。analyze(html)函数用于分析网页资源,html是下载函数的返回值,即下载的HTML代码。分析函数返回一个列表类型的值,其中收录 HTML 页面中的所有 URL(节点的 href 属性的值)。如果 HTML 代码中没有节点,则分析函数返回一个空列表(长度为 0 的列表)。下面的drawler函数就是下载和分析HTML页面文件的函数。外部程序第一次调用爬虫函数时传入的URL就是入口点HTML页面的链接。

  

  下图是这7个页面的关系图。你可以从index.html页面导航到任意一个html页面,所以只要你从index.html开始爬取,所有的html页面都会被爬取。

  

  从上图可以看出,b.html、aa.html、bb.html和cc.html文件中没有节点,所以这四个HTML文件是递归终止条件。

  下面是基于递归算法的爬虫代码。

  

  

  注意:本文示例使用的是nginx服务器,所以本示例中所有的html页面都应该放在nginx虚拟目录的files子目录下。以便该页面可以被 .

  抓取的效果如下图所示。

  

  蟒蛇训练:

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线