猿问

刮擦JavaScript生成的网页数据

我的问题是:如何从该网站http://vtis.vn/index.aspx抓取数据,但是直到您单击例如“ Danhsáchchậm”,该数据才显示。我已经非常认真地尝试,当您单击“ Danhsáchchậm”时,这是onclick事件,它触发了一些javascript函数js函数之一是从服务器获取数据并将其插入到标签/占位符中,并在这时,您可以使用firefox之类的方法检查数据,是的,数据会在网页上显示给用户/查看者。因此,我们又该如何以编程方式废弃此数据?


我编写了一个抓取函数,但是它当然无法获取我想要的数据,因为只有在单击“ Danhsáchchậm”按钮之后,该数据才可用


                <?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)));

                               }

                          }

                         }

谢谢您,StackOverflow是个好地方。D.


幕布斯7119047
浏览 268回答 2
2回答

繁星coding

您需要查看PhantomJS。从他们的网站:PhantomJS是带有JavaScript API的无头WebKit。它具有对各种Web标准的快速本机支持:DOM处理,CSS选择器,JSON,Canvas和SVG。使用API,您可以编写脚本来使“浏览器”与该页面进行交互并抓取所需的数据。然后,您可以使用它来做所需的任何事情。包括在必要时将其传递给PHP脚本。话虽这么说,如果可能的话,尽量不要“刮”数据。如果页面正在进行ajax调用,也许有可以替代的API?如果没有,也许您可以说服他们做一个。当然,这比屏幕抓取要容易得多,并且更易于维护。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答