网络爬虫实验手册簿.docx
- 文档编号:6332882
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:12
- 大小:508.60KB
网络爬虫实验手册簿.docx
《网络爬虫实验手册簿.docx》由会员分享,可在线阅读,更多相关《网络爬虫实验手册簿.docx(12页珍藏版)》请在冰豆网上搜索。
网络爬虫实验手册簿
网络爬虫
1.实验目标
1.熟悉网络爬虫的相关概念及实现网络爬虫的相关流程。
2.了解WebCollector框架的基本原理。
3.熟练掌握在Eclipse项目中配置使用WebCollector爬虫。
2.前提条件
1.正确安装和配置Java开发环境。
2.了解网络爬虫的相关知识
3.进入WebCollector官方网站下载所需jar包。
3.实验任务及完成标准
本次实验通过WebCollector框架实现一个简单的聚焦网络爬虫。
用户可根据自己的需求定制网络爬虫,设定待爬取的网址、爬取网页的数量、爬取网页的内容等。
通过对该实例的详细介绍来探讨网络爬虫的原理及在实际生活中的应用。
在此实例的基础上,学生需要独立完成更为复杂的聚焦网络爬虫,来爬取更有意义的内容。
具体要求见“4扩展内容”。
3.1建立应用程序项目
打开eclipse,创建本次实验项目htmlCrawler(【File】->【New】->【JavaProject】
)如图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包添加到buildpath中,如图4、图5、图6所示。
图4
图5
图6
依次选中jar包,导入到工程中。
4如果想看WebCollector的源码,可以为Jar包关联源码(可选),如图6、图7所示。
图6
图7
3.3现在可以编写WebCollector爬虫的代码了
新建一个类Crawler.java,继承自BreadthCrawler。
重写visit方法,来实现满足自己需求的爬虫即可。
如图8、图9所示。
图8
图9
3.4抓取河北师大软件学院网站首页的源代码
packagehtmlCrawler;
importjava.io.IOException;
importcn.edu.hfut.dmic.webcollector.model.CrawlDatums;
importcn.edu.hfut.dmic.webcollector.model.Page;
importcn.edu.hfut.dmic.webcollector.plugin.berkeley.BreadthCrawler;
importcn.edu.hfut.dmic.webcollector.util.FileUtils;
publicclassCrawlerextendsBreadthCrawler{
publicCrawler(StringcrawlPath,booleanautoParse){
super(crawlPath,autoParse);
//TODOAuto-generatedconstructorstub
}
@Override
publicvoidvisit(Pagepage,CrawlDatumsnext){
//TODOAuto-generatedmethodstub
try{
System.out.println("正在提取:
"+page.getUrl());
//将爬取的内容写到test.html页
FileUtils.writeFileWithParent("downloads/test.html",page.getContent());
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
publicstaticvoidmain(String[]args){
//创建爬虫对象
Crawlercrawler=newCrawler("html_crawler",true);
crawler.addSeed("
try{
//启动爬虫
crawler.start
(1);
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
控制台输出结果:
2016-02-2514:
23:
06INFOcn.edu.hfut.dmic.webcollector.crawler.Crawler-startdepth1
2016-02-2514:
23:
06INFOcn.edu.hfut.dmic.webcollector.fetcher.Fetcher-opengenerator:
cn.edu.hfut.dmic.webcollector.plugin.berkeley.BerkeleyGenerator
2016-02-2514:
23:
06INFOcn.edu.hfut.dmic.webcollector.fetcher.Fetcher-initsegmentWriter:
cn.edu.hfut.dmic.webcollector.plugin.berkeley.BerkeleyDBManager
2016-02-2514:
23:
07INFOcn.edu.hfut.dmic.webcollector.fetcher.Fetcher--activeThreads=1,spinWaiting=0,fetchQueue.size=0
2016-02-2514:
23:
07INFOcn.edu.hfut.dmic.webcollector.fetcher.Fetcher-fetchURL:
正在提取:
2016-02-2514:
23:
08INFOcn.edu.hfut.dmic.webcollector.fetcher.Fetcher--activeThreads=0,spinWaiting=0,fetchQueue.size=0
2016-02-2514:
23:
08INFOcn.edu.hfut.dmic.webcollector.fetcher.Fetcher-clearallactiveThread
2016-02-2514:
23:
08INFOcn.edu.hfut.dmic.webcollector.fetcher.Fetcher-closegenerator:
cn.edu.hfut.dmic.webcollector.plugin.berkeley.BerkeleyGenerator
2016-02-2514:
23:
08INFOcn.edu.hfut.dmic.webcollector.fetcher.Fetcher-closesegmentwriter:
cn.edu.hfut.dmic.webcollector.plugin.berkeley.BerkeleyDBManager
2016-02-2514:
23:
08INFOcn.edu.hfut.dmic.webcollector.plugin.berkeley.BerkeleyDBManager-startmerge
2016-02-2514:
23:
08INFOcn.edu.hfut.dmic.webcollector.plugin.berkeley.BerkeleyDBManager-mergefetchdatabase
2016-02-2514:
23:
08INFOcn.edu.hfut.dmic.webcollector.plugin.berkeley.BerkeleyDBManager-mergelinkdatabase
2016-02-2514:
23:
08INFOcn.edu.hfut.dmic.webcollector.plugin.berkeley.BerkeleyDBManager-endmerge
2016-02-2514:
23:
08INFOcn.edu.hfut.dmic.webcollector.crawler.Crawler-depth1finish:
TOTALurls:
1
TOTALtime:
2seconds
爬取结果如图10所示。
图10
4扩展内容
4.1在本实验的基础上,进行相关的设置:
(1)爬取的深度;设置开启的线程数;
(2)设置爬取url的上限;
(3)通过正则表达式设置爬取哪些网页,不爬取哪些网页等(eg./*不要爬取jpg|png|gif*/,代码:
crawler.addRegex("-.*\\.(jpg|png|gif).*");)。
(4)实现代码由学生自己完成
4.2实现自己的网络爬虫,抓取“新浪新闻”(
(1)需要抓取信息包括:
网址,标题,时间,网页内容等。
(2)将抓取的数据写到文本文件或excel表中。
(3)抓取代码由学生自己完成。
提示:
将数据写到excel表中,需要导入poi-3.14-beta1-20151223.jar包,部分代码如下:
//创建一个EXCEL
Workbookwb=newHSSFWorkbook();
…..
//创建一个SHEET
sheet1=wb.createSheet("数据解析");
String[]title={"url","标题","评论","时间","内容","本地相对路径"};
inti=0;
//创建一行
Rowrow=sheet1.createRow((short)0);
//填充标题
for(Strings:
title){
Cellcell=row.createCell(i);
cell.setCellValue(s);
i++;
}
//下面是填充数据的部分代码
AtomicIntegerid=newAtomicInteger(0);
Rowrow=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中自己的网络爬虫,将抓取的数据直接写到数据库中。
实现代码由学生自己完成。
提示:
使用JDBC连接数据库,要先导入mysql-connector-java-5.1.6-bin.jar包。
表的创建可以参考如下sql语句:
createtablet_mess(
idint(4)notnullprimarykeyauto_increment,
urlvarchar(255)notnull,
titlevarchar(255),
datevarchar(255),
contentTEXT(10000),
pathvarchar(255));
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络 爬虫 实验 手册