网络爬虫实验手册.docx
《网络爬虫实验手册.docx》由会员分享,可在线阅读,更多相关《网络爬虫实验手册.docx(10页珍藏版)》请在冰点文库上搜索。
![网络爬虫实验手册.docx](https://file1.bingdoc.com/fileroot1/2023-5/2/1bf3ce2d-b58b-4406-b0f6-664d3269b46a/1bf3ce2d-b58b-4406-b0f6-664d3269b46a1.gif)
网络爬虫实验手册
网络爬虫
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