jsoup网络爬取数据HTML解析
2016-12-22 18:47
302 查看
Jsoup是一款网络爬取数据的解析器,可以解析HTML文件中的任何子节点,支持离线HTML文件、字符型HTML内容、URL的解析。非常方便和实用。
它获取内容的主要方式如下几点:
Elements elements = doc.select("span");
注:通过标签来查找,直接写 "标签名" 就好,不需要尖括号。
Elements elements = doc.select("#mySpan");
注:通过id来查找,使用方法跟css指定元素一样,用#
Elements elements = doc.select(".myClass");
注:通过id来查找,使用方法跟css指定元素一样,用 .
Elements elements = doc.select("span[class=class1]span[id=id1]");
注:规则为 标签名【属性名=属性值】,标签名可写可不写,多个属性即多个【】,如上。
Elements elements = doc.select("span[^cl]");
注:规则为 标签名【^属性名前缀】,标签名可写可不写,多个属性即多个【】。
Elements elements = doc.select("span[class~=^AB]");
注:规则为 标签名【属性名~=正则表达式】,以上的正则表达式的意思是查找以class值以AB为开头的标签,标签名可写可不写,多个属性即多个【】
Elements elements = doc.select("span:contains(3)");
注:规则为 标签名:contains(文本值)
Elements elements = doc.select("span:matchesOwn(^3)");
Document doc = Jsoup.connect("https://www.zhihu.com/").get(); //File f = new File("pathname"); //Document doc = Jsoup.parse(f, "UTF-8", "");//离线文件形式 //Document doc = Jsoup.parse("html_String");//HTML格式的字符串 Elements links = doc.select("a[href]"); for (Element link : links) { sff.append(link.attr("abs:href")).append(" ").append(link.text()).append(" "); } myString = sff.toString(); Log.i("href:", myString);
它获取内容的主要方式如下几点:
1.通过标签名来查找
<span>33</span><span>25</span>Elements elements = doc.select("span");
注:通过标签来查找,直接写 "标签名" 就好,不需要尖括号。
2.通过 id 来查找
<span id=\"mySpan\">36</span> <span>20</span>Elements elements = doc.select("#mySpan");
注:通过id来查找,使用方法跟css指定元素一样,用#
3.通过 class名 来查找
<span class=\"myClass\">36</span><span>20</span>Elements elements = doc.select(".myClass");
注:通过id来查找,使用方法跟css指定元素一样,用 .
4.利用标签内 属性名 查找元素
<span class=\"class1\" id=\"id1\">36</span><span class=\"class2\" id=\"id2\">36</span>Elements elements = doc.select("span[class=class1]span[id=id1]");
注:规则为 标签名【属性名=属性值】,标签名可写可不写,多个属性即多个【】,如上。
5.利用标签内 属性名前缀 查找元素
<span class=\"class1\" >36</span><span class=\"class2\" >22</span>Elements elements = doc.select("span[^cl]");
注:规则为 标签名【^属性名前缀】,标签名可写可不写,多个属性即多个【】。
6.利用标签内 属性名+正则表达式 查找元素
<span class=\"ABC\" >36</span><span class=\"ADE\" >22</span>Elements elements = doc.select("span[class~=^AB]");
注:规则为 标签名【属性名~=正则表达式】,以上的正则表达式的意思是查找以class值以AB为开头的标签,标签名可写可不写,多个属性即多个【】
7.利用标签 文本包含某些内容 来查找
<span>36</span><span>22</span>Elements elements = doc.select("span:contains(3)");
注:规则为 标签名:contains(文本值)
8.利用标签 文本包含某些内容+正则表达式 来查找
<span>36</span><span>22</span>Elements elements = doc.select("span:matchesOwn(^3)");
相关文章推荐
- android使用Jsoup进行html数据解析简单实例浅析
- Jsoup解析HTML获取数据
- Jsoup解析HTML获取数据的简单实例
- Android基础学习总结(十三)——利用jsoup解析html实现网络爬虫
- Python网络数据采集2:复杂HTML解析
- 【使用JSOUP实现网络爬虫】修改数据-设置一个元素的HTML内容
- Jsoup解析HTML页面数据(又扒到1万+的数据)
- 使用Jsoup解析html数据
- 网络爬虫2----JSoup解析HTML
- Jsoup—解析HTML页面数据的工具
- Jsoup入门:解析html 抽取数据
- Android开发本地及网络Mp3音乐播放器(十一)使用Jsoup组件请求网络,并解析音乐数据
- 【使用JSOUP实现网络爬虫】入门:解析和遍历一个HTML文档
- Android网络数据解析之Jsoup
- 【使用JSOUP实现网络爬虫】入门:解析和遍历一个HTML文档
- Jsoup解析html中的指定数据
- 【使用JSOUP实现网络爬虫】修改数据-设置一个元素的HTML内容
- Android之Jsoup解析Html抓包其他网站数据
- Python网络数据采集(2)——复杂HTML解析(1)
- 爬取微博的数据时别人用的是FM.view方法传递html标签那么jsoup怎么解析呢