网络爬虫爬取策略,注意爬虫爬取网站的频率

news/2024/5/20 15:47:53/文章来源:https://blog.csdn.net/lifan_3a/article/details/39667183
网络爬虫(web crawler)又称为网络蜘蛛(web spider)是一段计算机程序,它从互联网上按照一定的逻辑和算法抓取和下载互联网的网页,是搜索引擎的一个重要组成部分。一般的爬虫从一部分 start url开始,按照一定的策略开始爬取,爬取到的新的url在放入到爬取队列之中,然后进行新一轮的爬取,直到抓取完毕为止。

我们看一下crawler一般会遇到什么样的问题吧:

  1. 抓取的网页量很大
  2. 网页更新量也很大,一般的网站,比如新闻,电子商务网站,页面基本是实时更新的
  3. 大部分的网页都是动态的,多媒体,或者封闭的(facebook)

海量网页的存在就意味着在一定时间之内,抓取只能的抓取其中的一部分,因此需要定义清楚抓取的优先级;网页更新的频繁,也就意味着需要抓取最新的网 页和保证链接的有效性,因此一个更有可能带来新网页的列表页显得尤为重要;对于新闻网站,新的网站一般出现在首页,或者在指定的分类网页,但是对于淘宝来 说,商品的更新就很难估计了;动态网页怎么办呢?现在的网页大都有JS和AJAX,抓取已经不是简单的执行wget下载,现代的网页结构需要我们的爬虫更 加智能,需要更灵活的应对网页的各种情况。

因此,对一个通用的爬虫个,我们要定义

  1. 抓取策略,那些网页是我们需要去下载的,那些是无需下载的,那些网页是我们优先下载的,定义清楚之后,能节省很多无谓的爬取
  2. 更新策略,监控列表页来发现新的页面;定期check页面是否过期等等
  3. 抽取策略,我们应该如何的从网页中抽取我们想要的内容,不仅仅包含最终的目标内容,还有下一步要抓取的url
  4. 抓取频率,我们需要合理的去下载一个网站,却又不失效率

抓取策略

使用URL的正则特征是一个简单但却很高效的模式;对于定向抓取,一般的网站的URL有一定的特征,比如可能仅仅关心 .html, .htm, .asp, .aspx, .php, .jsp, .jspx类型的网页;或者是如果可以得到目标网站的正则,则可以大大的降低抓取的数量;又或者我们无需关心某一类网页,比如我们不抓取 bbs.taobao.com下面的内容;仅仅需要抓取淘宝的商品页面(http://item.taobao.com/item.htm?id=\d+ )。通过URL的正则能极大的降低抓取数量;

也可以通过网页的文本特征来确定;不过要复杂得多了,一般需要一定数量已知页面的训练集合,然后提取页面的文本特征,然后通过向量空间模型或者其其他基于主题词提取的模型计算目标网页和训练集网页的距离,决定是否是目标网页。

更新策略

Freshness:表示抓取到的网页是否已经被修改

Age:表示抓取的网页过期的时间

对于更新来说,目标是让平均age时间越小,freshness越高;一般的更新策略有两种:定期批量更新和按更新周期更新;定期批量更新指对一批 URL,按照失效时间定期去刷新,按周期更新指的是按照页面更新变化频率而修正是更新频率,一般来说,更新越频繁的网页更新也就越快。

抽取策略:

XPATH是一个简单直观,但是很有效的一个方案,XPATH能精准的定位网页的任意一个位置,意味着我们可以很精准的抽取页面上的任意位置,当面临很多网站的时候,当然配置XPATH就是一个很艰巨的任务,也许存在一个自适应的XPATH识别的方法。

JS和AJAX

在java下面,HtmlUnit是一个不错的 解决方案,HtmlUnit是Junit 的扩展测试框架之一,该框架模拟浏览器的行为,开发者可以使用其提供的API对页面的元素进行操作,套用官方网站的话HtmlUnit“是Java程序的 浏览器”。HtmlUnit支持HTTP,HTTPS,COOKIE,表单的POST和GET方法,能够对HTML文档进行包装,页面的各种元素都可以被 当作对象进行调用,另外对JavaScript的支持也比较好。一般来说,HtmlUnit是在java环境下解决JS的很好的选择

WebKit包含一个网页引擎WebCore和一个脚本引擎JavaScriptCore,它们分别对应的是KDE的KHTML和KJS;目前比较主流的浏览器Google Chrome和Apple的safari,都是基于WebKit的内核写的。使用浏览器作为抓取能更好的模拟用户浏览的行为,能够天然的解决JS和AJAX等问题,问题可能就是性能是一个瓶颈,

抓取频率

同时开启N个线程抓取一个网站,相信很快就会被对方网站封掉;因此抓取的频率也很重要;抓取网站同时不对对方网站造成压力;在robot.txt协 议里面定义Crawl-delay来确定抓取的频率也是一种网站的通用的做法,对于一般的抓取而言,10到20秒抓取一次是一个比较保险的频率,也有提出 10*t的抓取间隔(t是download时间)比较合理

定向抓取的框架

通用抓取架构,如下图

多线程下载模块(Multi-threaded downloader)

该模块一般包含:

  1. 下载模块,下载网页,并应对一些web的一些错误,包括redirect等等
  2. DNS解析模块,网页数量很多的时候,我们需要一个本地的DNS解析模块来维护domain到IP的映射
  3. 链接抽取模块,抽取下一步要抓取的链接(follow link)

调度模块(schedule)

调度模块是抓取系统的核心,调度模块从url队列里面选择一批url喂到下载模块下载;其中会涉及到

  1. url调度,调度模块按照一定的策略,选取url进入抓取系统
  2. url除重,一定时期之内已经抓取的网页,不再抓取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_764009.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

不修改代码就能优化ASP.NET网站性能的一些方法

阅读目录 开始配置OutputCache启用内容过期解决资源文件升级问题启用压缩删除无用的HttpModule其它优化选项本文将介绍一些方法用于优化ASP.NET网站性能,这些方法都是不需要修改程序代码的。 它们主要分为二个方面: 1. 利用ASP.NET自身的扩展性进行优化。…

另类设计:15个现代简约设计风格网站设计实例

设计师在很多时候想通过使用很多的设计元素或复杂的调色板使一个网站脱颖而出,往往会导致一个网站过度设计,而忽视了最重要的内容。大多数时候,你会发现它更好的做法是采取简约的做法。因此,今天,我们收集了15个新鲜的…

php mysql创建连接_使用PHP和MySQL创建动态网站

php mysql创建连接在你开始前 本教程向您展示如何使用两个开放源代码,跨平台的工具创建动态网站:PHP和MySQL。 先决条件 本教程针对PHP和MySQL的新手开发人员,没有任何先决条件。 简介和安装 网络不再是静态的。 它是动态的。 随着Web信…

网上授课系统java,基于java的校园网络教学网站系统

建立校园精品课程网站,尽可能提高优质教学的利用率,对实现人才培养,促进社会经济发展都能起到十分重要的作用。也可以引导用户主动年该学习,提高学习效率,更为教学双方提供一个进行写作学习和交流的平台。设计开发了创…

100个网站需要的服务器配置,100并发服务器需要什么配置

100并发服务器需要什么配置 内容精选换一换压测是需要模拟用户实际业务操作的真实使用场景,那么并发用户数是模拟一定数量用户操作的一个配置。例如,游戏网站某个时间点进行竞技活动,那么这个时候对设备的要求肯定是最高的。并发用户数就是模…

vue遇到ie兼容问题如何处理_网站遇到降权情况如何处理

在做网站优化的时候,都会遇到过网站降权的情况发生,而网站降权的原因有很多,不一定是黑帽造成的,也有可能是优化过度造成。 那么,网站遇到降权情况如何处理呢?接下来就了解一下吧! 1、做好数据分…

计算机安全证书有问题怎么办,此网站的安全证书有问题如何取消 此网站的安全证书有问题解决方法...

安全证书是用来唯一确认安全电子商务交易方身份的工具。持卡人安全证书是付款卡的一种电子表示。由于它由证书管理中心做了数字签名,因此,任何第三方都无法修改证书的内容。相信大家在第一次访问一些网站时,自动为用户安装此网站的安全证书&a…

当你的IIS需要运行ASP网站时,需要这样配置下你的IIS

1.进入Windows 7的 控制面板->程序和功能->选择左上角的 打开或关闭Windows功能 2.现在出现了安装Windows功能的选项菜单,注意选择的项目,红色箭头所示的地方都要选择上才能正确配置成功。 3.如果在启动iis失败出现下图的错误就是…

最新版支付宝电脑网站支付原理及yii2中集成使用教程

本文章转载自AxiosGao-关于yii2中支付宝电脑网站支付推荐大家关注原作者博客查看更多精彩分享首先我们需要申请支付宝入驻,具体方法可以参照网址:https://open.alipay.com/platform/home.htm根据网站具体流程申请,这些都只需要按照网站提示完…

网站api自己怎么写_简单技巧分享:怎么制作自己的个人网站

随着个人创业的流行,很多个人也需要一个比较详细的网站来展示自己,开展个人业务,或者积累粉丝等等。那么怎么制作自己的个人网站呢?又该怎么制作得更个性好看?下面就跟大家分享下制作方法。上线了个人网站案例&#xf…

想学网站建设与设计的书籍_企业网站建设网站设计应注意SEO

一、 企业网站建设网站设计应该有利于用户。1、网站应该多表扬用户。在用户使用网站服务或功能的过程中,可以整合一些人性化的语言来赞美用户。当用户高兴的时候,他们自然会喜欢你的网站。2、网站应该给用户带来乐趣。结果表明:网页打开速度要…

html获取当前ip_前天,爬取某网站导致IP被封后,我干了这件事……

-点击蓝字关注我们人生苦短,我用Python前天,本人在爬取某网站时,第一次遇到IP被封的情况,等了几个小时之后,还是不行。最后,迫于无奈,还是请出了大招,使用代理IP。今天,闲…

web前端 知识点图 来源 http://www.aseoe.com/show-41-582-1.html

转载于:https://www.cnblogs.com/joycefan311/p/5655335.html

网站缓存

网站技术高速发展的今天,缓存技术已经成为大型网站的一个关键技术,缓存设计好坏直接关系的一个网站访问的速度,以及购置服务器的数量,甚至影响到用户的体验。 网站缓存按照存放的地点不同,可以分为客户端缓存、服务端缓…

编写Google插件,实现自定义现有网站内容

背景:公司项目做完的空档时期,总是很无聊,总不能总是在看技术文档吧,总也要放松下吧,比如看看网络小说(Ps:网络上大部分小说网站都是有广告的,并且广告屏蔽有时还不能完全屏蔽掉,而且网站的样式一看就跟技术论坛技术博文之类的站点不一样的,这个时候要怎么伪装自己在…

网站权限配置管理

今天 一上班 就收到bug的提示,经由查看原来是 权限划分问题; 问题描述:管理员 登陆系统后 发现没有权限编辑 ,我查看代码后发现 已经开发了 是否有权限编辑功能;我登陆大权限账号后 发现这个管理的编辑权限没有开启&a…

网站中三角小图标的制作方法

除了之前随笔中提到的使用图标文字来解决网站中的小图标的问题&#xff0c;还可以手写网站中的小图标&#xff0c;这主要使用到定位的相关知识就可以轻松搞定。 具体代码如下所示&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta cha…

新闻网站项目django--个人资料页

models.py: # 用户信息表 class UserProfile(models.Model):belong_to models.OneToOneField(toUser, related_name"profile") # 所属用户avatar models.FileField(upload_toavatar) # 用户头像def __str__(self):return self.belong_to.usernameforms.py&#x…

seo学习1

第一天一&#xff0c;SEO概念&#xff1a;搜索引擎优化 二&#xff0c;SEO和SEM区别&#xff1a;SEO(自然排名)&#xff0c;点击不需要付费。SEM(竞价&#xff0c;百度广告位5个),点击付费&#xff0c;排名不稳定。 SEO不能马上实现排名&#xff0c;优化周期大概三到四个月。SE…

【问底】李平:大型网站的灵魂——性能(转)

在前一篇随笔 大型网站系统架构的演化中&#xff0c;介绍了大型网站的演化过程&#xff0c;期间穿插了一些技术和手段&#xff0c;我们可以从中看出一个大型网站的轮廓&#xff0c;但想要掌握设计开发维护大型网站的技术&#xff0c;需要我们一步一步去研究实践。所以我打算写一…