用Java写java实现网络爬虫虫,在网站在抓取关键文章

java 如何实现网络爬虫,爬取新闻评论,新闻内容可以获取,但是评论无法在网页源码显示。_百度知道
java 如何实现网络爬虫,爬取新闻评论,新闻内容可以获取,但是评论无法在网页源码显示。
,那么怎样才能获取新闻的评论信息呢,求高人指点啊,,,,
提问者采纳
从中找到其获取评论的AJAX接口,然后抓之。这样简单。还可以用爬虫操作一个浏览器,那么抓取有一定难度。你的爬虫需要能够解释JS,则可以针对这些网站开发专用的蜘蛛。人工分析其JS,并解惑JS的内容。但如果你只针对少数的网站进行抓取,如果评论是通过AJAX显示的,通过浏览器的接口获取其运行完成后的显示的内容,
提问者评价
谢谢,不好意思分有点少。有点头绪了,用爬虫操作一个浏览器,这个还是不清楚如何操作,需要特殊的包吗?
其他类似问题
网络爬虫的相关知识
等待您来回答
您可能关注的推广
下载知道APP
随时随地咨询
出门在外也不愁JAVA高级软件开发工程师(网络爬虫,数据抓取)
&&&&&&&&公司行业:&&计算机软件公司性质:&&民营公司公司规模:&&50-150人 &&&
发布日期:工作地点:广州招聘人数:若干学&&&&历:大专薪水范围:&&&
职位职能:&&高级软件工程师&&SEO搜索引擎优化
岗位职责:1、对指定的多个网站的网页进行网页抓取、数据的提取、清洗、入库;2、开发自动抓取功能,根据运营部门提供的网站地址,抓取需要的信息、替重并按照一定规则筛选及做信息的自动推送;3、通过开放平台api提取数据。4、 参与核心爬虫系统架构设计、数据库设计;5、 熟悉搜索引擎/spider原理,对互联网页面的抓取质量负责;岗位要求:1.对数据挖掘算法有深入了解,特别是分类、聚类、文本内容挖掘等方法;2.掌握网络爬虫开发原理,对互联网各种类型数据交互模式熟悉,知道如何处理需登录网站、动态网页等各种情况下的数据采集方法;3.负责互联网资源的特征挖掘,主要对网页特征、站点结构、资源变化趋势等进行数据分析和特征建模;4.设计策略和算法,提升网页抓取的效率和质量,进一步解决系统的网页排重、垃圾控制、资源划分等问题;5.分析爬虫系统的技术缺陷,对策略架构做出合理地调整和改进。6.熟练使用各类数据挖掘算法7.眼界开阔,良好的创意思维、理解能力;8、有网络爬虫(数据抓取)程序开发经验者优先; 有自然语言处理、搜索引擎、数据挖掘等相关开发经验者。
*提醒:用人单位招聘人才,以任何名义向应聘者收取费用都属于违法(如体检费、兼职淘宝刷钻等),请应聘者提高警惕!
  北京众成联信信息技术有限公司是一家专注于移动互联网和云计算技术的软件公司,为移动运营商及其集团客户提供短彩信、手机应用、移动商务等业务的SaaS平台和服务。  公司技术实力雄厚,并借助与各地移动运营商的合作,共同为企业客户打造无线互联网运营服务平台,为企业提供崭新的基于移动网络的市场营销和移动办公、管理手段,使企业管理者和业务人员可以随时随地获取信息,提高企业运作效率,增强企业的竞争能力。  作为北京众成联信的投资公司,广东创我科技发展有限公司是移动领域的商业智能(BI)解决方案的优秀提供商,也是广东省首批“双软”认证企业和高新技术企业,珠海市十强软件企业,在2001年4月份获得IDGVC风险投资后,公司的规模和实力更是如虎添翼,公司的发展步入新阶段。  做“企业移动信息化专家”,助力企业信息化发展是我们的目标,“专注、专业”是公司的经营理念,公司拥有灵活高效的人才培养和晋升机制,为员工提供富有激励性的薪酬、良好的工作环境和广阔的发展空间,欢迎有识之士加入!&&&&现公司正在全力往大数据方向发展,欢迎有识之士加入~!非常期待与您一起共创未来!公司网址:.cn
地区人才网招聘地区人才网招聘地区人才网招聘地区人才网招聘地区人才网招聘地区人才网招聘地区人才网招聘地区人才网招聘地区人才网招聘地区人才网招聘地区人才网招聘地区人才网招聘地区人才网招聘地区人才网招聘地区人才网招聘地区人才网招聘地区人才网招聘地区人才网招聘地区人才网招聘地区人才网招聘地区人才网招聘地区人才网招聘地区人才网招聘地区人才网招聘地区人才网招聘地区人才网招聘地区人才网招聘地区人才网招聘地区人才网招聘地区人才网招聘地区人才网招聘地区人才网招聘
新版企业粉丝团全新上线,找好工作的梦想不再是幻想,快来加入与企业对话!CodeOfJavaSpider 实现的简单网络爬虫,可以抓取网页和其中的URL Develop 182万源代码下载-
&文件名称: CodeOfJavaSpider
& & & & &&]
&&所属分类:
&&开发工具: Java
&&文件大小: 4 KB
&&上传时间:
&&下载次数: 29
&&提 供 者:
&详细说明:Spider Java 实现的简单网络爬虫,可以抓取网页和其中的URL-Java Spider
文件列表(日期:)(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&近期下载过的用户:
&相关搜索:
&输入关键字,在本站182万海量源码库中尽情搜索:
&[] - 该爬虫设计的关键:
1.control,交互界面,对爬虫的控制
2.analysis HTML,对HTML进行分析,从中提取心得hot link.
3.多线程.并发抓取页面
&[] - 一个Java的网络爬虫,可用于搜索引擎
&[] - 最强的爬虫工程,只需要简单的配置即能实现自己的功能
&[] - Java模仿千千静听音乐播放器源代码,界面超漂亮,程序代码简洁。编译时需要在Eclipse下打开,并导入源码包目录下的必要库文件才行。
&[] - 一个简单的在互联网上抓包的程序,仅供大家参考
&[] - 利用JAVA实现的网络蜘蛛,具有从网络抓取网页的功能
&[] - 蜘蛛登陆追捕器 (网络版)0.12 版
Spider是搜索引擎的一个自动程序。它的作用是访问互联网上的html网页,建立索引数据库,使用户能在搜索引擎中搜索到贵网站的网页。 搜索引擎派出“蜘蛛”程序检索现有网站一定IP地址范围内的新网站,而对现有网站的更新则根据该网站的等级不同有快慢之分。一
&[] - 结合struts2,spring,hibernate开发的框架
&[] - 这是一个改进的网络爬虫源代码,采用多线程技术对网页进行采集.
&[] - 一个非常强悍的搜索引擎,包括网络蜘蛛,能实现网页排名自己动手写网络爬虫(附CD-ROM光盘1张) _正版电子书在线阅读_百度阅读
自己动手写网络爬虫(附CD-ROM光盘1张)
支持以下平台(点击下载客户端)
畅销飙升榜
自己动手写网络爬虫(附CD-ROM光盘1张)
亚马逊评分:
您也可能感兴趣
《自己动手写网络爬虫》介绍了网络爬虫开发中的关键问题与Java实现。主要包括从互联网获取信息与提取信息和对Web信息挖掘等内容。《自己动手写网络爬虫》在介绍基本原理的同时注重辅以具体代码实现来帮助读者加深理解,书中部分代码甚至可以直接使用。《自己动手写网络爬虫》适用于有Java程序设计基础的开发人员。同时也可以作为计算机相关专业本科生或研究生的参考教材。
《自己动手写网络爬虫》是国内第一本专门讲解网络爬虫开发的书籍,介绍如何应用云计算架构开发分布式爬虫。猎兔搜索工程师多年项目经验总结深入介绍Web数据挖掘实现过程光盘中提供了高效的代码解决方案案例均使用流行的Java语言编写
第1篇 自己动手抓取数据第1章 全面剖析网络爬虫 31.1 抓取网页 41.1.1 深入理解URL 41.1.2 通过指定的URL抓取网页内容 61.1.3 Java网页抓取示例 81.1.4 处理HTTP状态码 101.2 宽度优先爬虫和带偏好的爬虫 111.2.1 图的宽度优先遍历 121.2.2 宽度优先遍历互联网 131.2.3 Java宽度优先爬虫示例 151.2.4 带偏好的爬虫 221.2.5 Java带偏好的爬虫示例 231.3 设计爬虫队列 241.3.1 爬虫队列 241.3.2 使用Berkeley DB构建爬虫队列 291.3.3 使用Berkeley DB 构建爬虫队列示例 301.3.4 使用布隆过滤器构建Visited表 361.3.5 详解Heritrix爬虫队列 391.4 设计爬虫架构 461.4.1 爬虫架构 461.4.2 设计并行爬虫架构 471.4.3 详解Heritrix爬虫架构 521.5 使用多线程技术提升爬虫性能 551.5.1 详解Java多线程 551.5.2 爬虫中的多线程 591.5.3 一个简单的多线程爬虫实现 601.5.4 详解Heritrix多线程结构 611.6 本章小结 64第2章 分布式爬虫 692.1 设计分布式爬虫 702.1.1 分布式与云计算 702.1.2 分布式与云计算技术在爬虫中的应用――浅析Google的云计算架构 712.2 分布式存储 722.2.1 从Ralation_DB到key/value存储 722.2.2 Consistent Hash算法 742.2.3 Consistent Hash代码实现 792.3 Google的成功之道――GFS 802.3.1 GFS详解 802.3.2 开源GFS――HDFS 842.4 Google网页存储秘诀――BigTable 882.4.1 详解BigTable 882.4.2 开源BigTable――HBase 932.5 Google的成功之道――MapReduce算法 982.5.1 详解MapReduce算法 1002.5.2 MapReduce容错处理 1012.5.3 MapReduce实现架构 1022.5.4 Hadoop中的MapReduce简介 1042.5.5 wordCount例子的实现 1052.6 Nutch中的分布式 1092.6.1 Nutch爬虫详解 1092.6.2 Nutch中的分布式 1162.7 本章小结 118第3章 爬虫的"方方面面" 1213.1 爬虫中的"黑洞" 1223.2 限定爬虫和主题爬虫 1223.2.1 理解主题爬虫 1223.2.2 Java主题爬虫 1283.2.3 理解限定爬虫 1303.2.4 Java限定爬虫示例 1363.3 有"道德"的爬虫 1523.4 本章小结 155第2篇 自己动手抽取Web内容第4章 "处理"HTML页面 1594.1 征服正则表达式 1604.1.1 学习正则表达式 1604.1.2 Java正则表达式 1644.2 抽取HTML正文 1694.2.1 了解HtmlParser 1694.2.2 使用正则表达式抽取示例 1724.3 抽取正文 1794.4 从JavaScript中抽取信息 1944.4.1 JavaScript抽取方法 1954.4.2 JavaScript抽取示例 1974.5 本章小结 199第5章 非HTML正文抽取 2015.1 抽取PDF文件 2025.1.1 学习PDFBox 2025.1.2 使用PDFBox抽取示例 2065.1.3 提取PDF文件标题 2075.1.4 处理PDF格式的公文 2085.2 抽取Office文档 2125.2.1 学习POI 2125.2.2 使用POI抽取Word示例 2135.2.3 使用POI抽取PPT 示例 2155.2.4 使用POI抽取Excel示例 2155.3 抽取RTF 2185.3.1 开源RTF文件解析器 2195.3.2 实现一个RTF文件解析器 2195.3.3 解析RTF示例 2235.4 本章小结 229第6章 多媒体抽取 2316.1 抽取视频 2326.1.1 抽取视频关键帧 2326.1.2 Java视频处理框架 2336.1.3 Java视频抽取示例 2376.2 音频抽取 2496.2.1 抽取音频 2496.2.2 学习Java音频抽取技术 2536.3 本章小结 256第7章 去掉网页中的"噪声" 2577.1 "噪声"对网页的影响 2587.2 利用"统计学"消除"噪声" 2597.2.1 网站风格树 2627.2.2 "统计学去噪"Java实现 2707.3 利用"视觉"消除"噪声" 2747.3.1 "视觉"与"噪声" 2747.3.2 "视觉去噪"Java实现 2757.4 本章小结 279第3篇 自己动手挖掘Web数据第8章 分析Web图 2838.1 存储Web"图" 2848.2 利用Web"图"分析链接 2938.3 Google的秘密――PageRank 2938.3.1 深入理解PageRank算法 2938.3.2 PageRank算法的Java实现 2978.3.3 应用PageRank进行链接分析 3008.4 PageRank 的兄弟HITS 3018.4.1 深入理解HITS算法 3018.4.2 HITS算法的Java实现 3028.4.3 应用HITS进行链接分析 3138.5 PageRank与HITS的比较 3148.6 本章小结 315第9章 去掉重复的"文档" 3179.1 何为"重复"的文档 3189.2 去除"重复"文档――排重 3189.3 利用"语义指纹"排重 3189.3.1 理解"语义指纹" 3209.3.2 "语义指纹"排重的Java实现 3219.4 SimHash排重 3219.4.1 理解SimHash 3229.4.2 SimHash排重的Java实现 3239.5 分布式文档排重 3309.6 本章小结 331第10章 分类与聚类的应用 33310.1 网页分类 33410.1.1 收集语料库 33410.1.2 选取网页的"特征" 33510.1.3 使用支持向量机进行网页分类 33810.1.4 利用URL地址进行网页分类 34010.1.5 使用AdaBoost进行网页分类 34010.2 网页聚类 34310.2.1 深入理解DBScan算法 34310.2.2 使用DBScan算法聚类实例 34410.3 本章小结 346
当你在网上冲浪时,你是否知道还有一类特殊的网络用户也在互联网上默默地工作着,它们就是网络爬虫。这些网络爬虫按照设计者预定的方式,在网络中穿梭,同时自动收集有用的信息,进行分类和整理,将整理结果提供给用户,以方便用户查找他们感兴趣的内容。由于网络爬虫的实用性,引起了很多程序员,特别是Web程序员的兴趣。但是大多数网络爬虫的开发原理与技巧在专业的公司内部都秘而不宣,至今仍然缺少理论与实践相结合的专门介绍网络爬虫的书籍。本书将弥补这个问题,尝试理论与实践相结合,深入透彻地讲解网络爬虫的原理,并且辅以相关代码作为参考。本书相关的代码在附带光盘中可以找到。本书的两位主要作者在搜索引擎领域都有丰富的理论和实践经验。同时,还有多个程序员帮忙开发或编写了代码实现,例如Java实现异步I/O或对PDF文件的处理等。由于作者的日常工作繁忙,做得不够的地方敬请谅解。作者罗刚在参加编写本书之前,还独立撰写过《自己动手写搜索引擎》一书,但存在讲解不够细致、知识点不够深入等问题。此次与王振东合著本书,相对于上一本书而言,对读者反馈有更高的预期。因为作者相信如下的假设:如果能够与更多的人更好地合作,事情往往能做得更好。本书从基本的爬虫原理开始讲解,通过介绍优先级队列、宽度优先搜索等内容引领读者入门;之后根据当前风起云涌的云计算热潮,重点讲述了云计算的相关内容及其在爬虫中的应用,以及带偏好的爬虫、信息抽取、链接分析等内容;为了能够让读者更深入地了解爬虫,本书在最后两章还介绍了有关爬虫的数据挖掘的内容。由于搜索引擎相关领域也正在快速发展中,而且由于篇幅的限制,有些不成熟的内容,没有能够在本书体现,例如有关"暗网"的内容。随着技术的不断发展,我们将在今后的版本中加入这些内容。
代表主机的根目录。爬虫最主要的处理对象就是URL,它根据URL地址取得所需要的文件内容,然后对它进行进一步的处理。因此,准确地理解URL对理解网络爬虫至关重要。从下一节开始,我们将详细地讲述如何根据URL地址来获得网页内容。1.1.2
通过指定的URL抓取网页内容上一节详细介绍了URL的构成,这一节主要阐述如何根据给定的URL来抓取网页。所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地。类似于使用程序模拟IE浏览器的功能,把URL作为HTTP请求的内容发送到服务器端,然后读取服务器端的响应资源。Java语言是为网络而生的编程语言,它把网络资源看成是一种文件,它对网络资源的访问和对本地文件的访问一样方便。它把请求和响应封装为流。因此我们可以根据相应内容,获得响应流,之后从流中按字节读取数据。例如,java.net.URL类可以对相应的Web服务器发出请求并且获得响应文档。
亚马逊评分
(24人评价)
帮助平台入驻您所在的位置: &
Java网络爬虫的实现
Java网络爬虫的实现
JavaEye博客
记得在刚找工作时,隔壁的一位同学在面试时豪言壮语曾实现过网络爬虫,当时的景仰之情犹如滔滔江水连绵不绝。后来,在做图片搜索时,需要大量的测试图片,因此萌生了从Amazon中爬取图书封面图片的想法,从网上也吸取了一些前人的经验,实现了一个简单但足够用的爬虫系统。
记得在刚找工作时,隔壁的一位同学在面试时豪言壮语曾实现过网络爬虫,当时的景仰之情犹如滔滔江水连绵不绝。后来,在做图片搜索时,需要大量的测试图片,因此萌生了从Amazon中爬取图书封面图片的想法,从网上也吸取了一些前人的经验,实现了一个简单但足够用的爬虫系统。
网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成,其基本架构如下图所示:
498)this.width=498;' onmousewheel = 'javascript:return big(this)' height=382 alt="" src="/files/uploadimg/5300.png" width=500>
传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。对于垂直搜索来说,聚焦爬虫,即有针对性地爬取特定主题网页的爬虫,更为适合。
本文爬虫程序的核心代码如下:
public&void&crawl()&throws&Throwable&{&&& &&&&&while&(continueCrawling())&{&&& &&&&&&&&&CrawlerUrl&url&=&getNextUrl();&&&&&&&&&&if&(url&!=&null)&{&&& &&&&&&&&&&&&&printCrawlInfo();&&&& &&&&&&&&&&&&&String&content&=&getContent(url);&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&if&(isContentRelevant(content,&this.regexpSearchPattern))&{&&& &&&&&&&&&&&&&&&&&saveContent(url,&content);&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Collection&urlStrings&=&extractUrls(content,&url);&&& &&&&&&&&&&&&&&&&&addUrlsToUrlQueue(url,&urlStrings);&&& &&&&&&&&&&&&&}&else&{&&& &&&&&&&&&&&&&&&&&System.out.println(url&+&"&is&not&relevant&ignoring&...");&&& &&&&&&&&&&&&&}&&& &&& &&&&&&&&&&&&&&&&&&&&&&&&&&Thread.sleep(this.delayBetweenUrls);&&& &&&&&&&&&}&&& &&&&&}&&& &&&&&closeOutputStream();&&& &}&& &
整个函数由getNextUrl、getContent、isContentRelevant、extractUrls、addUrlsToUrlQueue等几个核心方法组成,下面将一一介绍。先看getNextUrl:
498)this.width=498;' onmousewheel = 'javascript:return big(this)' height=15 alt=复制代码 src="/files/uploadimg/5301.gif" width=14>
private&CrawlerUrl&getNextUrl()&throws&Throwable&{&&& &&&&&CrawlerUrl&nextUrl&=&null;&&& &&&&&while&((nextUrl&==&null)&&&&(!urlQueue.isEmpty()))&{&&& &&&&&&&&&CrawlerUrl&crawlerUrl&=&this.urlQueue.remove();&&& &&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&if&(doWeHavePermissionToVisit(crawlerUrl)&&& &&&&&&&&&&&&&&&&(!isUrlAlreadyVisited(crawlerUrl))&&&& &&&&&&&&&&&&&&&&isDepthAcceptable(crawlerUrl))&{&&& &&&&&&&&&&&&&nextUrl&=&crawlerU&&& &&&&&&&&&&&&&&&&&&&&&&}&&& &&&&&}&&& &&&&&return&nextU&&& &}&&&
更多的关于robot.txt的具体写法,可参考以下这篇文章:
getContent内部使用apache的httpclient 4.1获取网页内容,具体代码如下:
private&String&getContent(CrawlerUrl&url)&throws&Throwable&{&&& &&&&&&&&&&HttpClient&client&=&new&DefaultHttpClient();&&& &&&&&HttpGet&httpGet&=&new&HttpGet(url.getUrlString());&&& &&&&&StringBuffer&strBuf&=&new&StringBuffer();&&& &&&&&HttpResponse&response&=&client.execute(httpGet);&&& &&&&&if&(HttpStatus.SC_OK&==&response.getStatusLine().getStatusCode())&{&&& &&&&&&&&&HttpEntity&entity&=&response.getEntity();&&& &&&&&&&&&if&(entity&!=&null)&{&&& &&&&&&&&&&&&&BufferedReader&reader&=&new&BufferedReader(&&& &&&&&&&&&&&&&&&&&new&InputStreamReader(entity.getContent(),&"UTF-8"));&&& &&&&&&&&&&&&&String&line&=&null;&&& &&&&&&&&&&&&&if&(entity.getContentLength()&&&0)&{&&& &&&&&&&&&&&&&&&&&strBuf&=&new&StringBuffer((int)&entity.getContentLength());&&& &&&&&&&&&&&&&&&&&while&((line&=&reader.readLine())&!=&null)&{&&& &&&&&&&&&&&&&&&&&&&&&strBuf.append(line);&&& &&&&&&&&&&&&&&&&&}&&& &&&&&&&&&&&&&}&&& &&&&&&&&&}&&& &&&&&&&&&if&(entity&!=&null)&{&&& &&&&&&&&&&&&&entity.consumeContent();&&& &&&&&&&&&}&&& &&&&&}&&& &&&&&&&&&&markUrlAsVisited(url);&&& &&&&&return&strBuf.toString();&&& &}&& &
对于垂直型应用来说,数据的准确性往往更为重要。聚焦型爬虫的主要特点是,只收集和主题相关的数据,这就是isContentRelevant方法的作用。这里或许要使用分类预测技术,为简单起见,采用正则匹配来代替。其主要代码如下:
public&static&boolean&isContentRelevant(String&content,&&& &Pattern&regexpPattern)&{&&& &&&&&boolean&retValue&=&false;&&& &&&&&if&(content&!=&null)&{&&& &&&&&&&&&&&&&&&&&&Matcher&m&=&regexpPattern.matcher(content.toLowerCase());&&& &&&&&&&&&retValue&=&m.find();&&& &&&&&}&&& &&&&&return&retV&&& &}&& &
extractUrls的主要作用,是从网页中获取更多的URL,包括内部链接和外部链接,代码如下:
public&List&extractUrls(String&text,&CrawlerUrl&crawlerUrl)&{&&& &&&&&Map&urlMap&=&new&HashMap();&&& &&&&&extractHttpUrls(urlMap,&text);&&& &&&&&extractRelativeUrls(urlMap,&text,&crawlerUrl);&&& &&&&&return&new&ArrayList(urlMap.keySet());&&& &}&&& &&& &&private&void&extractHttpUrls(Map&urlMap,&String&text)&{&&& &&&&&Matcher&m&=&httpRegexp.matcher(text);&&& &&&&&while&(m.find())&{&&& &&&&&&&&&String&url&=&m.group();&&& &&&&&&&&&String[]&terms&=&url.split("a&href=\"");&&& &&&&&&&&&for&(String&term&:&terms)&{&&& &&&&&&&&&&&&&&&&&&&&&&&&&&if&(term.startsWith("http"))&{&&& &&&&&&&&&&&&&&&&&int&index&=&term.indexOf("\"");&&& &&&&&&&&&&&&&&&&&if&(index&&&0)&{&&& &&&&&&&&&&&&&&&&&&&&&term&=&term.substring(0,&index);&&& &&&&&&&&&&&&&&&&&}&&& &&&&&&&&&&&&&&&&&urlMap.put(term,&term);&&& &&&&&&&&&&&&&&&&&System.out.println("Hyperlink:&"&+&term);&&& &&&&&&&&&&&&&}&&& &&&&&&&&&}&&& &&&&&}&&& &}&&& &&& &&private&void&extractRelativeUrls(Map&urlMap,&String&text,&&& &&&&&&&&&CrawlerUrl&crawlerUrl)&{&&& &&&&&Matcher&m&=&relativeRegexp.matcher(text);&&& &&&&&URL&textURL&=&crawlerUrl.getURL();&&& &&&&&String&host&=&textURL.getHost();&&& &&&&&while&(m.find())&{&&& &&&&&&&&&String&url&=&m.group();&&& &&&&&&&&&String[]&terms&=&url.split("a&href=\"");&&& &&&&&&&&&for&(String&term&:&terms)&{&&& &&&&&&&&&&&&&if&(term.startsWith("/"))&{&&& &&&&&&&&&&&&&&&&&int&index&=&term.indexOf("\"");&&& &&&&&&&&&&&&&&&&&if&(index&&&0)&{&&& &&&&&&&&&&&&&&&&&&&&&term&=&term.substring(0,&index);&&& &&&&&&&&&&&&&&&&&}&&& &&&&&&&&&&&&&&&&&String&s&=&"http://"&+&host&+&&&& &&&&&&&&&&&&&&&&&urlMap.put(s,&s);&&& &&&&&&&&&&&&&&&&&System.out.println("Relative&url:&"&+&s);&&& &&&&&&&&&&&&&}&&& &&&&&&&&&}&&& &&&&&}&&& &&& &}&& &
如此,便构建了一个简单的网络爬虫程序,可以使用以下程序来测试它:
public&static&void&main(String[]&args)&{&&& &&&&&try&{&&& &&&&&&&&&String&url&=&"";&&& &&&&&&&&&Queue&urlQueue&=&new&LinkedList();&&& &&&&&&&&&String&regexp&=&"java";&&& &&&&&&&&&urlQueue.add(new&CrawlerUrl(url,&0));&&& &&&&&&&&&NaiveCrawler&crawler&=&new&NaiveCrawler(urlQueue,&100,&5,&1000L,&&& &&&&&&&&&&&&&&&&&regexp);&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&crawler.crawl();&&& &&&&&}&catch&(Throwable&t)&{&&& &&&&&&&&&System.out.println(t.toString());&&& &&&&&&&&&t.printStackTrace();&&& &&&&&}&&& &}&& &
当然,你可以为它赋予更为高级的功能,比如多线程、更智能的聚焦、结合Lucene建立索引等等。更为复杂的情况,可以考虑使用一些开源的蜘蛛程序,比如Nutch或是Heritrix等等,就不在本文的讨论范围了。
【编辑推荐】
【责任编辑: TEL:(010)】
关于&&的更多文章
又是一周匆匆而过。上周五、周六两天,2013年51CTO云计算架构师
本次的专刊为大家提供了Oracle最新推出的Java SE 8详细的开发教程,从解读到探究Java 8最新
8月第二周,开发者们每月必看的编程语言排行榜如期而
7月的名字叫“流火”!本周出差工作的各位辛苦了,因
程序员的30岁,是个伤不起的现象。你不可能敲一辈子的
SQL(结构化查询语言)是数据库系统的通用语言,利用它可以用几乎同样的语句在不同的数据库系统上执行同样的操作,在数据库系统的
51CTO旗下网站}

我要回帖

更多关于 java网络爬虫的实现 的文章

更多推荐

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

点击添加站长微信