2017-05-05 65 views
1

我有一個元素列表,我使用jsoup的方法attr()來獲取href屬性。 這裏是我的代碼部分:如何使用Jsoup獲得沒有額外字符的href鏈接?

String searchTerm = "tutorial+programming+"+i_SearchPhrase; 
    int num = 10; 
    String searchURL = GOOGLE_SEARCH_URL + "?q="+searchTerm+"&num="+num; 
    Document doc = Jsoup.connect(searchURL).userAgent("chrome/5.0").get(); 
    Elements results = doc.select("h3.r > a"); 
    String linkHref; 

    for (Element result : results) { 
     linkHref = result.attr("href").replace("/url?q=",""); 
     //some more unrelated code... 
     } 

因此,例如,當我使用搜索prase 「測試」 中,ATTR(的 「href」)產生(第一列表中的):

linkHref = https://www.tutorialspoint.com/software_testing/&sa=U&ved=0ahUKEwi_lI-T69jTAhXIbxQKHU1kBlAQFggTMAA&usg=AFQjCNHr6EzeYegPDdpHJndLJ-889Sj3EQ

在這裏我只想:https://www.tutorialspoint.com/software_testing/

什麼是解決這個問題的最好方法是什麼?我只是在linkHref(我知道如何)上添加一些字符串操作,或者是否有辦法讓href屬性包含較短的鏈接? 先進的謝謝

+0

如果你知道你的鏈接永遠是在上面的格式,你可以使用字符串的'lastIndexOf()'方法來找到最後的斜線,並從指數中刪除以後的所有字符。 –

+0

@ patrick-hainge我不知道最後一個斜槓後面的字符是什麼意思,或者他們來自哪裏,因此我不知道其他鏈接是否總是以上述格式 –

回答

3

如果你總是想刪除query參數,你可以使用String.indexOf()例如,

int lastPos; 
if(linkHref.indexOf("?") > 0) { 
    lastPos = linkHref.indexOf("?"); 
} else if (linkHref.indexOf("&") > 0){ 
    lastPos = linkHref.indexOf("&"); 
} 
else lastPos = -1; 

if(lastPos != -1) 
linkHref = linkHref.subsring(0, lastPos); 
+0

@ Atalia.d我更新了我的答案。你可以檢查任何字符的第一個索引,這是'&' –

+0

因爲我不知道這些額外字符的含義,我可以肯定它會始終以相同的格式?即它只是「?」和「&」我應該擔心? –

+1

@ Atalia.d這些是查詢參數。他們總是會像那樣開始。 –