从脚本标记中的网页抓取内容

时间:2011-01-22 21:55:49

标签: php javascript

好的,我有这个页面我想要关闭内容..但是统计数据是用JavaScript制作的。有什么办法可以获得统计数据吗?我尝试使用PHP get_content thingy ......

以下是我想要获取的页面中的示例。此<script>位于<body>标记之间。

< script > 

na=0;
S=new Array;
S[na]="|Beal|3266561|137|131|1170664|714062|1378742|2375|128|322|"; na++; 
S[na]="|Marine|2446933|165554|125613|1116688|652869|187250|23773|27019|148167|"; na++; 
S[na]="|Krackle1|2306919|342794|440503|372482|238609|442226|146516|177399|146390|"; na++; 
S[na]="|LawyerUpSir|1666817|60579|236847|379476|219395|446057|149787|151306|23370|"; na++; 
S[na]="|IKillToWin|1657426|94695|214229|800157|446579|59618|9132|8861|24155|"; na++; 
S[na]="|Farts|1644623|6885|8790|972072|586678|49249|10558|2838|7553|"; na++; 

< / script >

2 个答案:

答案 0 :(得分:1)

查看http://ca.php.net/manual/en/function.domxml-open-file.php以将URL打开为XML DOM。然后,您可以使用http://ca.php.net/manual/en/function.domdocument-get-elements-by-tagname.php解析XML DOM以获取<script>标记。

答案 1 :(得分:1)

我希望您的意思是通过file_get_contents()远程获取该页面的来源。然后,您只需要使用正则表达式来匹配源代码中以S[na]开头的所有行,然后在|上展开以获取数组形式。这应该会以可行的格式为您提供数据。

$content = <<<END
<script> 

na=0;
S=new Array;
S[na]="|Beal|3266561|137|131|1170664|714062|1378742|2375|128|322|"; na++; 
S[na]="|Marine|2446933|165554|125613|1116688|652869|187250|23773|27019|148167|"; na++; 
S[na]="|Krackle1|2306919|342794|440503|372482|238609|442226|146516|177399|146390|"; na++; 
S[na]="|LawyerUpSir|1666817|60579|236847|379476|219395|446057|149787|151306|23370|"; na++; 
S[na]="|IKillToWin|1657426|94695|214229|800157|446579|59618|9132|8861|24155|"; na++; 
S[na]="|Farts|1644623|6885|8790|972072|586678|49249|10558|2838|7553|"; na++; 

</script>

...some HTML here..

END;

$matches = array() ;
preg_match_all("/S\[na\]\=\"\|(.*)\"\;\sna\+\+\;/", $content, $matches) ;

$stats = array() ;
if (count($matches) > 0 && is_array($matches[1])) {
    foreach ($matches[1] as $match) {
        $stats[] = $match ;
    }
}