java项目有时候咱们须要别人网页上的数据,怎么办?咱们能够借助第三方架包jsou来实现,jsoup的中文文档,那怎么具体的实现呢?那就跟我一步一步来吧html
最早确定是要准备好这个第三方架包啦,下载地址,获得这个jar后在须要怎么作呢?别急,咱们慢慢来java
将jsoup.jar拷贝到项目的WebRoot—>WEB-INF—>lib文件夹node
以后咱们须要将这个架包引入一下哦!web
右键项目选择build path—>configure build path—>libraries—>add jars—>找到刚刚放入的目录下的jsoup框架
准备工做完成了,接下来就是咱们的编码部分了,加油哦!post
既然是抓取网页的内容那确定首要有被抓的网站的地址,这里就以我其中一篇博客为准吧http://www.cnblogs.com/luhan/p/5953387.html网站
这个是我这篇文章的截图,好比我要抓取Android零碎知识点,以后会一直更新哦这一段文字ui
//获取整个网站的根节点,也就是html开头部分一直到结束,这里get方式,post方式是同样的
Document document = Jsoup.connect(url).get();编码
//输出一下咱们会看到整个字符串以下
System.out.println(document);url
这里只是截图了一部分
咱们会看到咱们须要抓的那一段文字在a标签包裹在,并且还有一个重要的就是id=cb_post_title_url,看过文档的应该知道,jsoup里面有getElementById这个方法,其实跟js里面获取元素是同样的,这里咱们就能够用
getElementById的方法来获取这个a标签,获取到后咱们就能够获取里面的内容了不是吗?而正好jsou也给咱们提供了这样的一个方法text()方法,就是获取标签的文本内容,记得是文本而不是html形式的
以下咱们经过getElementById这个方法来获取到咱们想要的a标签
Element a = document.getElementById("cb_post_title_url");
这时候咱们输出的内容以下
System.out.println(a.text());
是否是获得了咱们想要的了?固然啦,这只是jsoup的最简单的抓取而已,若是须要获取到的是个列表形式的啊,jsoup也同样能够的,咱们都知道id是惟一的,不能够重复的,因此咱们经过id获取到的只能是一行标签
可是通常列表好比ul-li咱们就能够用getElementsByTag这个方法,经过标签名获取,而后再经过for循环的方式一个一个的去抓就完事啦,接下来附上代码
package com.luhan.text; import java.io.IOException; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; public class Text { private static final String url = "http://www.cnblogs.com/luhan/p/5953387.html"; public static void main(String[] args) { try { //获取整个网站的根节点,也就是html开头部分一直到结束
Document document = Jsoup.connect(url).post(); Element a = document.getElementById("cb_post_title_url"); System.out.println(a.text()); } catch (IOException e) { // TODO Auto-generated catch block
e.printStackTrace(); } } }
jsoup里面的方法我就不一一介绍啦,不懂的小伙伴能够去看jsoup的中文文档哦,我就说说比较重要的方法吧
Jsoup.connect(url).post();获取网页的跟目录
getElementById经过id来获取
getElementsByClass经过class来获取
getElementsByTag经过标签名称来获取
text()获取标签的文本,再次强调一下是文本
html()获取标签里面的全部字符串包括html标签
attr(attributeKey)获取属性里面的值,参数是属性名称
注意
jsoup获取网页的根目录可能跟源代码不同,因此须要小伙伴们细心哦
至此jsoup抓取网页的数据就告一段落啦,说的不太好,欢迎你们多指点,这个我用java控制台的,javaweb以及Android用法是同样的,先要导入框架,而后调用方法就ok了