2010-01-31 22 views
6

वर्तमान में मुझे एक प्रोग्राम की आवश्यकता है जो एक यूआरएल दिया गया है, वेबपृष्ठ पर सभी छवियों की एक सूची देता है।वेबपृष्ठ कार्यक्रम से सभी छवियां प्राप्त करें जावा

अर्थात्:

logo.png gallery1.jpg test.gif

वहाँ किसी भी ओपन सोर्स सॉफ्टवेयर उपलब्ध है इससे पहले कि मैं कोशिश करते हैं और कोड कुछ?

भाषा जावा होना चाहिए। धन्यवाद फिलिप

+0

आप एक प्रोग्राम या एक पुस्तकालय की आवश्यकता है? –

+0

क्षमा करें तुम्हारा क्या मतलब है? मुझे बस एक .jar फ़ाइल या कुछ चाहिए जो मैं किसी मौजूदा जावा प्रोग्राम आईएम लेखन में जोड़ सकता हूं। आईडी कल्पना करें कि कार्यक्रम काफी सरल होगा, मुझे बस छवि निष्कर्षण – Phil

+0

के संचालन की आवश्यकता है, मुझे नहीं लगता कि आपको ऐसी कोई लाइब्रेरी मिल जाएगी जो आपके परिदृश्य के अनुरूप है। आपको एक पार्सर का उपयोग करना होगा और कुछ डाउनलोड कोड स्वयं लिखना होगा। – craftsman

उत्तर

0

आप wget का उपयोग कर सकते हैं जिसमें बहुत से विकल्प उपलब्ध हैं।

या java wget के लिए गूगल ...

12

बस एक simple HTML parser, jTidy की तरह है, और फिर get all elements by tag nameimg का उपयोग करें और फिर एक List<String> या शायद List<URI> में प्रत्येक के src विशेषता इकट्ठा।

आप URL#openStream() का उपयोग कर एक URL के InputStream प्राप्त और उसके बाद किसी भी HTML पार्सर आप उपयोग करना चाहते करने के लिए इसे फ़ीड कर सकते हैं। यहां एक किकऑफ उदाहरण है:

InputStream input = new URL("http://www.stackoverflow.com").openStream(); 
Document document = new Tidy().parseDOM(input, null); 
NodeList imgs = document.getElementsByTagName("img"); 
List<String> srcs = new ArrayList<String>(); 

for (int i = 0; i < imgs.getLength(); i++) { 
    srcs.add(imgs.item(i).getAttributes().getNamedItem("src").getNodeValue()); 
} 

for (String src: srcs) { 
    System.out.println(src); 
} 

मुझे यह स्वीकार करना होगा कि Bozho द्वारा सुझाए गए अनुसार HtmlUnit वास्तव में बेहतर दिखता है।

+0

और htmlunit मोटे तौर पर आपके उत्तर के बारे में बता रहा है, इसलिए यह स्पष्ट करने के लिए +1 कि वास्तव में क्या होना चाहिए। – Bozho

+1

एचटीएमएलयूनीट हालांकि जेटीडी से कम फूला हुआ है। यह XPath का उपयोग करके वेबपृष्ठ खोलने और तत्वों/रुचि के गुण प्राप्त करने के लिए * अंतर्निहित * तरीके प्रदान करता है। – BalusC

0

आप HTML पार्स कर सकते हैं, और सभी एसआरसी एक संग्रह में आईएमजी तत्वों के गुण इकट्ठा (सही HtmlPage वस्तु प्राप्त करने के लिए कैसे को देखने के लिए पढ़ने के लिए कम Get started गाइड)। फिर प्रत्येक यूआरएल से प्रत्येक संसाधन डाउनलोड करें और इसे एक फ़ाइल में लिखें। पार्सिंग के लिए कई HTML पार्सर्स उपलब्ध हैं, Cobra उनमें से एक है।

4

यह HTML Parser (और किसी भी अन्य सभ्य HTML पार्सर) के साथ मृत सरल है:

Parser parser = new Parser("http://www.yahoo.com/"); 
NodeList list = parser.parse(new TagNameFilter("IMG")); 

for (SimpleNodeIterator iterator = list.elements(); iterator.hasMoreNodes();) { 
    Tag tag = (Tag) iterator.nextNode(); 
    System.out.println(tag.getAttribute("src")); 
} 
0

ओपन ग्राफ़ टैग और HTML इकाई के साथ, आप वास्तव में आसानी से अपने डेटा निकाल सकते हैं (PageMeta एक सरल परिणाम पकड़े POJO है):

Parser parser = new Parser(url); 

    PageMeta pageMeta = new PageMeta(); 
    pageMeta.setUrl(url); 

    NodeList meta = parser.parse(new TagNameFilter("meta")); 
    for (SimpleNodeIterator iterator = meta.elements(); iterator.hasMoreNodes();) { 
     Tag tag = (Tag) iterator.nextNode(); 

     if ("og:image".equals(tag.getAttribute("property"))) { 
      pageMeta.setImageUrl(tag.getAttribute("content")); 
     } 

     if ("og:title".equals(tag.getAttribute("property"))) { 
      pageMeta.setTitle(tag.getAttribute("content")); 
     } 

     if ("og:description".equals(tag.getAttribute("property"))) { 
      pageMeta.setDescription(tag.getAttribute("content")); 
     } 
    } 
0

आप बस जावा में

<html> 
 
<body> 
 
<p> 
 
<img src="38220.png" alt="test" title="test" /> 
 
<img src="32222.png" alt="test" title="test" /> 
 
</p> 
 
</body> 
 
</html>
रेगुलर एक्सप्रेशन का उपयोग कर सकते हैं

String s ="html"; //above html content 
    Pattern p = Pattern.compile("<img [^>]*src=[\\\"']([^\\\"^']*)"); 
    Matcher m = p.matcher (s); 
    while (m.find()) { 
     String src = m.group(); 
     int startIndex = src.indexOf("src=") + 5; 
     String srcTag = src.substring(startIndex, src.length()); 
     System.out.println(srcTag); 
    } 
संबंधित मुद्दे