Jsoup:用于解析HTML,类似XML中的解析器。
Jsoup是一个Java的开源HTML解析器,可直接解析某个URL地址、HTML文本内容。
---------------------------------------------------------------------------------------------------------------------------
下面举两个例子,爬百度首页的内容和IT时代网的内容:
一:首先,得先收入依赖(jar包)
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.11.2</version> </dependency>
二:我这里就写一个测试类把,直接打印输出百度的内容:
1.首先进入www.baidu.com的首页,右击 查看源代码:
然后,根据其中的节点或者其它标签来得到你所想要的内容:
我这里就得到一些a标签和img标签的内容:
@Test public void test(){ try{ Document document=Jsoup.connect("https://www.baidu.com/").get(); Elements elements=document.select("a"); for (Element element : elements) { System.out.println(element.text()); //<a hred="www.baidu.com">百度首页</a> } Elements elements1=document.select("img"); for (Element element : elements1) { String src=element.attr("src"); System.out.println(src.replace("baidu","haha")); System.out.println(element.attr("src")); } System.out.println(document.title()); }catch (Exception e){ e.printStackTrace(); } }
三:IT时代网中的一些内容,这个主要根据其中的节点来获得其中的内容
通过层层递进,得到一个节点一个节点下面的内容:
如下:
@Test //IT时代网: public void test1(){ try { Document document = Jsoup.connect("http://www.ittime.com.cn").get(); //body > div:nth-child(4) > div > div.wrap_left.pull-left.content_L > div > ul.thisclass Elements elements=document.select("body").select("div:nth-child(4)").select("div").select("div.wrap_left.pull-left.content_L").select("div").select("ul.thisclass").select(".newsList"); //输出节点的大小: System.out.println("节点大小"+elements.size()); for (Element element : elements) { //body > div:nth-child(4) > div > div.wrap_left.pull-left.content_L > div > ul.thisclass > dl:nth-child(1) > dt //图片 System.out.println("图片"+element.select("dt").select("a").select("img").attr("src")); //a标签: System.out.println("a标签:"+element.select("dd").select("h2").select("a").text()); //p标签: System.out.println("p标签:"+element.select("dd").select("p").text()); } }catch (Exception e){ e.printStackTrace(); } }
至于网络爬虫,最主要的就是通过查看其源代码了解中间的节点属性等,然后通过一些方法 就可以得到你所想要的内容,从而存入你想要存入得到地方。