2009-02-26 27 views
12

मुझे अक्सर आंतरिक उद्देश्यों के लिए कुछ सरल स्क्रीन स्क्रैप करने की आवश्यकता होती है (यानी एक तृतीय पक्ष सेवा जिसका उपयोग मैं केवल HTML के माध्यम से रिपोर्ट प्रकाशित करता हूं)। मेरे पास अब कम से कम दो या तीन मामले हैं। मैं apache httpclient का उपयोग कर सकता हूं और सभी आवश्यक स्क्रीन स्क्रैपिंग कोड बना सकता हूं लेकिन इसमें कुछ समय लगता है। यहां मेरी सामान्य प्रक्रिया है:सुपर-फास्ट स्क्रीन स्क्रैपिंग तकनीकें?

  1. वेब साइट पर चार्ल्स प्रॉक्सी खोलें और देखें कि क्या हो रहा है।
  2. अपाचे एचटीपी क्लाइंट का उपयोग करके कुछ जावा कोड लिखना शुरू करें, कुकीज़ से निपटने, एकाधिक अनुरोध
  3. HTML के पार्सिंग से निपटने के लिए जेरिको एचटीएमएल का उपयोग करें।

मेरी इच्छा है कि मैं बस "अपना सत्र रिकॉर्ड" कर सकता हूं और फिर सत्र से सत्र में भिन्न चीजों को पैरामीट्रिज कर सकता हूं। कल्पना करें कि सभी अनुरोध HTTP को पकड़ने के लिए चार्ल्स का उपयोग करें और फिर संबंधित क्वेरी स्ट्रिंग या पोस्ट पैराम को पैरामीट्रिज़ करें। वोला मेरे पास एक पुन: प्रयोज्य http स्क्रिप्ट है।

क्या ऐसा कुछ भी है जो पहले से ही करता है? मुझे याद है जब मैं एक बड़ी कंपनी में काम करता था, वहां एक उपकरण होता था जिसे हमने बुध इंटरएक्टिव द्वारा लोड रनर कहा जाता था, जो अनिवार्य रूप से एक http सत्र रिकॉर्ड करने और इसे पुन: प्रयोज्य (परीक्षण उद्देश्यों के लिए) बनाने का एक अच्छा तरीका था। दुर्भाग्यवश, वह उपकरण बहुत महंगा है।

+0

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

उत्तर

5

मैं भी सेलेनियम और/या BeautifulSoup पर देखने हैं तो आप:

ट्विल

सेलेनियम के अलावा, आप भी ट्विल, कमांड लाइन साथी की जाँच हो सकता है पाइथन का उपयोग करने के लिए तैयार हैं। वहाँ भी स्वत: वेबसाइट परीक्षण है कि तुम क्या चाहते हो सकता है के लिए एक अच्छा परीक्षण उपकरण Twill है। यह भी अजगर में लिखा गया है, और यह एक अजगर एपीआई है, लेकिन वहाँ भी एक सरल कमांड भाषा आप इसके साथ उपयोग कर सकते हैं। यहाँ ट्विल प्रलेखन से एक उदाहरण ::

setlocal username <your username> 
setlocal password <your password> 

go http://www.slashdot.org/ 
formvalue 1 unickname $username 
formvalue 1 upasswd $password 
submit 

code 200  # make sure form submission is correct! 
+0

मुझे टवील में पेश करने के लिए धन्यवाद। मुझे लगता है कि यह मुझे कुछ चाहिए जो मुझे चाहिए। यद्यपि कोई रिकॉर्डिंग क्षमता नहीं है, मुझे लगता है कि इसकी स्क्रिप्टिंग भाषा की सादगी मुझे बहुत तेज़ स्क्रीन-स्क्रैपिंग कोड बनाने की अनुमति देगी। इसलिए मैंने इसे बक्षीस के जवाब के रूप में चुना है। – Ish

+0

मैंने त्वरित कोड नमूने के कारण भी आपका उत्तर चुना जो मुझे दिखाता है कि इसका उपयोग करना कितना आसान है। – Ish

4

आप इस बात का जिक्र नहीं करते कि आप इसका क्या उपयोग करना चाहते हैं; एक समाधान है कि वेब ब्राउजर को अपने कार्यों को दोहराए जाने पर एक स्वीकार्य समाधान है, तो सेलेनियम जैसे टूल का उपयोग करके अपने वेब ब्राउजर को "स्क्रिप्ट" करना है। आप जो करते हैं उसे रिकॉर्ड करने के लिए Selenium IDE का उपयोग कर सकते हैं और फिर पैरामीटर को बदल सकते हैं।

9

HtmlUnit जावा में लिखे एक स्क्रिप्ट योग्य, हेडलेस ब्राउज़र है। हम इसे कुछ बेहद ग़लत-भारी, जटिल वेब पृष्ठों के लिए उपयोग करते हैं और यह आमतौर पर बहुत अच्छी नौकरी करता है।

चीजों को और आसान बनाने के लिए आप इसे ज्योथन में चला सकते हैं। परिणामी कार्यक्रम कड़ी मेहनत से ब्राउज़र का उपयोग करने के तरीके की प्रतिलिपि की तरह अधिक पढ़ता है।

3

मेरी इच्छा है कि मैं बस "अपना सत्र रिकॉर्ड" कर सकता हूं और फिर सत्र से सत्र में भिन्न चीजों को पैरामीट्रिज कर सकता हूं।

यदि आपके पास विजुअल स्टूडियो टेस्ट संस्करण है तो यह वेब टेस्ट फ़ंक्शन बिल्कुल ठीक करता है। यदि आप वीएस का उपयोग नहीं कर रहे हैं या अकेले स्टैंड टूल चाहते हैं तो मुझे OpenSpan के साथ बड़ी सफलता मिली है। यह सिर्फ वेब से अधिक है, यह विंडोज ऐप करता है, और जावा!

3

सेलेनियम मेरा पहला चयन होगा, क्योंकि आईडीई आपको आपके लिए एक सत्र "रिकॉर्डिंग" द्वारा आसान तरीके से करने का मौका देता है। लेकिन, अगर आप जो भी प्रदान करते हैं उससे खुश नहीं हैं, तो आप वेबसाइट पर प्रोग्रामेटिक रूप से चलने के लिए Beautiful Soup नामक पायथन मॉड्यूल का भी उपयोग कर सकते हैं।

3

Coscripter

http://coscripter.research.ibm.com/coscripter

वेब आधारित प्रक्रियाओं को सरल बनाना।

CoScripter रिकॉर्डिंग, स्वचालित के लिए एक प्रणाली है, और साझा करने एक वेब में प्रदर्शन जैसे मुद्रण तस्वीरें ऑनलाइन ब्राउज़ आर प्रोसेस करता है, या डाक के लिए एक छुट्टी पकड़ का अनुरोध, जाँच उड़ान आगमन समय। प्रक्रियाओं के लिए निर्देश दर्ज की गई और में आसानी से पढ़ने के CoScripter वेब साइट पर पाठ यहाँ, इसलिए किसी को भी उनमें से उपयोग कर सकते हैं संग्रहीत कर रहे हैं। आप एक वेब आधारित प्रक्रिया के साथ परेशानी हो रही है, अगर कोई इसके लिए एक CoScript लिखा है देखने के लिए जाँच!

Wget

सामग्री की तुरंत नीचे खींच करने के लिए, wget का उपयोग करें:

wget -r -n -k -w 2 foo.com 

फिर HTML स्थानीय रूप से पार्स।

http://twill.idyll.org/

1

मैं मैन्युअल रूप से ब्याज की साइट का निरीक्षण यह संरचना है parametrize करने के लिए DomInspector प्रयोग किया जाता है। फिर इस parametrized संरचना का उपयोग कर सरल Apache HttpClient और हाथ से बनाया पार्सर। असल में मैं किसी भी साइट से पैरामीटर के छोटे से ट्विक के साथ स्वचालित रूप से किसी भी जानकारी निकाल सकता हूं .. यह सैक्स पार्सर कैसे काम करता है, यह सब कुछ है, आपको यह बताने की ज़रूरत है कि टैग के अनुक्रम में आप डेटा को हथियाने शुरू करना चाहते हैं। उदाहरण के लिए, Google के पास खोज परिणामों का सुंदर मानक प्रारूप है .. इसलिए, आप केवल 'टैब' की तीसरी घटना पर चलते हैं और 'div' से पहले 'div' तक पाठ प्राप्त करना शुरू करते हैं, 'अंत'/div '

1

iMacro है स्क्रिप्ट योग्य लेकिन केवल फ़ायरफ़ॉक्स के लिए मुझे लगता है कि यह प्रदर्शन में बहुत अच्छा नहीं है लेकिन अधिकांश जटिल स्थितियों को संभाल सकता है और आसानी से सामान रिकॉर्ड कर सकता है।

+0

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

1

इंटरनेट एक्सप्लोरर ब्राउज़र सहायक ऑब्जेक्ट (BHOs) का समर्थन करता है। वे IE 'HWND (विंडो हैंडल) तक पहुंच सकते हैं और वहां से पिक्सेल को स्क्रैप करना आसान है। IWebBrowser2 COM इंटरफेस भी आप HTTP अनुरोध तक पहुँच देता है, और आप के माध्यम से IWebBrowser2::Document = IHTMLDocument/IHTMLDocument2 /IHTMLDocument3

1

Firefox का उपयोग कर पार्स HTML दस्तावेज़ वापस प्राप्त कर सकते हैं, यह एडऑन और संवर्द्धन के लिए अपने शक्तिशाली समर्थन के साथ इसका अधिकांश भाग को लागू करने के संभव हो जाना चाहिए हालांकि, वास्तव में "हेडलेस" चलाने का मतलब नहीं होगा, लेकिन वास्तव में एक वास्तविक पटकथा ब्राउज़र होना चाहिए। इसके अलावा, मैंने पढ़ा था कि गूगल के क्रोम ब्राउज़र एक ऐसी ही तकनीक का उपयोग करता स्वचालित प्रतिगमन परीक्षण करना याद करने लगते हैं।

1

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

वे वेब लेनदेन निगरानी सेवाओं की पेशकश करते हैं, जिसका अर्थ यह है कि आप अन्य उपयोगों के लिए स्क्रिप्ट निर्यात कर सकते हैं, लेकिन वे आपके वेब ब्राउज़र/उनकी सशुल्क सेवा के बाहर उपयोग करने के लिए बहुत स्वामित्व हो सकते हैं।

http://www.dejaclick.com/

1

मैं Badboy की जाँच होगी। यह एक आईई ब्राउज़र चलाता है, लेकिन आप सचमुच रिकॉर्ड पर क्लिक कर सकते हैं और यह आपकी सभी गतिविधियों को रिकॉर्ड करता है।

तब आप उस स्क्रिप्ट के प्रसंस्करण को स्वचालित और एक डेटास्रोत से मान सकते हैं (ODBC, एक्सेल, आदि ...)

Badboy Software

2

iOpus iMacros http://www.iopus.com/imacros/ की कोशिश करो। मैं स्क्रीन स्क्रैपिंग के लिए इसका उपयोग कर रहा हूं और यह बहुत अच्छी तरह से काम कर रहा है और गति भी बहुत अच्छी है। यह महंगा नहीं है।

यह ब्राउज़ करते समय स्क्रिप्ट रिकॉर्ड करेगा। फिर आप जावा, .net, आदि का उपयोग करके स्क्रिप्ट को पैरामीट्रिज कर सकते हैं और निष्पादित कर सकते हैं

1

मैं Fiddler पर आपके अनुरोधों का न्याय करके यह सब कुछ करूँगा जो आपको चाहिए।

2

पायथन और पर्ल दोनों एक मॉड्यूल (पर्ल के लिए WWW :: मशीनीकरण) मशीनीकरण कहा जाता है यह आसान programmaticly ब्राउज़र के व्यवहार करने के लिए करता है कि (फ़ॉर्म भरते समय, कुकीज़ से निपटने, आदि) है।

तो, अजगर + BeautifulSoup (महान html/XML पार्सर) + मशीनीकरण (ब्राउज़र कार्यों) = सुपर आसान/तेजी से स्क्रेपर

+1

त्वरित प्रश्न, मैकेनाइजेशन AJAX संभाल सकता है? – un33k

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