抓取网站并从HTML字符串

时间:2017-04-22 17:11:58

标签: php laravel web-crawler goutte

我在项目中使用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","",
"");";

有没有办法使用选择器或DOM方法抓取javascript?

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分: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>';