浅析python 通⽤爬⾍和聚焦爬⾍

 更新时间:2020年09月28日 10:36:00   作者:SXT明辉  
这篇文章主要介绍了python 通⽤爬⾍和聚焦爬⾍的相关资料,帮助大家更好的了解和使用python 爬虫,感兴趣的朋友可以了解下

一、爬虫的简单理解

1. 什么是爬虫?

网络爬虫也叫网络蜘蛛,如果把互联网比喻成一个蜘蛛网,那么蜘蛛就是在网上爬来爬去的蜘蛛,爬虫程序通过请求url地址,根据响应的内容进行解析采集数据, 比如:如果响应内容是html,分析dom结构,进行dom解析、或者正则匹配,如果响应内容是xml/json数据,就可以转数据对象,然后对数据进行解析。

2. 爬虫有什么作用?

通过有效的爬虫手段批量采集数据,可以降低人工成本,提高有效数据量,给予运营/销售的数据支撑,加快产品发展。

3. 爬虫业界的情况

目前互联网产品竞争激烈,业界大部分都会使用爬虫技术对竞品产品的数据进行挖掘、采集、大数据分析,这是必备手段,并且很多公司都设立了爬虫工程师的岗位。

4. 合法性

爬虫是利用程序进行批量爬取网页上的公开信息,也就是前端显示的数据信息。因为信息是完全公开的,所以是合法的。其实就像浏览器一样,浏览器解析响应内容并渲染为页面,而爬虫解析响应内容采集想要的数据进行存储。

5. 反爬虫

爬虫很难完全的制止,道高一尺魔高一丈,这是一场没有硝烟的战争,码农VS码农

反爬虫一些手段:

  • 合法检测:请求校验(useragent,referer,接口加签名,等)
  • 小黑屋:IP/用户限制请求频率,或者直接拦截
  • 投毒:反爬虫高境界可以不用拦截,拦截是一时的,投毒返回虚假数据,可以误导竞品决策

二、通用爬虫

根据使⽤场景,⽹络爬⾍可分为 通⽤爬⾍ 和 聚焦爬⾍ 两种.。

1、通⽤爬⾍

通⽤⽹络爬⾍是捜索引擎(Baidu、Google、Yahoo)抓取系统的重要组成部分。主要⽬的是将互联⽹上的⽹⻚下载到本地,形成⼀个互联⽹内容的镜像备份。

⽹络爬⾍的基本⼯作流程如下:

  1. ⾸先选取⼀部分精⼼挑选的种⼦URL;
  2. 将这些 URL 放⼊待抓取 URL 队列;
  3. 从待抓取 URL 队列中取出待抓取在 URL,解析 DNS,并且得到主机的 ip,并将 URL 对应的⽹⻚下载下来,存储进已下载⽹⻚库中。此外,将 这些 URL 放进已抓取 URL 队列。
  4. 分析已抓取 URL 队列中的 URL,分析其中的其他 URL,并且将 URL放⼊ 待抓取 URL 队列,从⽽进⼊下⼀个循环....

2、通⽤搜索引擎(Search Engine)⼯作原理

随着⽹络的迅速发展,万维⽹成为⼤量信息的载体,如何有效地提取并利⽤这些信息成为⼀个巨⼤的挑战,通常⽤户会通过搜索引擎(Yahoo,Google,百度等),来作为访问万维⽹的⼊⼝。

⽽ 通⽤⽹络爬⾍ 是搜索引擎系统中⼗分重要的组成部分,它负责从互联⽹中搜集⽹⻚,采集信息,这些⽹⻚信息⽤于为搜索引擎建⽴索引从⽽提供⽀持,它决定着整个引擎系统的内容是否丰富,信息是否即时,因此其性能的优劣直接影响着搜索引擎的效果。

第⼀步:抓取⽹⻚

搜索引擎通过⼀种有特定规律的软件,来跟踪⽹⻚的链接,从⼀个链接爬到另外⼀个链接,像蜘蛛在蜘蛛⽹上爬⾏⼀样,所以被称为“蜘蛛”也被称为“机器⼈”。

但是搜索引擎蜘蛛的爬⾏是被输⼊了⼀定的规则的,它需要遵从⼀些命令或⽂件的内容。
Robots 协议(也称为爬⾍协议、机器⼈协议等)的全称是“⽹络爬⾍排除标准”(Robots Exclusion Protocol),⽹站通过 Robots 协议告诉搜索引擎哪些⻚⾯可以抓取,哪些⻚⾯不能抓取

https://www.taobao.com/robots...
http://www.qq.com/robots.txt

robots.txt 只是约定,爬⾍遵守或者不遵守完全在于爬⾍作者的意愿。举个例⼦,公交⻋上贴着「请为⽼弱病残孕让座」,但是⼤部分⼈并不⻅得会遵守。⼀般来讲,只有⼤的搜索引擎爬⾍会遵守你⽹站的 robots.txt 协议,其它的爬⾍基本都不会看⼀眼你的 robots.txt 写的是什么。

第⼆步:数据存储

搜索引擎是通过蜘蛛跟踪链接爬⾏到⽹⻚,并将爬⾏的数据存⼊原始⻚⾯数据库。其中的⻚⾯数据与⽤户浏览器得到的 HTML 是完全⼀样的。搜索引擎蜘蛛在抓取⻚⾯时,也做⼀定的重复内容检测,⼀旦遇到权重很低的⽹站上有⼤量抄袭、采集或者复制的内容,很可能就不再爬⾏。

第三步:预处理

搜索引擎将蜘蛛抓取回来的⻚⾯,进⾏各种步骤的预处理。

  • 提取⽂字
  • 中⽂分词
  • 去停⽌
  • 消除噪⾳(搜索引擎需要识别并消除这些噪声,⽐如版权声明⽂字、导 航条、⼴告等……)
  • 正向索引
  • 倒排索
  • 引链接关系计算
  • 特殊⽂件处理
  • ....

除了 HTML⽂件外,搜索引擎通常还能抓取和索引以⽂字为基础的多种⽂件类型,如 PDF、Word、WPS、XLS、PPT、TXT ⽂件等。我们在搜索结果中也经常会看到这些⽂件类型。

但搜索引擎还不能处理图⽚、视频、Flash 这类⾮⽂字内容,也不能执⾏脚本和程序。

第四步:排名,提供检索服务
搜索引擎是根据⼀定的策略、运⽤特定的计算机程序从互联⽹上搜集信息,在对信息进⾏组织和处理后,为⽤户提供检索服务,将⽤户检索相关的信息展示给⽤户的系统。

但是,这些通⽤性搜索引擎也存在着⼀定的局限性:

  1. 不同领域、不同背景的⽤户往往具有不同的检索⽬的和需求,通⽤搜索引擎所返回的结果包含⼤量⽤户不关⼼的⽹⻚。
  2. 通⽤搜索引擎的⽬标是尽可能⼤的⽹络覆盖率,有限的搜索引擎服务器资源与⽆限的⽹络数据资源之间的⽭盾将进⼀步加深。
  3. 万维⽹数据形式的丰富和⽹络技术的不断发展,图⽚、数据库、⾳频、视频多媒体等不同数据⼤量出现,通⽤搜索引擎往往对这些信息含量密集且具有⼀定结构的数据⽆能为⼒,不能很好地发现和获取。
  4. 通⽤搜索引擎⼤多提供基于关键字的检索,难以⽀持根据语义信息提出的查询。

三、聚焦爬⾍(Focused Crawler)

  • 聚焦爬⾍,⼜称主题爬⾍(或专业爬⾍),是“⾯向特定主题”的⼀种⽹络爬⾍程序。它与我们通常所说的爬⾍(通⽤爬⾍)的区别之处就在于,聚焦爬⾍在实施⽹⻚抓取时要进⾏主题筛选。它尽量保证只抓取与主题相关的⽹⻚信息。
  • 聚焦⽹络爬⾍并不追求⼤的覆盖,⽽将⽬标定为抓取与某⼀特定主题内容相关的⽹⻚,为⾯向主题的⽤户查询准备数据资源。
  • 聚焦爬⾍的⼯作流程较为复杂,需要根据⼀定的⽹⻚分析算法过滤与主题⽆关的链接,保留有⽤的链接并将其放⼊等待抓取的 URL 队列。然后,它将根据⼀定的搜索策略从队列中选择下⼀步要抓取的⽹⻚URL,并重复上述过程,直到达到系统的某⼀条件时停⽌。
  • 另外,所有被爬⾍抓取的⽹⻚将会被系统存贮,进⾏⼀定的分析、过滤,并建⽴索引,以便之后的查询和检索;对于聚焦爬⾍来说,这⼀过程所得到的分析结果还可能对以后的抓取过程给出反馈和指导。

以上就是浅析python 通⽤爬⾍和聚焦爬⾍的详细内容,更多关于python 爬虫的资料请关注脚本之家其它相关文章!

相关文章

  • Python SELENIUM上传文件或图片实现过程

    Python SELENIUM上传文件或图片实现过程

    这篇文章主要介绍了Python SELENIUM上传文件或图片实现过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • 对python中类的继承与方法重写介绍

    对python中类的继承与方法重写介绍

    今天小编就为大家分享一篇对python中类的继承与方法重写介绍,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • python使用梯度下降算法实现一个多线性回归

    python使用梯度下降算法实现一个多线性回归

    这篇文章主要为大家详细介绍了python使用梯度下降算法实现一个多线性回归,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • Python中for循环和while循环的基本使用方法

    Python中for循环和while循环的基本使用方法

    这篇文章主要介绍了Python中for循环和while循环的基本使用方法,是Python入门学习中的基础知识,需要的朋友可以参考下
    2015-08-08
  • 如何使用Python 抓取和优化所有网站图像

    如何使用Python 抓取和优化所有网站图像

    我发布了一个通过FTP自动优化新图像的教程。这次我们将抓取整个网站,并在本地优化我们遇到的图像,按URL组织,怎么来操作呢,下面跟随小编一起学习使用Python 抓取和优化所有网站图像的方法,感兴趣的朋友一起看看吧
    2023-02-02
  • python中pika模块问题的深入探究

    python中pika模块问题的深入探究

    这篇文章主要给大家介绍了关于python中pika模块问题的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-10-10
  • 在Python中给Nan值更改为0的方法

    在Python中给Nan值更改为0的方法

    今天小编就为大家分享一篇在Python中给Nan值更改为0的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • Python学习小技巧总结

    Python学习小技巧总结

    本篇文章给大家总结了关于python相关知识点学习的技巧以及难点,有兴趣的朋友可以参考学习下。
    2018-06-06
  • Python中的sort()方法使用基础教程

    Python中的sort()方法使用基础教程

    这篇文章主要介绍了Python中的sort()方法使用基础教程,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-01-01
  • python 中os模块os.path.exists()的用法说明

    python 中os模块os.path.exists()的用法说明

    这篇文章主要介绍了python 中os模块os.path.exists()的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03

最新评论