1、3.1 建立应用程序项目打开eclipse,创建本次实验项目htmlCrawler(【File】-【New】-【Java Project】)如图1所示。图1 创建工程3.2 在Eclipse项目中配置使用WebCollector爬虫1 选中 htmlCrawler 右键,选中【New】-【Folder】,输入文件名称“lib”,如下图2所示。图2 创建文件夹2解压缩 webcollector-2.26-bin.zip,拷贝所有的Jar包 ,放到lib目录中,如图3所示。图3 目录结构图3将文件夹lib中的所有jar包添加到build path中,如图4、图5、图6所示。图4 图5 图6依次选中
2、jar包,导入到工程中。4 如果想看WebCollector的源码,可以为Jar包关联源码(可选),如图6、图7所示。图73.3 现在可以编写WebCollector爬虫的代码了新建一个类Crawler.java,继承自BreadthCrawler。重写visit方法,来实现满足自己需求的爬虫即可。如图8、图9所示。图8图93.4 抓取河北师大软件学院网站首页的源代码package htmlCrawler;import java.io.IOException;import cn.edu.hfut.dmic.webcollector.model.CrawlDatums;import cn.edu
3、.hfut.dmic.webcollector.model.Page;import cn.edu.hfut.dmic.webcollector.plugin.berkeley.BreadthCrawler;import cn.edu.hfut.dmic.webcollector.util.FileUtils;public class Crawler extends BreadthCrawler public Crawler(String crawlPath, boolean autoParse) super(crawlPath, autoParse); / TODO Auto-generate
4、d constructor stub Override public void visit(Page page, CrawlDatums next) / TODO Auto-generated method stub try System.out.println(正在提取:+page.getUrl(); /将爬取的内容写到test.html页 FileUtils.writeFileWithParent(downloads/test.html, page.getContent(); catch (IOException e) / TODO Auto-generated catch block e
5、.printStackTrace(); public static void main(String args) /创建爬虫对象 Crawler crawler = new Crawler(html_crawler,true); crawler.addSeed( /启动 爬虫 crawler.start(1); catch (Exception e) 控制台输出结果:2016-02-25 14:23:06 INFO cn.edu.hfut.dmic.webcollector.crawler.Crawler - start depth 106 INFO cn.edu.hfut.dmic.webc
6、ollector.fetcher.Fetcher - open generator:cn.edu.hfut.dmic.webcollector.plugin.berkeley.BerkeleyGenerator06 INFO cn.edu.hfut.dmic.webcollector.fetcher.Fetcher - init segmentWriter:cn.edu.hfut.dmic.webcollector.plugin.berkeley.BerkeleyDBManager07 INFO cn.edu.hfut.dmic.webcollector.fetcher.Fetcher - -
7、activeThreads=1, spinWaiting=0, fetchQueue.size=007 INFO cn.edu.hfut.dmic.webcollector.fetcher.Fetcher - fetch URL: 08 INFO cn.edu.hfut.dmic.webcollector.fetcher.Fetcher - -activeThreads=0, spinWaiting=0, fetchQueue.size=008 INFO cn.edu.hfut.dmic.webcollector.fetcher.Fetcher - clear all activeThread
8、08 INFO cn.edu.hfut.dmic.webcollector.fetcher.Fetcher - close generator:08 INFO cn.edu.hfut.dmic.webcollector.fetcher.Fetcher - close segmentwriter:08 INFO cn.edu.hfut.dmic.webcollector.plugin.berkeley.BerkeleyDBManager - start merge08 INFO cn.edu.hfut.dmic.webcollector.plugin.berkeley.BerkeleyDBMan
9、ager - merge fetch database08 INFO cn.edu.hfut.dmic.webcollector.plugin.berkeley.BerkeleyDBManager - merge link database08 INFO cn.edu.hfut.dmic.webcollector.plugin.berkeley.BerkeleyDBManager - end merge08 INFO cn.edu.hfut.dmic.webcollector.crawler.Crawler - depth 1 finish: TOTAL urls: 1 TOTAL time:
10、 2 seconds爬取结果如图10所示。图104 扩展内容4.1 在本实验的基础上,进行相关的设置:(1)爬取的深度;设置开启的线程数;(2)设置爬取url的上限;(3)通过正则表达式设置爬取哪些网页,不爬取哪些网页等(eg./*不要爬取jpg|png|gif*/ ,代码:crawler.addRegex(-.*.(jpg|png|gif).*);)。(4)实现代码由学生自己完成4.2 实现自己的网络爬虫,抓取“新浪新闻”(1)需要抓取信息包括:网址,标题,时间,网页内容等。(2)将抓取的数据写到文本文件或excel表中。(3)抓取代码由学生自己完成。提示:将数据写到excel表中,需要导入
11、poi-3.14-beta1-20151223.jar包,部分代码如下:/创建一个EXCEL Workbook wb = new HSSFWorkbook();./创建一个SHEET sheet1 = wb.createSheet(数据解析 String title = url,标题评论时间内容本地相对路径; int i=0; /创建一行 Row row = sheet1.createRow(short)0); /填充标题 for (String s:title) Cell cell = row.createCell(i); cell.setCellValue(s); i+;/下面是填充数据的
12、部分代码AtomicInteger id=new AtomicInteger(0);Row row = sheet1.createRow(short)id.incrementAndGet(); row.createCell(0).setCellValue(url); row.createCell(1).setCellValue(title); row.createCell(2).setCellValue(comment); row.createCell(3).setCellValue(time); row.createCell(4).setCellValue(contents); row.cr
13、eateCell(5).setCellValue(path);4.3 改进4.2中自己的网络爬虫,将抓取的数据直接写到数据库中。实现代码由学生自己完成。使用JDBC连接数据库,要先导入mysql-connector-java-5.1.6-bin.jar包。表的创建可以参考如下sql语句:create table t_mess( id int(4) not null primary key auto_increment, url varchar(255) not null, title varchar(255) , date varchar(255), content TEXT(10000), path varchar(255);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1