DOM Scrape无法使用PHP

时间:2012-06-03 18:58:16

标签: php html parsing dom scrape

我只是想知道为什么这对我不起作用。我想要做的是删除m4v文件。我有一个类似的脚本为我的网站上的图像工作,将剥离图像,上传到目录和数据库和链接。但我不能以同样的方式工作。谢谢你的帮助

<?php

include('simple_html_dom.php');

$html = file_get_html("http://www.mysitesvids.com/m/videos/view/36821");
$element = $html->find("file:");
$result = $element->innertext;

?>

这是网站上的代码

<script type="text/javascript" language="javascript">
jwplayer ('embedFlashPlayer').setup         ({flashplayer:'/swf/jwplayer5.swf',id:'moviePlayer',width:602,height:404,
    file:'http://davesvideos.mysitevids.com/media/b0e9ec18eb567ce41dce906cee7e1c9f/4fcbb164/videos/m/634276.m4v',
image:'/media/80eb2eaca3c58f002be8ab5bda476e91/4fcbb164/videos/p/64/634276.jpg',
provider:'http',controlbar:'bottom',stretching:'uniform',abouttext:'mysite',aboutlink:'http://www.eroprofile.com/'});

glbUpdViews ('0','634276','0','0');
ajaxActive = false;
cmtLoad ('video', '634276', '', '');
ajaxActive = false;
cmtReply ('video', '634276', '0');


</script>

2 个答案:

答案 0 :(得分:0)

从SimpleHtmlDom的文档中,find()仅匹配html元素,因此您无法使用find()搜索“file:”,您可以这样做:

$script = $html->find('script')->innertext

并应用正则表达式来匹配$script上的* .mv4文件。

或者,您可以直接在文件内容上应用正则表达式匹配。

答案 1 :(得分:0)

使用正则表达式可以更容易地解决这个问题:

preg_match( "/file:'(.+?)'/", $html, $matches );

if ( $matches ) {
    echo $matches[1];
}

我假设您在页面上没有此字符串模式的其他实例。如果你这样做,并且你只想匹配m4v,你可以修改表达式来寻找那个扩展名:

preg_match( "/file:'(.+?\.m4v)'/", $html, $matches );

if ( $matches ) {
    echo $matches[1];
}