这是我的第一篇文章,如果我做错了,我很抱歉,但我们开始吧:
我一直在从事一个应该从网站上抓取价值的项目。这些值是 javascript 数组中的变量。我正在使用PHP Simple HTML DOM,它适用于普通脚本,但不适用于存储在 CDATA 块中的脚本。因此,我正在寻找一种在 CDATA 块中抓取数据的方法。不幸的是,我能找到的所有帮助都是针对 XML 文件的,而我正在从 HTML 文件中抓取。
我试图抓取的 javascript 如下:
<script type="text/javascript">
//<![CDATA[
var data = [{"value":8.41,"color":"1C5A0D","text":"17/11"},{"value":9.86,"color":"1C5A0D","text":"18/11"},{"value":7.72,"color":"1C5A0D","text":"19/11"},{"value":9.42,"color":"1C5A0D","text":"20/11"}];
//]]>
</script>
我需要抓取的是 var 数据中的“值”变量。
问题是我试图替换对象上的 CDATA 字符串。以下代码完美运行:-)
include('simple_html_dom.php');
$lines = file_get_contents('http://www.virtualmanager.com/players/7793477-danijel-pavliuk/training');
$lines = str_replace("//<![CDATA[","",$lines);
$lines = str_replace("//]]>","",$lines);
$html = str_get_html($lines);
foreach($html->find('script') as $element) {
echo $element->innertext;
}
如果需要,我会为您提供更多信息。