2010-07-08 3 views
56

के साथ वेब स्क्रैपिंग मैं जावा आधारित एपीआई के किसी भी अच्छे वेब स्क्रैपिंग को खोजने में सक्षम नहीं हूं। जिस साइट को मुझे स्क्रैप करने की आवश्यकता है वह किसी एपीआई को भी प्रदान नहीं करता है; मैं कुछ पेजआईड्स का उपयोग करके सभी वेब पेजों पर फिर से शुरू करना चाहता हूं और एचटीएमएल टाइटल/अन्य सामान अपने डीओएम पेड़ों में निकालना चाहता हूं।जावा

वेब स्क्रैपिंग के अलावा अन्य तरीके हैं?

धन्यवाद

उत्तर

75

शीर्षक निकाला जा रहा है मुश्किल नहीं है, और आप कई विकल्प हैं, स्टैक ओवरफ़्लो पर यहाँ "जावा एचटीएमएल पारसर्स" के लिए खोज। उनमें से एक Jsoup है।

आप डोम का उपयोग कर यदि आप पृष्ठ संरचना जानते पेज नेविगेट कर सकते हैं, को देखने के http://jsoup.org/cookbook/extracting-data/dom-navigation

यह एक अच्छा पुस्तकालय है और मैं अपने पिछले परियोजनाओं में यह प्रयोग किया है।

+2

धन्यवाद, यह एक अच्छी लाइब्रेरी है जिसमें कोई निर्भरता नहीं है, इसलिए यह काफी हल्का है। इसके अलावा, यह हेडलेस है इसलिए इसे ब्राउज़र की आवश्यकता नहीं है (मुझे ** सेलेनियम ** क्रोम खोलने में समस्याएं आई हैं और मैं ** एचटीएमएलयूनीट ** का उपयोग नहीं कर सका)। ** सेलेनियम ** अधिक यथार्थवादी होना चाहिए लेकिन यह लाइब्रेरी अधिकांश स्क्रैपिंग मामलों में उद्देश्य प्रदान कर सकती है और सेटअप करना वास्तव में आसान है: निर्भरता जोड़ें और आप जाने के लिए अच्छे हैं। –

+0

वास्तव में उत्कृष्ट पुस्तकालय। आसान सेटअप और शक्तिशाली regex समर्थन। doc.select ("ली [आईडी^= cosid_]")। ठंडा। – EMM

+0

मैंने हाल ही में अपने वेब स्क्रैपिंग फ्रेमवर्क को खोला है जो न केवल आपको Jsoup और HtmlUnit के साथ दस्तावेज़ों को पार्स करने की अनुमति देता है, बल्कि आपके लिए समांतरता को भी संभालता है और यदि आवश्यक हो तो प्रॉक्सी सर्वर का एक बड़ा पूल प्रबंधित कर सकता है: https://github.com/subes/invesdwin-webproxy – subes

2

एक HTML पार्सर जैसे टैगसॉप, एचटीएमएल क्लेनर या नेको HTML देखें।

19

आपका सबसे अच्छा शर्त के बाद से यह

  1. सांकेतिक शब्दों में बदलनेवाला के लिए दृश्य प्रतिक्रिया प्रदान करता है सेलेनियम वेब ड्राइवर का उपयोग करने के लिए है (कार्रवाई में अपने scraping देखते हैं, जहां यह बंद हो जाता है देखें)
  2. सटीक और लगातार के रूप में यह सीधे नियंत्रित करता है आप ब्राउज़र का उपयोग करें।
  3. धीमा। HtmlUnit जैसे वेब पेजों को हिट नहीं करता है लेकिन कभी-कभी आप बहुत तेजी से हिट नहीं करना चाहते हैं।

    एचटीएमएल्यूनिट तेज़ है लेकिन जावास्क्रिप्ट और AJAX को संभालने में भयानक है।

12

HTMLUnit वेब scraping करने के लिए इस्तेमाल किया जा सकता है, यह पृष्ठों लागू & प्रस्तुत करने फॉर्म भरने का समर्थन करता है। मैंने इसे अपने प्रोजेक्ट में इस्तेमाल किया है। यह वेब स्क्रैपिंग के लिए अच्छी जावा लाइब्रेरी है। read here for more

4

जावा के लिए मशीनीकरण इसके लिए एक अच्छा फिट होगा, और वाडजी एस्सम ने उल्लेख किया है कि यह एचएमएलटी के लिए जेएसओपी का उपयोग करता है। मशीनीकरण एक मंचपूर्ण HTTP/HTML क्लाइंट है जो नेविगेशन, फॉर्म सबमिशन और पेज स्क्रैपिंग का समर्थन करता है।

http://gistlabs.com/software/mechanize-for-java/ (और GitHub यहाँ https://github.com/GistLabs/mechanize)

2

आप वेब scraping के लिए ui4j या cdp4j पुस्तकालय की कोशिश कर सकते। ui4j को जावा 8 की आवश्यकता है और जावाएफएक्स वेबकिट ब्राउज़र का उपयोग करता है और cdp4j को क्रोम की आवश्यकता होती है।

1

वेब स्क्रैपर का उपयोग करके, आप वेब पेज से उपयोगी सामग्री निकाल सकते हैं और लागू होने वाले किसी प्रारूप में रूपांतरित कर सकते हैं।

WebScrap ws= new WebScrap(); 
//set your extracted website url 
ws.setUrl("http://dasnicdev.github.io/webscrap4j/"); 
//start scrap session 
ws.startWebScrap(); 

अब आप अपने वेब खत्म सत्र के शुरू और स्क्रैप या webscrap4j library का उपयोग कर जावा में डेटा निकालने के लिए तैयार है।

शीर्षक के लिए:

System.out.println("-------------------Title-----------------------------"); 
System.out.println(ws.getSingleHTMLTagData("title")); 

टैगलाइन के लिए:

System.out.println("-------------------Tagline-----------------------------"); 
System.out.println(ws.getSingleHTMLScriptData("<h2 id='project_tagline'>", "</h2>")); 

सभी एंकर टैग के लिए:

System.out.println("-------------------All anchor tag-----------------------------"); 
    al=ws.getImageTagData("a", "href"); 
    for(String adata: al) 
    { 
    System.out.println(adata); 
    } 

छवि डेटा के लिए:

System.out.println("-------------------Image data-----------------------------"); 
    System.out.println(ws.getImageTagData("img", "src")); 
    System.out.println(ws.getImageTagData("img", "alt")); 

उल ली डाटा के लिए:

System.out.println("-------------------Ul-Li Data-----------------------------"); 
    al=ws.getSingleHTMLScriptData("<ul>", "</ul>","<li>","</li>"); 
    for(String str:al) 
    { 
    System.out.println(str); 
    } 

इस tutorial पूर्ण स्रोत कोड की जांच के लिए। http://jaunt-api.com

2

वहाँ भी सैर जावा वेब को स्क्रैप करना & JSON क्वैरी है।

यह वास्तविक ईटीएल उपकरण की तरह पूरी तरह से मॉडल संचालित है। डेटा संरचना, कार्य वर्कफ़्लो और पृष्ठों को स्क्रैप करने के लिए XML परिभाषा फ़ाइलों के सेट के साथ परिभाषित किया गया है और कोई कोडिंग आवश्यक नहीं है। प्रश्न या तो HTMLUnit के साथ JSoup या XPath के साथ चयनकर्ताओं का उपयोग करके लिखा जा सकता है।

0

आप बड़ी राशि पृष्ठों या डेटा के स्क्रैप को स्वचालित बनाना चाहते हैं, तो आप Gotz ETL की कोशिश कर सकते -

+0

7 महीने पहले पूछे गए, 7 महीने पहले। – Eritrean