1. 程式人生 > >String轉為為Html,像dom一樣操作html中的元素

String轉為為Html,像dom一樣操作html中的元素

專案在做爬蟲獲取資料中,發現有的返回的是html,想要根據class,id等來獲取元素中的資訊。發現有一個jar提供了此功能

maven

<dependency>
        <groupId>org.jsoup</groupId>
        <artifactId>jsoup</artifactId>
        <version>1.11.3</version>
    </dependency>

常用的方法:

getElementById(String id)                          用id獲得元素
getElementsByTag(String tag)                     用標籤獲得元素
getElementsByClass(String className)      用class獲得元素
getElementsByAttribute(String key)             用屬性獲得元素

獲得元素的資料:
attr(String key)                        獲得元素的資料
attr(String key, String value)          設定元素資料
attributes()                            獲得所以屬性
id()                                    獲得id
className() classNames()                獲得class得值
text()                                  獲得文字值
text(String value)                      設定文字值
html()                                  獲取html 
html(String value)                      設定html
outerHtml()                             獲得內部html
data()                                  獲得資料內容
tag()                                   獲得tag 
tagName()                               獲得tagname

val()  input值

獲取兄弟節點

 siblingElements() 
 firstElementSibling()
 lastElementSibling()
 nextElementSibling() 
 previousElementSibling()

demo

public static void vivoAd(){
		List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
		String cookie = "IUaGYjuwTupCdHUUpFO6OavCIUcsVNf8%3D1231";
		String url = "https://192.168.0.122:8080/planIdea/queryPlanPage.action";
		String html = HttpClientUtils.httpReptileGet(url,cookie,"");
		Document doc = Jsoup.parse(html);
		Elements bodys =  doc.getElementsByClass("spread_ul");
		for (Element body : bodys) { 
			Elements lis = body.getElementsByTag("li");
			for(Element li : lis){
				Elements spans = li.getElementsByTag("span");
				Elements as = spans.get(0).getElementsByTag("a");
				Map<String,Object> map = new HashMap<String,Object>();
				map.put("planId", as.attr("href").substring(as.attr("href").indexOf("=")+1));
				map.put("spread_name", spans.get(1).text());   //推廣計劃
				map.put("spread_exposure", spans.get(2).text()); //曝光量
				map.put("spread_downlaod", spans.get(3).text()); //下載量
				map.put("spread_conversion", spans.get(4).text()); //轉化率
				map.put("spread_consume", spans.get(5).text()); //轉化率
				list.add(map);
			}
		}
		System.out.println(list);
	}
public static void vivoAdStartMinTime(){
		String cookie = "31321upCdHUUpFO6OavCIUcsVNf8%3D";
		String url = "https://192.168.0.122:8080/planIdea/queryIdeaPage.action?planId=3934";
		String html = HttpClientUtils.httpReptileGet(url,cookie,"");
		Document doc = Jsoup.parse(html);
		Element el = doc.getElementById("startMinDate");
		System.out.println(el.val());
	}