网络爬虫实验手册.docx

上传人:b****0 文档编号:17324783 上传时间:2023-07-24 格式:DOCX 页数:12 大小:463.49KB
下载 相关 举报
网络爬虫实验手册.docx_第1页
第1页 / 共12页
网络爬虫实验手册.docx_第2页
第2页 / 共12页
网络爬虫实验手册.docx_第3页
第3页 / 共12页
网络爬虫实验手册.docx_第4页
第4页 / 共12页
网络爬虫实验手册.docx_第5页
第5页 / 共12页
网络爬虫实验手册.docx_第6页
第6页 / 共12页
网络爬虫实验手册.docx_第7页
第7页 / 共12页
网络爬虫实验手册.docx_第8页
第8页 / 共12页
网络爬虫实验手册.docx_第9页
第9页 / 共12页
网络爬虫实验手册.docx_第10页
第10页 / 共12页
网络爬虫实验手册.docx_第11页
第11页 / 共12页
网络爬虫实验手册.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

网络爬虫实验手册.docx

《网络爬虫实验手册.docx》由会员分享,可在线阅读,更多相关《网络爬虫实验手册.docx(12页珍藏版)》请在冰点文库上搜索。

网络爬虫实验手册.docx

网络爬虫实验手册

网络爬虫-实验手册

网络爬虫

1.实验目标

1.熟悉网络爬虫的相关概念及实现网络爬虫的相关流程。

2.了解WebCollector框架的基本原理。

3.熟练掌握在Eclipse项目中配置使用WebCollector爬虫。

2.前提条件

1.正确安装和配置Java开发环境。

2.了解网络爬虫的相关知识

3.进入WebCollector官方网站下载所需jar包。

3.实验任务及完成标准

本次实验通过WebCollector框架实现一个简单的聚焦网络爬虫。

用户可根据自己的需求定制网络爬虫,设定待爬取的网址、爬取网页的数量、爬取网页的内容等。

通过对该实例的详细介绍来探讨网络爬虫的原理及在实际生活中的应用。

在此实例的基础上,学生需要独立完成更为复杂的聚焦网络爬虫,来爬取更有意义的内容。

具体要求见“4扩展内容”。

3.1建立应用程序项目

打开eclipse,创建本次实验项目htmlCrawler(【File】->【New】->【Java

图3目录结构图

3将文件夹lib中的所有jar包添加到buildpath中,如图4、图5、图6所示。

图4

图5

图6

依次选中jar包,导入到工程中。

4如果想看WebCollector的源码,可以为Jar包关联源码(可选),如图6、图7所示。

图6

图7

3.2现在可以编写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));

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2