2012-01-30 17 views
38

मैं उस वेबसाइट से एक साधारण वेबसाइट और स्क्रैप जानकारी पार्स करना चाहता हूं।जावा वेब साइट HTML के साथ जावा

मैं दस्तावेज़बिल्डर फ़ैक्टरी के साथ एक्सएमएल फाइलों का विश्लेषण करता था, मैंने HTML फ़ाइल के लिए एक ही चीज़ करने की कोशिश की लेकिन यह हमेशा एक अनंत लूप में आ गया।

URL url = new URL("http://www.deneme.com"); 
    URLConnection uc = url.openConnection(); 

    InputStreamReader input = new InputStreamReader(uc.getInputStream()); 
    BufferedReader in = new BufferedReader(input); 
    String inputLine; 

    FileWriter outFile = new FileWriter("orhancan"); 
    PrintWriter out = new PrintWriter(outFile); 

    while ((inputLine = in.readLine()) != null) { 
     out.println(inputLine); 
    } 

    in.close(); 
    out.close(); 

    File fXmlFile = new File("orhancan"); 
    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
    Document doc = dBuilder.parse(fXmlFile); 


    NodeList prelist = doc.getElementsByTagName("body"); 
    System.out.println(prelist.getLength()); 

समस्या क्या है? या किसी दिए गए एचटीएमएल टैग के लिए किसी वेब साइट से डेटा को स्क्रैप करने का कोई आसान तरीका है?

+0

सबसे पहले आप फ़ाइल के बजाय स्ट्रिंग का उपयोग कर सकते हैं। यह अनंत लूप में कहां प्रवेश करता है? शायद यूआरएल से इनपुट स्ट्रीम की वजह से जो आपको लगता है कि आपको यह समस्या नहीं है। –

उत्तर

78

ऐसा करने का एक आसान तरीका है। मैं JSoup का उपयोग करने का सुझाव देता हूं। JSoup के साथ आप

Document doc = Jsoup.connect("http://en.wikipedia.org/").get(); 
Elements newsHeadlines = doc.select("#mp-itn b a"); 

जैसे काम कर सकें या फिर आप शरीर चाहते हैं:

Elements body = doc.select("body"); 

या यदि आप सभी लिंक हैं:

Elements links = doc.select("body a"); 

अब आप कनेक्शन प्राप्त करने की आवश्यकता या धाराओं को संभाल लें। सरल। यदि आपने कभी भी jQuery का उपयोग किया है तो यह उसके समान ही है।

+0

सबसे पहले, धन्यवाद! लेकिन # एमपी-इट बी क्या है? – CanCeylan

+1

# mp-itn सिर्फ 'id = "mp-itn" ' –

+1

के साथ एक कंटेनर है जो मेरा संपादन देखें। यह समझना कि सीएसएस चयनकर्ता कैसे काम करते हैं, वास्तव में आपकी मदद करेंगे। –

5

एचटीएमएल हमेशा मान्य, अच्छी तरह से स्वरूपित एक्सएमएल नहीं है। एक XML पार्सर के बजाय एक विशेष HTML पार्सर आज़माएं।

http://java-source.net/open-source/html-parsers

19

निश्चित रूप से JSoup जवाब है: वहाँ उपलब्ध विभिन्न लोगों के एक जोड़े हैं। ;-)

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