我在项目中使用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?
答案 0 :(得分:0)
我会做的是获取script
标记内的内容,然后通过正则表达式提取我想要的内容。
$doc = new DOMDocument();
$doc->loadHTML($yoursiteHTML);
foreach($doc->getElementsByTagName('script') as $content) {
// extract data
}
Goutte只接收HTML响应并且不运行Javascript代码,以获取动态数据,就像浏览器一样。
答案 1 :(得分:0)
$html = file_get_html('http://www.your-link-here.com/');
// Find all scripts
foreach($html->find('script') as $element)
echo $element->outertext . '<br>';