2017-06-25 102 views
0

在HTML頁面中,我想選擇一個javascript變量的值。以下是HTML頁面的片段。如何使用jsoup解析JavaScript

<script id="page-data"> 
 
    var __IS_MIRA__; 
 
    var __INITIAL_STATE__ = undefined; 
 
    var __CACHE_REGISTRY__ = undefined; 
 
    var __NEXT_CACHE_ID__ = undefined; 
 
    var __DMP_CONFIG__ = {"context":{"access_token":null,"ad_sync_script_url":"http:\/\/www.taolao.com\/cdn\/manifest\/video\/x7775n8.m3u8?auth=1498553714-2562-k2kou1s3-7be1a0645b68824508f7f4989900d487yk2kou1s3&bs=1","admin":false,"as_number":"AS18403","user":null}

我的目的是讀取變量DMP_CONFIG從這個頁面上,使用jsoup值。用jsoup可以嗎?如果是,那麼如何?

這是我的Java代碼。

Document doc = Jsoup.connect(""+urlhtml).get(); 
 
       Element div = doc.getElementById("page-data"); 
 
       Pattern p = Pattern.compile("(?is) __DMP_CONFIG__ = \"(.+?)\""); // Regex for the value of the key 
 
       Matcher m = p.matcher(div.html()); 
 
       while(m.find()) { 
 
        mData =m.group(1); 
 
       }

回答

0

在這種情況下,你應該使用正則表達式匹配的組的結果。

ad_sync_script_url":"([^"]+)" 

示例代碼如下:

String REGEX = "ad_sync_script_url":"([^"]+)""; 

    Pattern r = Pattern.compile(REGEX); 
    Matcher m = r.matcher("String that you want to match"); // get a matcher object 

    if(m.find()){ 
    String matchValue = m.group(0); 
    String result = matchValue.Replace("\"",""); 
    }else{ 
     //doesn't match result. 
    } 

希望這有助於:)