本文主要是介绍【爬虫系列】第二部分 网页解析Jsoup,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Jsoup是一款Java的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
在爬虫采集网页领域主要作用是用HttpClient获取到网页后,使用Jsoup提取网页中需要的信息,Jsoup支持类似Jquery、CSS选择器,来获取需要的数据,使用非常方便。
下面结合代码简单展示如何使用Jsoup获取需要的页面数据。
一、Jsoup 入门demo
- public class JsoupHello {
-
- public static void main(String[] args) throws Exception{
- CloseableHttpClient httpclient = HttpClients.createDefault();
- HttpGet httpget = new HttpGet("http://www.cnblogs.com/"); // 创建httpget实例
-
- CloseableHttpResponse response = httpclient.execute(httpget);
- HttpEntity entity=response.getEntity();
- String content=EntityUtils.toString(entity, "utf-8");
- response.close();
-
- Document doc=Jsoup.parse(content);
- Elements elements=doc.getElementsByTag("title");
- Element element=elements.get(0);
- String title=element.text();
- System.out.println("网页标题是:"+title);
-
- Element element2=doc.getElementById("site_nav_top");
- String navTop=element2.text();
- System.out.println("口号:"+navTop);
-
- }
- }
1、使用httpClient 获取网页
2、使用jsoup parse解析网页,并根据丰富的getElement方法按照不同的属性获取元素值
二、常用查找dom元素方法
1、根据标签名(tagName)查找dom
- Elements elements= doc.getElementsByTag("title");
- Element element= elements.get(0);
- System.out.println(element.text());
2、根据元素Id查找
- Element elementById=doc.getElementById("footer");
- System.out.println(elementById.text());
3、根据class 名查找
- Elements elementsByClass=doc.getElementsByClass("post_item");
- for(Element e:elementsByClass)
- {
- System.out.println(e.html());
- }
4、根据attribute属性名查找
-
- Elements elementsByAttr=doc.getElementsByAttribute("width");
- for(Element e2:elementsByAttr)
- {
- System.out.println(e2.toString());
- }
5、根据attribute和attributeValue共同查找
-
- Elements elementsByAttrValue=doc.getElementsByAttributeValue("width", "142");
- System.out.println(elementsByAttrValue.toString());
三、使用Jsoup选择器查找dom元素
1、class类选择器使用
-
- Elements eleLinks= doc.select(".post_item .post_item_body h3 a");
- for(Element el:eleLinks)
- {
- System.out.println(el.text());
- }
2、带有href超链接的a标签查找
-
- Elements elea= doc.select("a[href]");
- for(Element ea:eleLinks)
- {
- System.out.println(ea.toString());
- }
3、查找图片标签
-
- Elements imgs= doc.select("img[src$=.png]");
- for(Element ea:imgs)
- {
- System.out.println(ea.toString());
- }
4、根据dom Id查找元素
-
- Element eleId=doc.select("#friend_link").first();
- System.out.println("##############纯文本"+eleId.text());
- System.out.println("##############纯文本"+eleId.html());
5、获取dom元素中指定属性值
- Elements eleLinks= doc.select(".post_item .post_item_body h3 a");
- for(Element el:eleLinks)
- {
- System.out.println("***********************标题是"+el.text());
- System.out.println("***********************连接是"+el.attr("href"));
- }
这篇关于【爬虫系列】第二部分 网页解析Jsoup的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!