简述python爬虫原理:如何用爬虫爬取数据

x
用微信扫描二维码
分享至好友和朋友圈

  互联网+时代来了,各种新的技术应孕而生,对于互联网而言,如果我们把互联网比作一张大的蜘蛛网,数据便是存放于蜘蛛网的各个节点,而爬虫就是一只小蜘蛛,沿着网络抓取自己的猎物(数据)爬虫指的是:向网站发起请求,获取资源后分析并提取有用数据的程序,存放起来使用。

  

  网络爬虫是什么?

  网络爬虫是一种用来抓取网页资源的程序工具。像谷歌,百度等知名搜索引擎就是采用网络爬虫把全网的网页资源收集起来,建立索引,用于搜索。

  python网络爬虫实现原理

  互联网网页可以看成是一张超大图,每个网页是一个节点,网页中指向其他网页的链接是边。那么,可以这样实现全网网页收集:以某一个网页为起点,下载并处理该网页,解析里面的链接,所得的URL加入下载队列。这个过程其实就是图的遍历过程,可以是深度优先或者广度优先遍历,取决于下载队列如何维护。简单地,网络爬虫可以由以下部分组成:

  1、下载模块

  对于一个给定的URL,下载该网页。如果从零开始实现,工作量还是挺大的:解析URL里面的域名并通过DNS查询域名对应的IP;建立一个到该IP的TCP连接;发送一个HTTP请求;接收并解析HTTP响应;保存该网页资源。说白了,就是给定一个URL,用HTTP协议请求一个网页资源的过程。

  2、下载队列

  下载队列保存从网页中解析出来将用于获取网页资源的URL:每次从下载队列里面取出一个URL,通过下载模块下载该网页,解析该网页里面的URL并加入下载队列,这样就可以源源不断地进行网页抓取。如果用FIFO实现下载队列,那么对网页资源的遍历就是广度优先的;如果用LIFO实现下载队列,那么对网页资源的遍历就是深度优先的。

  3、重复检查

  如果某个网页里面包含了已经下载的网页的URL怎么办呢?肯定不能再重复下载一次。如何避免就是重复检查模块要做的事。可以用一个set把所有遇到的URL记录下来,每次下载模块获取一个网页,将其URL放到该set;解析网页所获得的URL,如果在该set中已经存在了,就不要加入下载队列了。当然了,这只是最直白的实现方式,工程上为了应对大量的URL,一般采用布隆过滤器。

  爬虫爬行策略

  我们已经介绍了,聚焦网络爬虫,需要确定URL的优先级,即爬虫应该先爬取哪一个,后爬取哪一个?爬行策略主要有:深度优先爬行策略、广度优先爬行策略、大站优先爬行策略、反链策略、其他爬行策略等。假如此时网页ABCDEFG都在爬行队列中,那么按照不同的爬行策略,其爬取的顺序是不同的。比如按照深度优先的顺序,爬取顺序可能是A->D->E->B->C->F->G;按照广度优先的爬行策略,爬行顺序可能是A->B->C->D->E->F->G。我们也可以采用大站爬行策略。我们可以按对应网页所属的站点进行归类,如果某个网站的网页数量多,那么则称其为大站,按照这种策略,网页数量越多的网站优先级越高。

  一个网站的反链接数,指的是被其他网页指向的次数,这个次数在一定程度上代表着该网页被其他网页的推荐次数。所以,如果按反链策略去爬行的话,所以如果按反链策略去爬行的话,那么哪个网页的优先级越高。其他爬行策略还有很多,比如:OPIC策略,PartialPageRank策略等。

  网页更新策略

  一个网站的网页经常会更新,作为爬虫方,在网页更新后,我们则需要对这些网页进行重新爬取,那么什么时候去爬取合适呢?如果网站更新过慢,而爬虫爬取的过于频繁,则会带来服务器资源的浪费。若网站更新过快,但爬虫提取的时间间隔较长,则我们爬去的内容版本会过老,不利于新内容的爬取。显然,网站的更新频率与爬虫访问网站的频率越接近,则效果越好,当然,爬虫服务器资源有限的时候,此时爬虫也需要根据对应的策略,让不同网页具有不同的更新优先级,优先极高的网页更新,将获得较快的爬取响应。

  本文链接:http://www.cnitedu.cn/it/share/20198368.html

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

跟贴 跟贴 2 参与 2
© 1997-2020 网易公司版权所有 About NetEase | 公司简介 | 联系方法 | 招聘信息 | 客户服务 | 隐私政策 | 广告服务 | 网站地图 | 意见反馈 | 不良信息举报

IT培训

专注IT技能资讯分享

头像

IT培训

专注IT技能资讯分享

7332

篇文章

533

人关注

列表加载中...
请登录后再关注
x

用户登录

网易通行证/邮箱用户可以直接登录:
忘记密码