java第三方网页解析插件
maven依赖
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.11.3</version>
</dependency>
参考官方例子抓取网页数据
Load a Document from a URL
我们以抓取中行发布的汇率数据为例
中行汇率网址:http://srh.bankofchina.com/search/whpj/search.jsp
通过分析网页源码可知,该页面数据是通过提交表单的方式加载的。
private static final String CHINA_BANK_URI = "http://srh.bankofchina.com/search/whpj/search.jsp";
private static void parseHtmlFromURI() throws IOException, ParseException {
Map<String, String> requestParams = new HashMap<String, String>();
requestParams.put("erectDate", "2018-07-20");
requestParams.put("nothing", "2018-07-20");
requestParams.put("pjname", "1316");
Document doc = Jsoup.connect(CHINA_BANK_URI).data(requestParams).post();
// Elements elements = doc.select(".publish table tr:eq(1) td");
Elements elements = doc.select(".publish table tr:eq(1)");
elements = elements.select("td");
for(Element element : elements) {
System.out.println(element.text());
}
}
这里是抓取了表格中第一行的数据
requestParams
中保存了请求数据时需要传递的参数
Document doc = Jsoup.connect(CHINA_BANK_URI).data(requestParams).post();
connect()
设置请求路径
data()
设置请求需要的参数
post()
设置请求方式为post
Elements elements = doc.select(".publish table tr:eq(1)");
elements = elements.select("td");
利用css
或与jquery
相似的选择器语法获取目标元素
选择器语法详情:Use selector-syntax to find elements
for(Element element : elements) {
System.out.println(element.text());
}
遍历目标元素集合,获取元素中的值
从元素中获取属性、文本或HTML内容:Extract attributes, text, and HTML from elements