Dun*_*ung 5 javascript php html-parser
我的问题是:如何从这个网站获取数据http://vtis.vn/index.aspx但是直到你点击"Danhsáchchậm"之后才会显示数据.我非常努力和仔细地尝试,当你点击"Danhsáchchậm"这是触发一些javascript函数的onclick事件时,其中一个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)));
}
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢你,StackOverflow是一个很棒的地方.D.
首先,你需要PhantomJS。建议在 Linux 上的安装方法:
wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
tar xvf phantomjs-2.1.1-linux-x86_64.tar.bz2
cp phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin
Run Code Online (Sandbox Code Playgroud)
其次,您需要php-phantomjs 包。假设您已经安装Composer:
composer require jonnyw/php-phantomjs
Run Code Online (Sandbox Code Playgroud)
或者按照此处的安装文档进行操作。
第三,将包加载到您的脚本中,而不是file_get_contents通过 PhantomJS 加载页面
<?php
require ('vendor/autoload.php');
$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";
}
Run Code Online (Sandbox Code Playgroud)