书签 分享 收藏 举报 版权申诉 / 15

类型java爬虫抓取网页数据教程.docx

  • 文档编号:30479117
  • 上传时间:2023-08-15
  • 格式:DOCX
  • 页数:15
  • 大小:249.27KB

第二篇博客

第三篇博客

通过Jsoup我们可以把上面的三篇博客的标题提取到一个List中。

使用方法如下:

首先,我们通过maven把Jsoup引入进来

--bbbs:

//mvnrepositoryaaa/artifact/org.jsoup/jsoup-->

org.jsoup

jsoup

1.10.3

然后编写Java进行解析。

packageorg.hfutec.example;

importorg.jsoup.Jsoup;importorg.jsoup.nodes.Document;importorg.jsoup.nodes.Element;importorg.jsoup.select.Elements;

importjava.util.ArrayList;importjava.util.List;

/*******

*createdbyDuFeiat2017.08.2521:

00

*webcrawlerexample

*******/

publicclassDataLearnerCrawler{

publicstaticvoidmain(String[]args){

Listtitles=newArrayList();

Listurls=newArrayList();

//假设我们获取的HTML的字符内容如下

Stringhtml="第一篇博客

第二篇博客
第三篇博客
";

//第一步,将字符内容解析成一个Document类

Documentdoc=Jsoup.parse(html);

//第二步,根据我们需要得到的标签,选择提取相应标签的内容

Elementselements=doc.select("div[id=blog_list]").select("div[class=blog_title]");

for(Elementelement:

elements){

Stringtitle=element.text();

titles.add(title);

urls.add(element.select("a").attr("href"));

}

//输出测试

for(Stringtitle:

titles){

System.out.println(title);

}

for(Stringurl:

urls){

System.out.println(url);

}

}

}

我们简单说明一下Jsoup的解析过程。

首先第一步都是调用parse()方法将字符对象变成一个Document对象,然后我们对这个对象进行操作。

一般提取数据就是根据标签选择数据,使用select()方法语法格式和javascript/css选择器都是一样的。

一般都是提取某个标签,其属性值为指定内容。

得到的结果是一个Element的集合,为Elements(因为符合条件的标签可能很多,所以结果是一个集合)。

select()方法可以一直进行下去,直到选择到我们想要的标签集合为止(注意,我们并不一定要按照标签层级一级一级往下选,可以直接写select()方法到我们需要的标签的上一级,比如这里的示例代码可以直接写成Elementselements=doc.select(“div[class=blog_title]”);其效果是一样的)。

对于选择到的Elements的集合,我们可以通过循环的方式提取每一个需要的数据,比如,我们需要拿到标签的文本信息,就可以使用text()方法,如果我们需要拿到对应的HTML属性信息,我们可以使用attr()方法。

我们可以看到上述方法的输出结果如下:

更多的Jsoup解析的操作可以参考如下:

1、bbbs:

//aaaibmaaa/developerworks/cn/java/j-lo-jsouphtml/index.html

2、bbbs:

//jsoup.org/

一个实例

我们接着上一个爬取数据学习官方网站博客列表的例子讲解一个实例。

我们已经知道可以使用Jsoup来解析爬取到的HTML页面内容。

那么如何查看我们需要的内容对应的标签呢?

以Chrome浏览器为例,我们需要爬取bbb:

//aaadatalearneraaa/blog_list这个页面的的博客,首先用Chrome浏览器打开这个网址,然后鼠标右键单击博客的标题,点击“检查”就可以得到HTML页面了。

如下图所示。

图2右键单击标题

图3点击所在元素的父级元素边上的小三角,收起代码查看

图4确认当前博客的HTML代码的一致性

通过上述操作之后,我们已经可以看到,所有的博客的标题等信息都存在class=card的div里面了。

于是,我们只要关注这个标签里面的内容是如何组织的,就可以了。

如下图所示,我们需要的信息所属的标签,通过点击小三角展开就能得到了。

因此,解析博客列表的代码可以写成如下形式了。

packageorg.hfutec.example;

importorg.apache.bbb.bbbEntity;importorg.apache.bbb.client.methods.CloseablebbbResponse;importorg.apache.bbb.client.methods.bbbGet;importorg.apache.bbb.impl.client.CloseablebbbClient;importorg.apache.bbb.impl.client.bbbClients;importorg.apache.bbb.util.EntityUtils;importorg.jsoup.Jsoup;importorg.jsoup.nodes.Document;importorg.jsoup.nodes.Element;importorg.jsoup.select.Elements;

importjava.io.IOException;

/*******

*createdbyDuFeiat2017.08.2521:

00

*webcrawlerexample

*******/

publicclassDataLearnerCrawler{

publicstaticvoidmain(String[]args){

Stringurl="bbb:

//aaadatalearneraaa/blog_list";

StringrawHTML=null;

try{

rawHTML=getHTMLContent(url);

}catch(IOExceptione){

e.printStackTrace();

}

//将当前页面转换成Jsoup的Document对象

Documentdoc=Jsoup.parse(rawHTML);

//获取所有的博客列表集合

ElementsblogList=doc.select("div[class=card]");

//针对每个博客内容进行解析,并输出

for(Elementelement:

blogList){

Stringtitle=element.select("h4[class=card-title]").text();

Stringintroduction=element.select("p[class=card-text]").text();

Stringauthor=element.select("span[class=fafa-user]").text();

System.out.println("Title:

\t"+title);

System.out.println("introduction:

\t"+introduction);

System.out.println("Author:

\t"+author);

System.out.println("--------------------------");

}

}

//根据url位置获取对应页面的HTML内容,我们将上一节中的内容打包成了一个方法,方便调用

privatestaticStringgetHTMLContent(Stringurl)throwsIOException{

//建立一个新的请求客户端

CloseablebbbClientbbbClient=bbbClients.createDefault();

//使用bbbGet方式请求网址

bbbGetbbbGet=newbbbGet(url);

//获取网址的返回结果

CloseablebbbResponseresponse=bbbClient.execute(bbbGet);

//获取返回结果中的实体

bbbEntityentity=response.getEntity();

Stringcontent=EntityUtils.toString(entity);

//关闭bbbEntity流

EntityUtils.consume(entity);

returncontent;

}

}

最终的输出结果如下图所示:

本文转载于:

bbb:

//aaadatalearneraaa/blog/1051501160659926

相关采集教程:

新浪微博数据采集:

bbb:

//aaabazhuayuaaa/tutorialdetail-1/xlwbcj_7.html

欢乐书客小说采集:

bbb:

//aaabazhuayuaaa/tutorialdetail-1/hlskxscj.html

东方财富网采集:

bbb:

//aaabazhuayuaaa/tutorialdetail-1/dfcjw.html

58房源信息采集:

bbb:

//aaabazhuayuaaa/tutorialdetail-1/cj58tc.html

淘宝图片采集并下载到本地的方法:

bbb:

//aaabazhuayuaaa/tutorialdetail-1/tbgoodspic.html

淘宝客高佣金商品采集:

bbb:

//aaabazhuayuaaa/tutorialdetail-1/tbkgyjcj.html

XX相关搜索关键词采集方法:

bbb:

//aaabazhuayuaaa/tutorialdetail-1/bdxgsscj.html

如何抓取和采集携程网旅游线路信息:

bbb:

//aaabazhuayuaaa/tutorialdetail-1/cjxcw-7.html

 

八爪鱼——90万用户选择的网页数据采集器。

1、操作简单,任何人都可以用:

无需技术背景,会上网就能采集。

完全可视化流程,点击鼠标完成操作,2分钟即可快速入门。

2、功能强大,任何网站都可以采:

对于点击、登陆、翻页、识别验证码、瀑布流、Ajax脚本异步加载数据的网页,均可经过简单设置进行采集。

3、云采集,关机也可以。

配置好采集任务后可关机,任务可在云端执行。

庞大云采集集群24*7不间断运行,不用担心IP被封,网络中断。

4、功能免费+增值服务,可按需选择。

免费版具备所有功能,能够满足用户的基本采集需求。

同时设置了一些增值服务(如私有云),满足高端付费企业用户的需要。

[文档可能无法思考全面,请浏览后下载,另外祝您生活愉快,工作顺利,万事如意!

]

举报
举报
版权申诉
版权申诉
word格式文档无特别注明外均可编辑修改;预览文档经过压缩,下载后原文更清晰! 立即下载
配套讲稿:

如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

特殊限制:

部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

关 键  词:
java 爬虫 抓取 网页 数据 教程
提示  冰豆网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:java爬虫抓取网页数据教程.docx
链接地址:https://www.bdocx.com/doc/30479117.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2008-2022 冰点文档网站版权所有

经营许可证编号:鄂ICP备2022015515号-1

收起
展开