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


Posted in Python onSeptember 28, 2020

一、爬虫的简单理解

1. 什么是爬虫?

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

2. 爬虫有什么作用?

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

3. 爬虫业界的情况

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

4. 合法性

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

5. 反爬虫

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

反爬虫一些手段:

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

二、通用爬虫

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

1、通⽤爬⾍

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

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

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

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

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

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

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

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

第⼀步:抓取⽹⻚

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

但是搜索引擎蜘蛛的爬⾏是被输⼊了⼀定的规则的,它需要遵从⼀些命令或⽂件的内容。
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 相关文章推荐
Python3.6简单操作Mysql数据库
Sep 12 Python
基于python log取对数详解
Jun 08 Python
Python图像的增强处理操作示例【基于ImageEnhance类】
Jan 03 Python
Python设计模式之备忘录模式原理与用法详解
Jan 15 Python
Python常用的json标准库
Feb 19 Python
Python常见数据类型转换操作示例
May 08 Python
使用Python调取任意数字资产钱包余额功能
Aug 15 Python
Django stark组件使用及原理详解
Aug 22 Python
python让函数不返回结果的方法
Jun 22 Python
如何在python中实现线性回归
Aug 10 Python
Python实例方法、类方法、静态方法区别详解
Sep 05 Python
只用40行Python代码就能写出pdf转word小工具
May 31 Python
Scrapy 配置动态代理IP的实现
Sep 28 #Python
Scrapy中如何向Spider传入参数的方法实现
Sep 28 #Python
详解向scrapy中的spider传递参数的几种方法(2种)
Sep 28 #Python
小结Python的反射机制
Sep 28 #Python
scrapy与selenium结合爬取数据(爬取动态网站)的示例代码
Sep 28 #Python
scrapy结合selenium解析动态页面的实现
Sep 28 #Python
互斥锁解决 Python 中多线程共享全局变量的问题(推荐)
Sep 28 #Python
You might like
PHP中iconv函数知识汇总
2015/07/02 PHP
Javascript注入技巧
2007/06/22 Javascript
Javascript实现的类似Google的Div拖动效果代码
2011/08/09 Javascript
jquery键盘事件使用介绍
2011/11/01 Javascript
Extjs优化(二)Form表单提交通用实现
2013/04/15 Javascript
封装的jquery翻页滚动(示例代码)
2013/11/18 Javascript
js自动查找select下拉的菜单并选择(示例代码)
2014/02/26 Javascript
使用 TypeScript 重新编写的 JavaScript 坦克大战游戏代码
2015/04/07 Javascript
JQuery控制radio选中和不选中方法总结
2015/04/15 Javascript
jQuery实现div拖拽效果实例分析
2016/02/20 Javascript
JavaScript Ajax编程 应用篇
2016/07/02 Javascript
js原生之焦点图转换加定时器实例
2016/12/12 Javascript
深入理解Javascript箭头函数中的this
2017/02/13 Javascript
微信小程序  http请求封装详解及实例代码
2017/02/15 Javascript
angular十大常见问题
2017/03/07 Javascript
详解微信小程序文件下载--视频和图片
2019/04/24 Javascript
微信小程序全局变量的设置、使用、修改过程解析
2019/09/24 Javascript
[15:20]DOTA2亚洲邀请赛总决赛开幕式表演:羽泉献唱
2017/04/05 DOTA
python算法学习之计数排序实例
2013/12/18 Python
浅析python递归函数和河内塔问题
2017/04/18 Python
python redis 删除key脚本的实例
2019/02/19 Python
Python3.5迭代器与生成器用法实例分析
2019/04/30 Python
django如何自己创建一个中间件
2019/07/24 Python
Python 矩阵转置的几种方法小结
2019/12/02 Python
在Tensorflow中实现梯度下降法更新参数值
2020/01/23 Python
Python 3.8 新功能来一波(大部分人都不知道)
2020/03/11 Python
HTML5中5个简单实用的API(第二篇,含全屏、可见性、拍照、预加载、电池状态)
2014/05/07 HTML / CSS
Stuarts London美国/加拿大:世界领先的独立男装零售商之一
2019/03/18 全球购物
世界上最大的冷却器制造商:Igloo Coolers
2019/07/23 全球购物
党课学习思想汇报
2014/01/02 职场文书
销售人员职业生涯规划范文
2014/03/01 职场文书
党的群众路线调研报告
2014/11/03 职场文书
学术会议领导致辞
2015/07/29 职场文书
《半截蜡烛》教学反思
2016/02/19 职场文书
创业计划书之奶茶店开店方案范本!
2019/08/06 职场文书
Java比较两个对象中全部属性值是否相等的方法
2021/08/07 Java/Android