爬虫过程中也会经历一些绝望啊,比如被网站封IP、比如各种奇怪的验证码、userAgent访问限制、各种动态加载等等。下面是小编为您整理的关于python爬虫是什么意思,希望对你有所帮助。

python爬虫是什么意思

python爬虫即网络爬虫,网络爬虫是一种程序,主要用于搜索引擎,它将一个网站的所有内容与链接进行阅读,并建立相关的全文索引到数据库中,然后跳到另一个网站.样子好像一只大蜘蛛.

当人们在网络上(如google)搜索关键字时,其实就是比对数据库中的内容,找出与用户相符合的.网络爬虫程序的质量决定了搜索引擎的能力,如google的搜索引擎明显要比百度好,就是因为它的网络爬虫程序高效,编程结构好.

网络爬虫原理

Web网络爬虫系统的功能是下载网页数据,为搜索引擎系统提供数据来源。很多大型的网络搜索引擎系统都被称为基于 Web数据采集的搜索引擎系统,比如 Google、Baidu。由此可见Web 网络爬虫系统在搜索引擎中的重要性。网页中除了包含供用户阅读的文字信息外,还包含一些超链接信息。Web网络爬虫系统正是通过网页中的超连接信息不断获得网络上的其它网页。正是因为这种采集过程像一个爬虫或者蜘蛛在网络上漫游,所以它才被称为网络爬虫系统或者网络蜘蛛系统,在英文中称为Spider或者Crawler。

Web网络爬虫系统一般会选择一些比较重要的、出度(网页中链出超链接数)较大的网站的URL作为种子URL集合。网络爬虫系统以这些种子集合作为初始URL,开始数据的抓取。因为网页中含有链接信息,通过已有网页的 URL会得到一些新的 URL,可以把网页之间的指向结构视为一个森林,每个种子URL对应的网页是森林中的一棵树的根节点。这样,Web网络爬虫系统就可以根据广度优先算法或者深度优先算法遍历所有的网页。由于深度优先搜索算法可能会使爬虫系统陷入一个网站内部,不利于搜索比较靠近网站首页的网页信息,因此一般采用广度优先搜索算法采集网页。Web网络爬虫系统首先将种子URL放入下载队列,然后简单地从队首取出一个URL下载其对应的网页。得到网页的内容将其存储后,再经过解析网页中的链接信息可以得到一些新的URL,将这些URL加入下载队列。然后再取出一个URL,对其对应的网页进行下载,然后再解析,如此反复进行,直到遍历了整个网络或者满足某种条件后才会停止下来。

学习 Python 包并实现基本的爬虫过程

大部分爬虫都是按"发送请求——获得页面——解析页面——抽取并储存内容”这样的流程来进行,这其实也是模拟了我们使用浏览器获取网页信息的过程。

Python中爬虫相关的包很多:urllib、requests、bs4、scrapy、pyspider 等,建议从requests+Xpath 开始,requests 负责连接网站,返回网页,Xpath 用于解析网页,便于抽取数据。

如果你用过 BeautifulSoup,会发现 Xpath 要省事不少,一层一层检查元素代码的工作,全都省略了。这样下来基本套路都差不多,一般的静态网站根本不在话下,豆瓣、糗事百科、腾讯新闻等基本上都可以上手了。

当然如果你需要爬取异步加载的网站,可以学习浏览器抓包分析真实请求或者学习Selenium来实现自动化,这样,知乎、时光网、猫途鹰这些动态的网站也可以迎刃而解。

学习数据库基础,应对大规模数据存储

爬回来的数据量小的时候,你可以用文档的形式来存储,一旦数据量大了,这就有点行不通了。所以掌握一种数据库是必须的,学习目前比较主流的 MongoDB 就OK。

MongoDB 可以方便你去存储一些非结构化的数据,比如各种评论的文本,图片的链接等等。你也可以利用PyMongo,更方便地在Python中操作MongoDB。

因为这里要用到的数据库知识其实非常简单,主要是数据如何入库、如何进行提取,在需要的时候再学习就行。

网络爬虫的基本工作流程如下:

1.首先选取一部分精心挑选的种子URL;

2.将这些URL放入待抓取URL队列;

3.从待抓取URL队列中取出待抓取在URL,解析DNS,并且得到主机的ip,并将URL对应的网页下载下来,存储进已下载网页库中。此外,将这些URL放进已抓取URL队列;

4.分析已抓取URL队列中的URL,分析其中的其他URL,并且将URL放入待抓取URL队列,从而进入下一个循环。

2.3 抓取策略

在爬虫系统中,待抓取URL队列是很重要的一部分。待抓取URL队列中的URL以什么样的顺序排列也是一个很重要的问题,因为这涉及到先抓取那个页面,后抓取哪个页面。而决定这些URL排列顺序的方法,叫做抓取策略。下面重点介绍几种常见的抓取策略:

2.3.1 深度优先遍历策略

深度优先遍历策略是指网络爬虫会从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接。我们以下面的图为例:

遍历的路径:A-F-G E-H-I B C D

2.3.2 宽度优先遍历策略

宽度优先遍历策略的基本思路是,将新下载网页中发现的链接直接**待抓取URL队列的末尾。也就是指网络爬虫会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续抓取在此网页中链接的所有网页。还是以上面的图为例:

遍历路径:A-B-C-D-E-F G H I

2.3.3 反向链接数策略

反向链接数是指一个网页被其他网页链接指向的数量。反向链接数表示的是一个网页的内容受到其他人的推荐的程度。因此,很多时候搜索引擎的抓取系统会使用这个指标来评价网页的重要程度,从而决定不同网页的抓取先后顺序。

在真实的网络环境中,由于广告链接、作弊链接的存在,反向链接数不能完全等他我那个也的重要程度。因此,搜索引擎往往考虑一些可靠的反向链接数。

2.3.4 Partial PageRank策略

Partial PageRank算法借鉴了PageRank算法的思想:对于已经下载的网页,连同待抓取URL队列中的URL,形成网页集合,计算每个页面的PageRank值,计算完之后,将待抓取URL队列中的URL按照PageRank值的大小排列,并按照该顺序抓取页面。

如果每次抓取一个页面,就重新计算PageRank值,一种折中方案是:每抓取K个页面后,重新计算一次PageRank值。但是这种情况还会有一个问题:对于已经下载下来的页面中分析出的链接,也就是我们之前提到的未知网页那一部分,暂时是没有PageRank值的。为了解决这个问题,会给这些页面一个临时的PageRank值:将这个网页所有入链传递进来的PageRank值进行汇总,这样就形成了该未知页面的PageRank值,从而参与排序。

2.3.5 OPIC策略策略

该算法实际上也是对页面进行一个重要性打分。在算法开始前,给所有页面一个相同的初始现金(cash)。当下载了某个页面P之后,将P的现金分摊给所有从P中分析出的链接,并且将P的现金清空。对于待抓取URL队列中的所有页面按照现金数进行排序。

2.3.6 大站优先策略

对于待抓取URL队列中的所有网页,根据所属的网站进行分类。对于待下载页面数多的网站,优先下载。这个策略也因此叫做大站优先策略。

python爬虫什么意思-终于知道python爬虫是什么意思相关推荐

  1. python爬虫怎么赚钱-终于找到python爬虫怎么挣钱

    什么是Python,网络给出的解释是一种面向对象.解释型计算机程序设计语言.那python爬虫怎么赚钱?下面是小编为您整理的关于python爬虫怎么挣钱,希望对你有所帮助. python爬虫怎么挣钱 ...

  2. python爬虫入门实例-终于领会python爬虫入门示例

    随着人工智能 大数据的火热 Python成为了广大科学家和普通大众的学习语言.在学习Python的过程中 有很多人感到迷茫 不知道自己该从什么地方入手,今天我们就来说一些新手该如何学习Python编程 ...

  3. python爬虫赚钱途径-终于领会python爬虫赚钱的途径

    python爬虫怎么赚钱?python爬虫爬到有价值的数据,进行建模,挖掘就会产生商业价值,下面是小编为您整理的关于python爬虫赚钱的途径,希望对你有所帮助. python爬虫赚钱的途径 Pyth ...

  4. python菜鸟基础教程-终于懂得python入门菜鸟教程

    Python语言是一种典型的脚本语言,简洁,语法约束少,接近人类语言.有丰富的数据结构,例如列表.字典.集合等.具有可移植性,支持面向过程和面向对象编程,并且开源.以下是小编为你整理的python入门 ...

  5. python初学者怎么入门-终于晓得python入门后怎么学精

    列表的元素是可以变动的,比如增加.删除.修改,不过需要注意的是,列表的元素不是基本数据类型,都是一个个的标识符引用对象.以下是小编为你整理的python入门后怎么学精 如图,先定义一个列表 a = [ ...

  6. 自学python需要安装什么-终于明白python需要学什么

    在学习完Python的基础知识之后,有很多朋友为自己接下来要干什么感到迷茫.不知道应该通过什么样的项目来锻炼自己编程水平和思维能力.接下来我就给大家说几个适合Python的新手项目和练手项目,Pyth ...

  7. python新手入门教程-终于知晓python新手练习教程

    Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.作为今年来越来越流行的语言,我们该如何学习或者转行学习Python呢,这里小迹为大家介绍如何入门学习Python.以下是小编为你整理 ...

  8. python语言的理解-终于明白python语言的特点是什么

    算术最基本的操作符,是小学数学的+ - * / ,对于整数,还可以用+=,*=的操作符,对自身的值进行改变(对象引用).以下是小编为你整理的python语言的特点是什么 对于整数的加减乘除,但需要注意 ...

  9. python是什么语言-终于明白python语言的特点是什么

    算术最基本的操作符,是小学数学的+ - * / ,对于整数,还可以用+=,*=的操作符,对自身的值进行改变(对象引用).以下是小编为你整理的python语言的特点是什么 对于整数的加减乘除,但需要注意 ...

最新文章

  1. 小结spring和struts整合的三类方式
  2. 改性沥青弹性恢复计算_阿里云计算的发展现状是什么,主要的产品有哪些?
  3. Tech·Ed 2007大会课程内容
  4. 面试官:“你大学做过真实项目吗?”
  5. Android Service学习之AIDL, Parcelable和远程服务
  6. BI商业智能在企业中的重要性
  7. html在线拖拽环绕,用HTML5原生实现拖放或排序
  8. pwnable.tw dubblesort
  9. 【ZBrush笔刷】实用笔刷和Alpah下载,及笔刷使用方法
  10. java poi 合并单元格
  11. case when then 中判断null的方法
  12. 怎么把分开的pdf放在一起_怎么把合并的pdf文件拆分?
  13. java的cursor_JAVA中类 Cursor的定义.
  14. 电脑录音效果不佳的问题解决
  15. 用项目管理思维做一个活动策划
  16. Android Drawable设计圆角
  17. 一起学习用Verilog在FPGA上实现CNN----(三)激活层设计
  18. 算法笔记学习PAT甲级解题记录
  19. 黑马程序员 static的类可以用类名直接调用,无需创建对象
  20. 【Python入门教程】第38篇 filter()函数

热门文章

  1. java gpu hash_比特币 GPU 挖矿 Sha256 Hash实现(OpenCL)
  2. 分布式系统关注点(8)——99%的人都能看懂的「熔断」以及最佳实践
  3. HDU 5934:Bomb(强连通缩点)
  4. POJ-1903 Jurassic Remains
  5. C#中符号的作用备忘
  6. 蓝桥杯:十六进制转八进制
  7. [10月4日的脚本] 获取Office365邮箱文件夹的权限
  8. 慎用javascript:void(0) 【转】
  9. Visual Studio 2010 美女与程序员的爱情网剧+《耀和你一起》壁纸包
  10. Bailian3470 整理扑克牌【贪心+二分】