2010-11-10 10 views
14

मैं किसी वेबपृष्ठ के URL को निकालने के लिए Jsoup का उपयोग कर रहा हूं। उन यूआरएल का href विशेषता रिश्तेदार की तरह हैं:जेएसओपी का उपयोग कर रिश्तेदार एचटीएमएल लिंक से पूर्ण यूआरएल निकालने के लिए कैसे?

<a href="/text">example</a> 

यहाँ मेरी प्रयास है:

Document document = Jsoup.connect(url).get(); 
Elements results = document.select("div.results"); 
Elements dls = results.select("dl"); 
for (Element dl : dls) { 
    String url = dl.select("a").attr("href"); 
} 

यह ठीक काम करता है, लेकिन अगर मैं

String url = dl.select("a").attr("abs:href"); 

का उपयोग की तरह निरपेक्ष URL प्राप्त करने के लिए http://example.com/text, यह काम नहीं कर रहा है। मैं पूर्ण यूआरएल कैसे प्राप्त कर सकता हूं?

+0

उदाहरण एचटीएमएल कहां है? हम अनुमान लगाकर आपकी मदद नहीं कर सकते .... –

उत्तर

15

आपको Element#absUrl() की आवश्यकता है।

String url = dl.select("a").absUrl("href"); 

आप जिस तरह से चयन छोटा कर सकते हैं:

Document document = Jsoup.connect(url).get(); 
Elements links = document.select("div.results dl a"); 
for (Element link : links) { 
    String url = link.absUrl("href"); 
} 
8

String url = dl.select("a").absUrl("href");

सही नहीं है क्योंकि dl.select("a") एक आइटम लेकिन एक संग्रह नहीं लौटेगा। आप सूचकांक द्वारा तत्वों प्राप्त करने की आवश्यकता

जैसे:

Elements elems = dl.select("a"); 
Element a1 = elems.get(0); //0 is the index first element increasing to (elems.size()-1) 
now you can do 
a1.absUrl("href"); 

क्या आप वाकई केवल एक आइटम ऊपर चयन से परिणाम होगा, या कि आइटम आप चाहते हैं पहले हो जाएगा रहे हैं, आप कर सकते हैं:

String url = dl.select("a").get(0).absUrl("href"); 

कौन सा भी एक ही

String url = dl.select("a").first().absUrl("href"); 

के रूप में यह फाई होने के लिए नहीं है आरएसटी तत्व वैसे भी, आप अपने तत्व की अनुक्रमणिका के साथ हमेशा String url = dl.select("a").get(0).absUrl("href"); में 0 को प्रतिस्थापित कर सकते हैं। या एक ऐसे चयन का उपयोग करें जो अधिक विशिष्ट है जो केवल एक तत्व के परिणामस्वरूप होगा।

संबंधित मुद्दे