如何避免重复爬虫抓取数据 重复同一个网页

分类排行榜
作者:木木博客
作者:木木
作者:何杨
作者:何杨
作者:苗元威
安全、高效、便捷的交易中介平台
中小企业首选SEO、全网营销服务
技术外包平台 一站式网站技术服务
高收益、移动广告、弹窗CPM
做有良心的cms技术服务提供商
提供公众号出售、求购、代售等交易中介以及增值服务。
增值电信业务经营许可证:苏B2-
编辑热线:6-808
A5创业网 版权所有.
扫一扫关注最新创业资讯使用java的html解析器jsoup和jQuery实现一个自动重复抓取任意网站页面指定元素的web应用
日期:&&来源:
  如果你曾经开发过内容聚合类网站的话,使用程序动态整合来自不同页面或者网站内容的功能肯定对于你来说非常熟悉。通常使用的话,我们都会使用到一些HTML的解析,例如,httpparser,最早的整合搜索就是使用httpparser来抓取Google和Baidu的搜索结果,并且整合呈现给搜索用户,这也就是GBin1域名的由来。那么今天呢,我们介绍另外一个超棒的Java的HTML解析器 - ,这个类库可以帮助大家实时的处理HTML。提供了非常方便的API来提取和处理数据,最重要的它使用类似的语法来处理,等,如果你使用过的话,就知道它处理DOM的强大方便之处。主要特性 jsoup实现了的标准,和现代浏览器解析DOM的方式一样。主要功能:可以从URL,文件或者字符串中抓取和解析HTML使用DOM的查询和CSS选择器来查找和解压数据可以处理HTML的属性,元素和文本帮助用户处理递交的内容,并且防止XSS攻击输出干净的HTML基本上可以帮助你处理各种的HTML问题,并且帮助你验证非法的tag,创建一个干净的DOM树。实现一个抓取功能这里我们将实现一个简单的抓取功能,你只需要指定url,并且指定你需要抓取的特定元素,例如,ID或者class。后台我们将使用jsoup抓取,前台使用jQuery美化生成结果。大家需要注意以下几点:&a&的相对路径问题:在你抓取的页面中的链接有可能使用相对路径,你需要处理成绝对路径,否则你在本地服务器上无法正常打开链接&img& 的相对路径问题:同上,你同样也需要处理转化&img&的尺寸问题:如果你抓取的图片特别大,你需要使用代码转换成本地样式,这个你也可以选择使用jQuery在前台处理下载jsoup的jar包后,请加入你的classpath路径,如果你使用jsp,请加入web应用WEB-INF的lib目录中。 Java相关代码如下:Document doc = Jsoup.connect(&/portfolio/lastest.html&).timeout(0).get();Elements items = doc.select(&.includeitem&);以上代码,我们定义jsoup使用一个url来获取HTML,这里使用,这个页面中列出了gbin1最近发布的文章。如果你查看此页面源代码,可以看到,每一个文章都在.includeitem这个class中,因此,我们这里使用doc.select方法来选择对应的class。注意我们这里调用timeout(0),这意味着持续的请求url,缺省为2000。即2秒后超时。大家可以看到这里使用了类似jQuery的链状调用,非常方便。 for (Element item : items) {
Elements links = item.select(&a&);
for(Element link: links){
link.attr(&href&,link.attr(&abs:href&));
Elements imgs = item.select(&img&);
for(Element img: imgs){
img.attr(&src&,img.attr(&abs:src&));
String html = item.html();
out.println(&&li class=\&item\&&& + html + &&/li&&);}以上代码中,我们处理每一个查询到的includeitem元素。查找&a&和&img&,将其中的href元素值修改为绝对路径。link.attr(&abs:href&)以上代码将会得到对应链接的绝对路径,其中属性为abs:href。同理,可以得到图片绝对路径abs:src。代码运行后,我们可以看到修改完的代码, 将他们放置于li中。接下来我们开发控制抓取的页面:在这个页面的实现中,我们使用setInterval方法间隔指定的时间使用调用以上java开发的代码,基本代码如下://Run for first time$('#msg').html('请耐心等待, 页面抓取中 ...').fadeIn(400);//$('#content').html('');$('#content').load('siteproxy.jsp #result', {url:url, elem:element}, function(){ $('#msg').html('抓取已完成').delay(1500).fadeOut(400);})
以上代码非常简单,我们使用jQuery的load方法来调用siteproxy.jsp,然后取得siteproxy.jsp生成页面中的#result元素,即抓取内容。如果你不熟悉的方法,请参考这个系列文章:为了能够让代码指定间隔时间运行抓取,我们将方法放入setinterval中,如下:runid = setInterval(
function getInfo(){ $('#msg').html('请耐心等待, 页面抓取中 ...').fadeIn(400); //$('#content').html(''); $('#content').load('siteproxy.jsp #result', {url:url, elem:element}, function(){
$('#msg').html('抓取已完成').delay(1500).fadeOut(400); })}, interval*1000);通过以上方法,我们可以在用户触发抓取后,每隔指定时间触发抓取动作。完整js代码如下:$(document).ready(function(){ var url, element, interval, $('#start').click(function(){
url = $('#url').val();
element = $('#element').val();
interval = $('#interval').val();
//Run for first time
$('#msg').html('请耐心等待, 页面抓取中 ...').fadeIn(400);
//$('#content').html('');
$('#content').load('siteproxy.jsp #result', {url:url, elem:element}, function(){
$('#msg').html('抓取已完成').delay(1500).fadeOut(400);
runid = setInterval(
function getInfo(){
$('#msg').html('请耐心等待, 页面抓取中 ...').fadeIn(400);
//$('#content').html('');
$('#content').load('siteproxy.jsp #result', {url:url, elem:element}, function(){
$('#msg').html('抓取已完成').delay(1500).fadeOut(400);
}, interval*1000); });
$('#stop').click(function(){
$('#msg').html('抓取已暂停').fadeIn(400).delay(1500);
clearInterval(runid); }); });将以上jsp和html文件部署以后,将可以看到如下界面: 我们需要设置抓取的url和页面元素,这里缺省是,元素为.includeitem,点击开始抓取,可以看到应用抓取如下内容: 注意这里缺省间隔时间为30秒,30秒后会自动重新抓取内容。你可以尝试抓取, 元素.itemt, 间隔时间10秒,能得到如下内容: 你可以看到和微博首页的自动刷新内容一样。 大家可以把这个工具当做页面重复刷新工具,可以帮助你监控某个网站某个部分内容,当然,你也可以使用它来动态刷新你的网站,提高你的alexa排名。希望大家喜欢这个工具应用,如果你有任何建议和问题,请给我们留言!谢谢!
喜欢我们的文章请您与朋友分享:
除特别声明外, 本站所有内容皆为原创,且基于创作共享的 署名-非商业使用-相同方式分享 2.5 协议发布. 转载时请务必以超链接形式标明文章出处和作者信息【图文】解析网站重复度的产生_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
解析网站重复度的产生
||文档简介
东莞祥奔网络科技有限公司,专注于网站建...|
总评分0.0|
&&解​析​网​站​重​复​度​的​产​生
大小:1.12MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢如何避免网站页面被蜘蛛重复的抓取
网站的网页数量非常大,蜘蛛进行抓取是一个很大的工程,网页的抓取需要费非常多线路带宽、硬件资源、时间资源等
相似度页面和重复页面的来源
降低页面的相似度就要求我们做好每篇文章和内容,尽量或者不从互联网上转载已经被搜索引擎收录的内容,应该进行深层次编辑或者原创。网站的重复页面主要是来自互联网的转载内容,网站重复发布的内容,网站自身的动态评论页面,网站404页面,网站错误页面等这些都是可能大量产生网站重复页面的来源。
网站存在大量的相似页面或者重复页面对网站是致命的,大量的相似度页面和重复页面会影响搜索引擎对网站的收录,并且影响网站的相关性,严重者会造成搜索引擎的降权惩罚,甚至造成已收录页面被搜索引擎删除。导致关键词排名下降,网站排名下降,流量下滑等。所以减少您网站的相似度页面和重复页面是至关重要的。
我们要如何避免网站页面被蜘蛛重复的抓取呢? &&
一、通过robots文件来把这个页面来屏蔽掉
  Disallow:&/page/&#限制抓取Wordpress分页如查你的网站有需要也可以把下面的语句一并写上,避免出现过多的重复页面。&*&Disallow:&/categorytrackback/&#限制抓取Trackback内容&*&Disallow:/category/*&#限制抓取所有分类列表&什么是蜘蛛,也叫爬虫,其实是一段程序。这个程序的功能是,沿着你的网站的URL一层层的读取一些信息,做简单处理后,然后返馈给后台服务器进行集中处理。我们必需了解蜘蛛的喜好,对网站优化才能做到更好。接下来我们谈谈蜘蛛的工作过程。
二、尽量用静态页面或伪静态页面
  蜘蛛在处理动态页信息是面临的难题。动态页,是指由程序自动生成的页面。现在互联网发达程序开发脚本语言越来越多,自然开发出来的**页类型也越来越多,如jsp、asp、php等等一些语言。蜘蛛很难处理这些脚本语言生成的网页。优化人员在优化的时候,总是强调尽量不要采用JS代码,蜘蛛要完善处理这些语言,需要有自己的脚本程序。在进行网站优化,减少一些不必要的脚本代码,以便蜘蛛爬行抓取,少导致page页面的重复抓取! 
作为一个站长,作为一个Seoer,要做好网站站的优化任重而道远,不仅要做好站本身,还要照顾到搜索引擎的抓取喜好和偏爱!
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 scrapy 重复抓取 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信