दिलचस्प पोस्ट
मेथमैटिका में रनटाइम त्रुटियों के हिमस्खलन को रोकना JSON.NET पार्सर * मेरी वस्तुओं को दोहरी धारावाहिक होना * लगता है एक NSArray पर प्राकृतिक रूप कैसे करें? jQuery: ड्रॉप डाउन को पॉप्युलेट करने के लिए सर्वश्रेष्ठ अभ्यास? एक्सप्रेस का उपयोग कर नोडजेएस सर्वर से एक फ़ाइल डाउनलोड करें वैरिएबल द्वारा जावास्क्रिप्ट ओब्जेक्ट की सेट करें नाम नोड सुरक्षित मोड में है। छोड़ने में सक्षम नहीं JSF पृष्ठों से अनुरोध और सत्र पैरामीटर और गुण प्राप्त करें चल रहा है rmi सर्वर, वर्ग नापसंद सूत्रों का एक अलग ढेर है? SQL सर्वर में डुप्लिकेट रिकॉर्ड हटाएं? क्या मुझे 'allow_url_fopen' को PHP में अनुमति देनी चाहिए? संकलन के लिए जावा 7 का इस्तेमाल करने के लिए एसबीटी की स्थापना करना? क्या मैं एक जेएमबुबार के साथ जेटबबेडपैन कर सकता हूं? नेट में डॉट्स के साथ सिमेंटिक यूआरएल

आप AJAX पृष्ठों को कैसे स्क्रैप करते हैं?

शीर्षक ही सब कुछ कह देता है। कृपया AJAX पृष्ठों को कैसे स्क्रैप करें।

वेब के समाधान से एकत्रित समाधान "आप AJAX पृष्ठों को कैसे स्क्रैप करते हैं?"

अवलोकन:

सभी स्क्रीन स्क्रैपिंग को पहले उस पृष्ठ के मैन्युअल समीक्षा की आवश्यकता है जिसे आप संसाधनों को निकालना चाहते हैं। जब आप AJAX के साथ काम करते हैं तो आपको आमतौर पर सिर्फ HTML का थोड़ा और विश्लेषण करने की आवश्यकता होती है।

एजेएक्स के साथ काम करते समय इसका मतलब यह है कि आपके द्वारा अपेक्षित मूल्य प्रारंभिक HTML दस्तावेज़ में नहीं है, जिसे आपने अनुरोध किया था, लेकिन यह जावास्क्रिप्ट एक्सट्रैक्ट किया जाएगा जो आपको अतिरिक्त जानकारी के लिए सर्वर से पूछता है।

इसलिए आप आम तौर पर बस जावास्क्रिप्ट का विश्लेषण कर सकते हैं और यह देख सकते हैं कि जावास्क्रिप्ट किस अनुरोध का उपयोग करता है और शुरुआत से ही इस URL को कॉल करता है।


उदाहरण:

इसे एक उदाहरण के रूप में ले लें, मान लें कि जिस पृष्ठ से आप स्क्रैप करना चाहते हैं, उसकी निम्न स्क्रिप्ट है:

<script type="text/javascript"> function ajaxFunction() { var xmlHttp; try { // Firefox, Opera 8.0+, Safari xmlHttp=new XMLHttpRequest(); } catch (e) { // Internet Explorer try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { alert("Your browser does not support AJAX!"); return false; } } } xmlHttp.onreadystatechange=function() { if(xmlHttp.readyState==4) { document.myForm.time.value=xmlHttp.responseText; } } xmlHttp.open("GET","time.asp",true); xmlHttp.send(null); } </script> 

उसके बाद आपको केवल उसी सर्वर के समय.एपी के बजाय एक HTTP अनुरोध करना होगा। W3schools से उदाहरण


सी ++ के साथ उन्नत स्क्रैपिंग:

जटिल उपयोग के लिए, और यदि आप सी ++ का उपयोग कर रहे हैं तो आप एक पृष्ठ पर जावास्क्रिप्ट निष्पादित करने के लिए फ़ायरफ़ॉक्स जावास्क्रिप्ट इंजन स्पाइडरमॉकी का उपयोग करने पर भी विचार कर सकते हैं।

जावा के साथ उन्नत स्क्रैप:

जटिल उपयोग के लिए, और यदि आप जावा का उपयोग कर रहे हैं तो आप जावा राइनो के लिए फ़ायरफ़ॉक्स जावास्क्रिप्ट इंजन का उपयोग करने पर भी विचार कर सकते हैं

एनएटी के साथ उन्नत स्क्रैपिंग:

जटिल उपयोग के लिए, और यदि आप उपयोग कर रहे हैं तो आप Microsoft.vsa विधानसभा का उपयोग करने पर भी विचार कर सकते हैं। हाल ही में आईसीडोडमपेलर / कोडडॉम के साथ बदल दिया गया

यदि आप इसे प्राप्त कर सकते हैं, तो डॉम ट्री का परीक्षण करने का प्रयास करें। सेलेनियम यह पृष्ठ का परीक्षण करने के एक भाग के रूप में करता है इसमें बटन क्लिक करने और लिंक का अनुसरण करने के लिए भी कार्य किया जाता है, जो उपयोगी हो सकता है

मेरी राय में सरलतम समाधान कैसपरज का उपयोग करना है , जो कि वेबकीट हेडलेस ब्राउज़र फ़ैंटमज पर आधारित है।

पूरे पृष्ठ भरी हुई है, और किसी भी एजेक्स से संबंधित डेटा को परिमार्जन करना बहुत आसान है। आप फेंटमजेएस और कैसपरजेएस के साथ ऑटोमैटिंग एंड स्क्रैपिंग सीखने के लिए इस बुनियादी ट्यूटोरियल की जांच कर सकते हैं

आप इस उदाहरण कोड पर एक नज़र भी देख सकते हैं, गूगल कैसे खोजशब्दों को सुझाएंगे:

 /*global casper:true*/ var casper = require('casper').create(); var suggestions = []; var word = casper.cli.get(0); if (!word) { casper.echo('please provide a word').exit(1); } casper.start('http://www.google.com/', function() { this.sendKeys('input[name=q]', word); }); casper.waitFor(function() { return this.fetchText('.gsq_a table span').indexOf(word) === 0 }, function() { suggestions = this.evaluate(function() { var nodes = document.querySelectorAll('.gsq_a table span'); return [].map.call(nodes, function(node){ return node.textContent; }); }); }); casper.run(function() { this.echo(suggestions.join('\n')).exit(); }); 

जावास्क्रिप्ट का उपयोग करते हुए अजाक्स या सामान्य पृष्ठों में वेब पृष्ठों को स्क्रैप करने का सबसे अच्छा तरीका ब्राउज़र के साथ या बिना हेडलेस ब्राउज़र (GUI के बिना एक ब्राउज़र) है। वर्तमान में फाटकमज एक अच्छी तरह से प्रचारित हेडलेस ब्राउज़र है जो कि वेबकिट का उपयोग कर रहा है। एक वैकल्पिक जो मैंने सफलता के साथ प्रयोग किया है, एचटीएमएलयूनिट (जावा या .NET में IKVM के माध्यम से, जो एक सिम्युलेटेड ब्राउज़र है.एक और ज्ञात विकल्प सेलेनियम जैसे वेब ऑटोमेशन टूल का इस्तेमाल होता है।

मैंने इस विषय के बारे में कई लेख लिखा है जैसे कि वेब स्क्रैपिंग अजाक्स और जावास्क्रिप्ट साइट्स और ट्विटर के लिए स्वचालित ब्राउजररहित ओअथ प्रमाणीकरण पहले लेख के अंत में बहुत सारे अतिरिक्त संसाधन हैं जो मैं 2011 से संकलित कर रहा हूं।

एजेक्स पृष्ठ पर निर्भर करता है स्क्रीन स्क्रैपिंग का पहला भाग निर्धारित करता है कि पेज कैसे काम करता है। क्या आप किसी प्रकार के वेरिएबल के माध्यम से फिर से दोहरा सकते हैं जिससे कि पेज से सभी डेटा का अनुरोध किया जा सके? निजी तौर पर मैंने बहुत से स्क्रीन स्क्रैपिंग से संबंधित कार्यों के लिए वेब स्क्रेपर प्लस का उपयोग किया है क्योंकि यह सस्ता है, शुरू करना मुश्किल नहीं है, गैर प्रोग्रामर इसे अपेक्षाकृत जल्दी काम कर सकते हैं

साइड नोट: उपयोग की शर्तें शायद कहीं कहीं आप ऐसा करने से पहले जांचना चाहें। सब कुछ के माध्यम से चलती साइट पर निर्भर करता है कुछ झंडे उठा सकते हैं।

कम लागत के समाधान के रूप में आप SWExplorerAutomation (SWEA) की भी कोशिश कर सकते हैं एचटीएमएल, डीएचटीएमएल या एजेएक्स के साथ विकसित किसी भी वेब अनुप्रयोग के लिए कार्यक्रम स्वचालन एपीआई बनाता है।

मुझे पारेजेएस पसंद है, लेकिन यह आंशिक रूप से हो सकता है क्योंकि मैंने इसे बनाया था।

उसने कहा, यह एक ऐसी सेवा है जिसे आप पृष्ठभूमि में चलाते हैं जो कि HTTP (एस) बोलता है और पृष्ठों को आपके लिए JSON के रूप में प्रस्तुत करता है, जिसमें आपकी आवश्यकता हो सकती है।

मुझे लगता है कि ब्रायन आर। बॉन्डी का जवाब उपयोगी होता है जब स्रोत कोड पढ़ना आसान होता है। पैकेट पर कब्जा करने के लिए और "होस्ट" फ़ील्ड और "जीईटी" फ़ील्ड से यूआरएल प्राप्त करने के लिए मैं वायरहार्क या एचटीटीपीएएनएलज़र जैसे उपकरणों का उपयोग करके एक आसान तरीका पसंद करता हूं।

उदाहरण के लिए, मैं निम्नलिखित जैसे एक पैकेट पर कब्जा करता हूं:

 GET /hqzx/quote.aspx?type=3&market=1&sorttype=3&updown=up&page=1&count=8&time=164330 HTTP/1.1 Accept: */* Referer: http://quote.hexun.com/stock/default.aspx Accept-Language: zh-cn Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) Host: quote.tool.hexun.com Connection: Keep-Alive 

फिर यूआरएल है:

 http://quote.tool.hexun.com/hqzx/quote.aspx?type=3&market=1&sorttype=3&updown=up&page=1&count=8&time=164330 

एक और बेहतरीन उपकरण जो हमें लाइव डोम पर स्क्रैपर लिखने देता है, एमआईटी से विलायक है। http://simile.mit.edu/wiki/Solvent

इसके अलावा, आशा है कि, एन्जेज http://www.envjs.com/doc/guides पर है

यदि आपका इरादा उच्च स्तर पर परिमार्जन करने के लिए है, तो आपको सेवा के द्वारा प्रतिबंधित होने से बचने के लिए मानव व्यवहार का विलंब और नकल करने की आवश्यकता हो सकती है।