【准备工作】
复制代码
下载:jsoup-1.6.1.jar
【先看效果】
目标网站:中国天气
目的:获取今天的天气
目标HTML代码:
<li class="dn on" data-dn="7d1">
<h1>今天</h1>
<h2>8日</h2>
<big class="jpg50 d04"></big>
<big class="jpg50 n04"></big>
<p class="wea" title="雷阵雨">雷阵雨</p>
<p class="tem tem1"> <span>33</span><i>°C</i> </p>
<p class="tem tem2"> <span>25</span><i>°C</i> </p>
<p class="win">
<em>
<span title="无持续风向" class=""></span>
<span title="无持续风向" class=""></span>
</em>
<i>微风</i>
</p>
<div class="slid"></div>
</li>
复制代码
解析的java代码:
(1)审查网页元素后发现,我们要的内容在上面的目标HTML代码中,在整个网页中是在 class="dn on" data-dn="7d1" 的<li>中
(2)“今天” 两字在<h1></h1>中
(3)“8日” 两字在<h2></h2>中
(4)“雷阵雨” 三字在 class="wea" 中
(5)“33” 在第一个<span>中
(6)“25” 在第二个<span>中
(7)“微风” 两字在 第三个<i> 中
有了上面的分析,要获取到这些天气内容就易如反掌了。如下java代码:
复制代码
1 package com.zjm.www.test;
42 String lowTemperature = elements5.get(1).text()+"°C";
2
3 import java.io.IOException;
4
5 import org.jsoup.Jsoup;
6 import org.jsoup.nodes.Document;
7 import org.jsoup.select.Elements;
8
9 public class TestJsoup {
10
11 public Document getDocument (String url){
12 try {
13 return Jsoup.connect(url).get();
14 } catch (IOException e) {
15 e.printStackTrace();
16 }
17 return null;
18 }
19
20 public static void main(String[] args) {
21 TestJsoup t = new TestJsoup();
22 Document doc = t.getDocument("http://www.weather.com.cn/
html/weather/101280101.shtml");
23 // 获取目标HTML代码
24 Elements elements1 = doc.select("[class=dn on][data-dn=7d1]");
25 // 今天
26 Elements elements2 = elements1.select("h1");
27 String today = elements2.get(0).text();
28 System.out.println(today);
29 // 几号
30 Elements elements3 = elements1.select("h2");
31 String number = elements3.get(0).text();
32 System.out.println(number);
33 // 是否有雨
34 Elements elements4 = elements1.select("[class=wea]");
35 String rain = elements4.get(0).text();
36 System.out.println(rain);
37 // 高的温度
38 Elements elements5 = elements1.select("span");
39 String highTemperature = elements5.get(0).text()+"°C";
40 System.out.println(highTemperature);
41 // 低的温度
43 System.out.println(lowTemperature);
【详解】
44 // 风力
45 Elements elements6 = elements1.select("i");
46 String wind = elements6.get(2).text();
47 System.out.println(wind);
48 }
49 }
复制代码
结果打印出:
1 今天
2 8日
3 雷阵雨
4 33°C
5 25°C
6 微风
附:
jsoup的官方中文文档为:http://www.open-open.com/
API为:http://jsoup.org/apidocs/