Parsing CDATA from Javascript
Parsing CDATA from Javascript
这是我的第一个帖子,如果我做错了,我很抱歉,但我们继续:
我一直在做一个项目,应该从一个网站刮值。这些值是javascript数组中的变量。我使用的PHP简单的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数据中的"value"变量。
问题是我试图替换对象上的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;
}
如果需要,我会提供更多的信息。
一个体面的HTML解析器不应该要求Javascript被包装在CDATA
块中。如果它们丢弃了它,只需在解析之前将它们从HTML中删除,执行如下操作:
- 下载HTML文件到一个字符串,使用
file_get_contents()
或cURL如果你的主机在该功能中禁用HTTP支持。 - 使用
str_replace()
去除//<![CDATA[
和//]]>
位 - 使用简单DOM的
str_get_html()
从清理过的字符串中解析HTML - 继续处理DOM对象
相关文章:
- Calling JavaScript from C++
- cefsharp execute Javascript from C#
- Javascript from a URL
- Calling javascript from ADF page (jsff)
- Interpreting Javascript from Python
- call javascript from updatepanel
- running javascript from php?
- Calling a javascript from a javascript
- Closure in JavaScript from CoderSchool
- Call Javascript from GridView TemplateField
- Trigger Javascript from c# codebehind
- Output JavaScript from Razor
- echo raw javascript from Yii Controller
- call javascript from c#
- Call Javascript from codebehind asp.net
- Javascript from Buffer to JSON
- Call Javascript from Java - Android
- Execute JavaScript from iOS?
- Javascript from PHP (wordpress)
- Call javascript from HTML