开始学习java爬虫,网上好多的小项目,做起来简单,能增加学习的自信心,现在就教大家我学习的一个小项目。
以《第一行代码--安卓》的作者为例,将他在csdn发表的博客信息都挖取出来,郭霖的博客地址是:“http://blog.youkuaiyun.com/guolin_blog”
在动手实验之前,假设你已经基本掌握了如下的技能:JAVA基础编程,简单的正则表达式,JS或者jQuery的编程能力,此外还学过http协议的一些知识。除了这些知识还有一个jsoup,它能使Java程序像jQuery那样的语法来操作html的Dom节点元素,jsoup也有像jQuery一样的选择器功能,比如getElementById,getElemementsByClass等语法与JavaScript像极了,此外jsoup还有select选择器功能。所以,这里只要稍微掌握jsoup语法就可以像JS操作Dom一样的用Java来处理请求到的html网页。jsoup的中文官方教程地址http://www.open-open.com/jsoup/。
工欲善其事必先利其器。开始之前,你应该有一定的工具,比如一款熟悉的ide,用来调试和查看变量。一个web调试工具,如火狐的firebug之类的。总之,就是有一个java web程序员日常开发和调试使用的工具就差不多了。
第一步:新建一个Java Se项目。这个项目如果是一个Maven项目,那么需要添加如下的依赖配置:
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.10.2</version>
</dependency>
如果这个项目不是Maven项目,那么你需要下载jsoup-1.10.2.jar包,然后在你的项目右键新建一个lib目录,把下载的jar包放进去,并把jar包添加到classpath。
第二步:分析代码编写思路:先创建一个Conection链接,这个链接包含向优快云服务器发起请求的url地址,userAgent参数,timeOut参数已经Http请求类型等。接着向服务器发送get请求Document doc = conn.get();注意:很多网络原因导致这一步出现异常,比如timeOut时间设置太短也会报错,这里我设置为5000毫秒。如果这一步你的程序没有报错,说明已经获取了请求的html文档。然后我们可以将html的body标签里面的内容赋值给遍历Element数据类型的实例body。处理body标签的内容jsoup正式出场,除了jsoup还会夹杂简单的正则内容。
用firebug可以看到。首页与博客文章相关的内容在这个div class="list_item_new"标签下面,而这个div下面包含3个div,分别是:div id="article_toplist" class="list"表示置顶的文章,div id="article_list" class="list"博文列表所在的div,div id="papelist" class="pagelist"底下分页信息所在的div。抛开置顶这个div,我们只关注文章列表的div和分页信息div。如果你仔细的分析,那么会发现我们关心的每篇文章而每篇文章的标签如下div:`
每篇文章占据的div,完整的html元素如下:
<div class="list_item article_item">
<div class="article_title">
<span class="ico ico_type_Original"></span>
<h1>
<span class="link_title"><a href="/guolin_blog/article/details/51336415">
Android提醒微技巧,你真的了解Dialog、Toast和Snackbar吗?
</a></span>
</h1>
</div>
<div class="article_description">
Dialog和Toast所有人肯定都不会陌生的,这个我们平时用的实在是太多了。而Snackbar是Design Support库中提供的新控件,有些朋友可能已经用过了,有些朋友可能还没去了解。但是你真的知道什么时候应该使用Dialog,什么时候应该使用Toast,什么时候应该使用Snackbar吗?本篇文章中我们就来学习一下这三者使用的时机,另外还会介绍一些额外的技巧... </div>
<div class="article_manage">
<span class="link_postdate">2016-07-26 07:55</span>