2017-04-22 153 views
0

我正在使用Goutte项目中的Laravel库获取页面内容并对其进行抓取。抓取网站并从HTML字符串中获取数据

我可以找到任何元素的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","", 
"");"; 

有没有什么办法可以使用选择器或DOM方法来检索JavaScript?

回答

0

我会做的是获取script标记内存在的内容,然后通过正则表达式提取我想要的任何内容。

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

Goutte只接收HTML响应并且不运行Javascript代码,以便像浏览器那样获取动态数据。

+0

这将返回$内容串吧? – Chintan7027

+0

我没有测试,但我认为是。 – foxtrot

0

使用PHP Simple HTML DOM Parser

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

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