Regar los datos generados por javascript en el lado del server de páginas webs.aspx

Mi pregunta es: cómo recostackr información de este website http://vtis.vn/index.aspx. Pero los datos no se muestran hasta que haces clic, por ejemplo, en "Danh sách chậm". Lo he intentado muy bien y cuidadosamente, cuando haces clic en "Danh sách chậm", este es un evento en línea que activa algunas funciones de javascript una de las funciones de js es get los datos del server e insertlos en un marcador / marcador de position y en En este punto puede usar algo como Firefox para examinar los datos y sí, los datos se muestran a los usuarios / espectadores en la página web. Entonces, de nuevo, ¿cómo podemos eliminar esta información programáticamente?

Escribí una function de desguace pero, por supuesto, no obtiene los datos que quiero porque los datos no están disponibles hasta que hago clic en el button "Danh sách chậ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))); } } } 

Gracias amablemente, StackOverflow es un gran lugar. RE.

Tienes que mirar a PhantomJS .

Desde su sitio:

PhantomJS es un WebKit sin cabeza con JavaScript API. Tiene soporte rápido y nativo para varios estándares web: event handling DOM, selector de CSS, JSON, Canvas y SVG.

Al utilizar la API, puede crear una secuencia de commands del "browser" para interactuar con esa página y eliminar los datos que necesita. A continuación, puede hacer lo que necesite con él; incluyendo pasarlo a un script PHP si es necesario.


Dicho esto, si es posible intente no "raspar" los datos. Si hay una llamada ajax que está haciendo la página, ¿tal vez hay una API que puede usar en su lugar? Si no, tal vez puedas convencerlos para que hagan uno. Eso, por supuesto, sería mucho más fácil y más fácil de mantener que el raspado de pantalla.

Primero, necesitas PhantomJS:

Segundo, necesitas PHP phantomjs:

  1. instale el compositor (si no existe en su server)
  2. package de installation (PHP phantomjs), puede echarle un vistazo a esta guía:

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

En tercer lugar, cargue el package en su secuencia de commands: require ('vendor / autoload.php');

Finalmente, en lugar de file_get_content, cargará la página a través de phantomjs

 $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"; }