jsoup抓取js(script)中的變數值
阿新 • • 發佈:2019-01-08
package com.hxqc.pricemonitor.trans;
import java.util.HashMap;
import java.util.Map;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class SerieExtTool {
/*設定網頁抓取響應時間*/
private static final int TIMEOUT = 10000;
public static Map<String, Object> getSerieExtDetail(int serieId) throws Exception{
/*車系引數配置頁面*/
String serieInfo = "http://car.autohome.com.cn/config/series/"+serieId+".html";
/*用來封裝要儲存的引數*/
Map<String, Object> map = new HashMap<String, Object>();
/*取得車系引數配置頁面文件*/
Document document = Jsoup.connect(serieInfo).timeout(TIMEOUT).get();
/*取得script下面的JS變數*/
Elements e = document.getElementsByTag("script").eq(6);
/*迴圈遍歷script下面的JS變數*/
for (Element element : e) {
/*取得JS變數陣列*/
String[] data = element.data().toString().split("var");
/*取得單個JS變數*/
for(String variable : data){
/*過濾variable為空的資料*/
if(variable.contains("=")){
/*取到滿足條件的JS變數*/
if(variable.contains("option") || variable.contains("config")
|| variable.contains("color") || variable.contains("innerColor")){
String[] kvp = variable.split("=");
/*取得JS變數存入map*/
if(!map.containsKey(kvp[0].trim()))
map.put(kvp[0].trim(), kvp[1].trim().substring(0, kvp[1].trim().length()-1).toString());
}
}
}
}
return map;
}
}