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




स्क्रिप्टिंग भाषा (2)

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

अपनी साइट से:

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

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

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

मेरा प्रश्न यह है कि इस वेबसाइट 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)));
                               }
                          }
                         }

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


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

दूसरा, आपको 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";
    }




html-parser