网络爬虫_实验手册_第1页
网络爬虫_实验手册_第2页
网络爬虫_实验手册_第3页
网络爬虫_实验手册_第4页
网络爬虫_实验手册_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、河北师范大学软件学院网络爬虫1. 实验目标1. 熟悉网络爬虫的相关概念及实现网络爬虫的相关流程。2. 了解WebCollector框架的基本原理。3. 熟练掌握在Eclipse项目中配置使用WebCollector爬虫。2. 前提条件1 正确安装和配置Java开发环境。2 了解网络爬虫的相关知识3 进入WebCollector官方网站下载所需jar包。3. 实验任务及完成标准本次实验通过WebCollector框架实现一个简单的聚焦网络爬虫。用户可根据自己的需求定制网络爬虫,设定待爬取的网址、爬取网页的数量、爬取网页的内容等。通过对该实例的详细介绍来探讨网络爬虫的原理及在实际生活中的应用。在此

2、实例的基础上,学生需要独立完成更为复杂的聚焦网络爬虫,来爬取更有意义的内容。具体要求见“4 扩展内容”。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 目录结构图3将文件夹lib中的所有jar包添加到build path中,如图4、图5、图6所示。图4 图5 图6依次选中jar包,导入到工程中。4 如果想看WebCollector的源码,可以为Jar包关联源码(可选),如图6、图7所示。图6图73.3 现在可以编写WebCollector爬虫的代码了新建一个类Crawler.java,继承自BreadthCrawler。重写visit方法,来实现满足自己需求的爬虫即可。如图8、图9所示。图8图93.4 抓取河北师大软件学院网站首页的源代码package htmlCrawler;import java.io.IOException;im

4、port .hfut.dmic.webcollector.model.CrawlDatums;import .hfut.dmic.webcollector.model.Page;import .hfut.dmic.webcollector.plugin.berkeley.BreadthCrawler;import .hfut.dmic.webcollector.util.FileUtils;public class Crawler extends BreadthCrawler public Crawler(String crawlPath, bo

5、olean autoParse) super(crawlPath, autoParse);/ TODO Auto-generated constructor stubOverridepublic void visit(Page page, CrawlDatums next) / TODO Auto-generated method stubtry System.out.println("正在提取:"+page.getUrl();/将爬取的内容写到test.html页FileUtils.writeFileWithParent("downloads/test.html

6、", page.getContent(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace(); public static void main(String args) /创建爬虫对象 Crawler crawler = new Crawler("html_crawler",true); crawler.addSeed(" try /启动 爬虫crawler.start(1); catch (Exception e) / TODO Auto-generat

7、ed catch blocke.printStackTrace(); 控制台输出结果:2016-02-25 14:23:06 INFO .hfut.dmic.webcollector.crawler.Crawler - start depth 12016-02-25 14:23:06 INFO .hfut.dmic.webcollector.fetcher.Fetcher - open generator:.hfut.dmic.webcollector.plugin.berkeley.BerkeleyGenerator2016-02-25 14:23:06

8、INFO .hfut.dmic.webcollector.fetcher.Fetcher - init segmentWriter:.hfut.dmic.webcollector.plugin.berkeley.BerkeleyDBManager2016-02-25 14:23:07 INFO .hfut.dmic.webcollector.fetcher.Fetcher - -activeThreads=1, spinWaiting=0, fetchQueue.size=02016-02-25 14:23:07 INFO .hfut.dmic.

9、webcollector.fetcher.Fetcher - fetch URL: 正在提取:2016-02-25 14:23:08 INFO .hfut.dmic.webcollector.fetcher.Fetcher - -activeThreads=0, spinWaiting=0, fetchQueue.size=02016-02-25 14:23:08 INFO .hfut.dmic.webcollector.fetcher.Fetcher - clear all activeThread2016-02-25 14:23:08 INFO .hfu

10、t.dmic.webcollector.fetcher.Fetcher - close generator:.hfut.dmic.webcollector.plugin.berkeley.BerkeleyGenerator2016-02-25 14:23:08 INFO .hfut.dmic.webcollector.fetcher.Fetcher - close segmentwriter:.hfut.dmic.webcollector.plugin.berkeley.BerkeleyDBManager2016-02-25 14:23:08 INFO cn

11、.edu.hfut.dmic.webcollector.plugin.berkeley.BerkeleyDBManager - start merge2016-02-25 14:23:08 INFO .hfut.dmic.webcollector.plugin.berkeley.BerkeleyDBManager - merge fetch database2016-02-25 14:23:08 INFO .hfut.dmic.webcollector.plugin.berkeley.BerkeleyDBManager - merge link database2016

12、-02-25 14:23:08 INFO .hfut.dmic.webcollector.plugin.berkeley.BerkeleyDBManager - end merge2016-02-25 14:23:08 INFO .hfut.dmic.webcollector.crawler.Crawler - depth 1 finish: TOTAL urls:1TOTAL time:2 seconds爬取结果如图10所示。图104 扩展内容4.1 在本实验的基础上,进行相关的设置:(1)爬取的深度;设置开启的线程数;(2)设置爬取url的上限;(3)通过正则表达式

13、设置爬取哪些网页,不爬取哪些网页等(eg./*不要爬取jpg|png|gif*/ ,代码:crawler.addRegex("-.*.(jpg|png|gif).*");)。(4)实现代码由学生自己完成4.2 实现自己的网络爬虫,抓取“新浪新闻”(1)需要抓取信息包括:网址,标题,时间,网页内容等。(2)将抓取的数据写到文本文件或excel表中。(3)抓取代码由学生自己完成。提示:将数据写到excel表中,需要导入poi-3.14-beta1-20151223.jar包,部分代码如下:/创建一个EXCEL Workbook wb = new HSSFWorkbook();.

14、/创建一个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+;

15、/下面是填充数据的部分代码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.createCell(5).setCellValue(path);4.3 改进4.2中自己的网络爬虫,将抓取的数据直接写到数据库中。实现代码由学生自己完成。提示:使用J

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论