दिलचस्प पोस्ट
फ़ाइल या असेंबली को लोड नहीं किया जा सका या इसके निर्भरता में से एक $ (इस) और event.target के बीच का अंतर? MySQL – सहयोग एक्लिप्स सीडीटी इंडेक्सर को सी ++ 11 कंटेनर नहीं पता है Windows पर एक फ़ाइल नाम मान्य करें Matlotlib में एक दूसरे एक्स-एक्स जोड़ने के लिए ORA-00979 अभिव्यक्ति द्वारा एक समूह नहीं है Java 6 enums के लिए मान () कैसे लागू किया जाता है? जावास्क्रिप्ट ऑब्जेक्ट ब्रैकेट नोटेशन ({नेविगेशन} =) को असाइन करने की बाईं तरफ मल्टीपल आउटपुटफ़ोर्मेट हाउप में पर्दे के पीछे बंद कैसे काम करता है? (सी#) Scoping नियमों का संक्षिप्त विवरण? मानचित्र में प्रत्येक प्रविष्टि को प्रभावी ढंग से कैसे पुनरावृत्त करें? क्या कोई सूची <टी> गारंटी देता है कि आइटम जो क्रम में जोड़े गए थे उसे वापस कर दिया जाएगा? HTML में स्थानीय संसाधनों को ठीक से संदर्भित करने के लिए कैसे?

वेबपेज। एस्पक्स से सर्वर-साइड पर जावास्क्रिप्ट द्वारा उत्पन्न स्क्रैप डेटा

मेरा प्रश्न यह है कि इस वेबसाइट http://vtis.vn/index.aspx से डेटा कैसे परिमार्जन करें, लेकिन जब तक आप उदाहरण के लिए "दान साचा चैम" पर क्लिक नहीं करते, तब तक डेटा नहीं दिखाया जाता है मैंने बहुत ही कड़ी मेहनत और सावधानी से प्रयास किया है, जब आप "दान साछ छाम" पर क्लिक करते हैं तो यह एक onclick घटना है जो कुछ जावास्क्रिप्ट फ़ंक्शन को चालू करता है, जेएस फ़ंक्शंस में से एक सर्वर से डेटा प्राप्त करना है और इसे किसी टैग / प्लेस होल्डर में डालें और इस बिंदु आप डेटा की जांच करने के लिए फ़ायरफ़ॉक्स की तरह कुछ का उपयोग कर सकते हैं और हां, डेटा वेबपेज पर उपयोगकर्ताओं / दर्शकों के लिए प्रदर्शित होता है तो फिर, हम इस डेटा को प्रोग्राम को कैसे स्क्रैप कर सकते हैं?

मैंने एक स्क्रैपिंग फ़ंक्शन लिखा था, लेकिन ज़्यादातर यह मुझे नहीं चाहिए डेटा प्राप्त क्योंकि डेटा तब तक उपलब्ध नहीं है जब तक कि मैं "Danh sách chm" बटन पर क्लिक नहीं करता

<?php $Page = file_get_contents('http://vtis.vn/index.aspx'); $dom_document = new DOMDocument(); $dom_document->loadHTML($Page); $dom_xpath_admin = new DOMXpath($dom_document_admin); $elements = $dom_xpath->query("*//td[@class='IconMenuColumn']"); // foreach ($elements as $element) { $nodes = $element->childNodes; foreach ($nodes as $node) { echo (mb_convert_encoding($node->c14n(), 'iso-8859-1', mb_detect_encoding($content, 'UTF-8', true))); } } } 

कृपया धन्यवाद, स्टैक ओवरफ्लो एक शानदार जगह है। डी

वेब के समाधान से एकत्रित समाधान "वेबपेज। एस्पक्स से सर्वर-साइड पर जावास्क्रिप्ट द्वारा उत्पन्न स्क्रैप डेटा"

आपको फँटमोज़ को देखने की जरूरत है

अपनी साइट से:

PhantomJS जावास्क्रिप्ट एपीआई के साथ एक हेडलेस वेबकिट है इसमें विभिन्न वेब मानकों के लिए तेज़ और मूल समर्थन है: डोम हैंडलिंग, सीएसएस चयनकर्ता, जेएसओएन, कैनवास, और एसवीजी।

एपीआई का उपयोग करके आप "ब्राउज़र" स्क्रिप्ट को उस पेज के साथ इंटरैक्ट कर सकते हैं और आपको आवश्यक डेटा को परिमार्जन कर सकते हैं। आप इसके साथ जो चाहें कर सकते हैं; यदि आवश्यक हो तो उसे PHP स्क्रिप्ट में शामिल करना शामिल है


ऐसा कहा जा रहा है, अगर सभी संभवतः डेटा को "परिमार्जन" न करें। अगर कोई अजाक्स कॉल पेज बना रहा है, तो शायद एक एपीआई है जिसका उपयोग आप कर सकते हैं? यदि नहीं, तो आप उन्हें एक बनाने के लिए मना सकते हैं यह निश्चित रूप से स्क्रीन स्क्रैपिंग की तुलना में अधिक आसान और अधिक सुयोग्य होगा।

सबसे पहले, आपको फ़ान्टमजेएस की आवश्यकता है:

दूसरा, आपको PHP के फाटकम्स की आवश्यकता है:

  1. संगीतकार स्थापित करें (यदि यह आपके सर्वर पर मौजूद नहीं है)
  2. पैकेज (PHP phantomjs) स्थापित करें, तो आप इस मार्गदर्शिका पर नजर डाल सकते हैं:

https://github.com/jonnnnyw/php-phantomjs http://jonnnynyw.github.io/php-phantomjs/4.0/2-installation/

तीसरा, पैकेज को अपनी स्क्रिप्ट में लोड करें: आवश्यक है ('विक्रेता / autoload.php');

अंत में, file_get_content के बजाय, आप पृष्ठ को फाटमॉम के माध्यम से लोड करेंगे

 $client = Client::getInstance(); $client->getEngine()->setPath('/usr/local/bin/phantomjs'); $client = Client::getInstance(); $request = $client->getMessageFactory()->createRequest(); $response = $client->getMessageFactory()->createResponse(); $request->setMethod('GET'); $request->setUrl('https://www.your_page_embeded_ajax_request'); $client->send($request, $response); if($response->getStatus() === 200) { echo "Do something here"; }