介绍
jsoup 是一款Java的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
准备工作
创建一个java的项目,这里我采用的是Maven项目,首先导入所需要的依赖包jsoup
<!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.11.3</version>
</dependency>
解析爬取内容
这里我们爬取的是一个天气预报的网址,为了能够让大家快速了解这个jsoup爬取的方法,这里主要是通过爬取获得广州的今天天气情况。
- 首先,检查网页源码,发现这个代码段
这里框框里面的是我们需要获取的内容
编写工具
- JsoupUtil.class – 连接url工具
- WeatherUtil.class – 获取广州天气工具
实现步骤
- 编写url工具,使用Document doc = Jsoup.connect(“http://example.com/”).get();获取url连接
public class JsoupUtil {
/**
* 从一个url获取
*/
public Document getDocument(String url) {
try {
return Jsoup.connect(url).get();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
- 编写获取天气工具:
public class WeatherUtil {
/**
* 获取广州的今天天气
*/
public String getWeather() {
//获取url连接对象
JsoupUtil jsoupUtil = new JsoupUtil();
Document doc = jsoupUtil.getDocument("http://www.weather.com.cn/weather1d/101280101.shtml");
//获取目标html代码:查id为today的标签元素
Elements elements = doc.select("[id=today]");
//获取今天天气:获取input标签的id为hidden_tile的元素,再获取该元素的value属性值
String weather = elements.select("input[id=hidden_title]").attr("value");
return weather;
}
}
- 最后测试是否成功
public class WeatherTest {
public static void main(String[] args) {
WeatherUtil weatherUtil = new WeatherUtil();
System.out.println(weatherUtil.getWeather());
}
}
参考资料
- jsoup官方中文文档为:http://www.open-open.com/
- API为:http://jsoup.org/apidocs/
总结
主要是通过select定位到标签元素,再结合JavaScript里面的一些例如append()的方法找到所需的标签,最后使用text()或其他方法获取到内容,其他方法详情可以参考上面的官方文档。下一期我们来体验编写一个java工具:发送验证码到电子邮箱