Просканируйте сайт и получите данные из строки HTML

Я использую библиотеку Goutte Laravel в проекте для получения содержимого страницы и его сканирования.

Я могу найти любой элемент структуры DOM, за исключением одного из сайтов, где я нашел важный контент, помещенный в тег <script>.

Данные помещаются в переменную javascript, и я хочу сканировать их без тяжелых строковых операций. Типичный пример такого случая

$html="var article_content = "Details article string";
var article_twtag = "#Madrid #Barcelona";
var article_twtitle = "Article title"; 
var article_images = new Array (
"http://img.sireasas.com/?i=reuters%2f2017-03-08%2f2017-03-
08t200344z_132005024_mt1aci14762686_rtrmadp_3_soccer-champions-fcb-
  psg_reuters.jpg","",
"0000000000115043","",
"");";

Есть ли способ сканировать javascript с помощью методов селектора или DOM?


person Chintan7027    schedule 22.04.2017    source источник


Ответы (2)


Что бы я сделал, так это получил содержимое, существующее внутри тега script, а затем извлек все, что хотел, с помощью регулярных выражений.

$doc = new DOMDocument();
$doc->loadHTML($yoursiteHTML);
foreach($doc->getElementsByTagName('script') as $content) {
    // extract data
}

Goutte получает только ответ HTML и не запускает код Javascript для получения динамических данных, как это делает браузер.

person foxtrot    schedule 22.04.2017
comment
Я не проверял, но думаю да. - person foxtrot; 22.04.2017

Используйте парсер PHP Simple HTML DOM

$html = file_get_html('http://www.your-link-here.com/');

// Find all scripts 
foreach($html->find('script') as $element) 
       echo $element->outertext . '<br>';
person Moustafa Elkady    schedule 22.04.2017