DOMXPath - 我们如何使用php搜索js对象

时间:2017-01-14 05:45:16

标签: php web-scraping domxpath

我想使用php从不同的URL获取特定的js对象。

或者

我想使用php从不同的URL获取js脚本文本。

我正在使用这种方法。

$html = file_get_contents($url);
$ddoc = new DOMDocument();
libxml_use_internal_errors(TRUE);
if(!empty($html)){ //if any html is actually returned
$ddoc->loadHTML($html);
libxml_clear_errors(); //remove errors for yucky html
$xxpath = new DOMXPath($ddoc);
$rrrow = $xxpath->query("//script[contains(@src, 'pcode')]");

}

1 个答案:

答案 0 :(得分:1)

你忽略了你的代码发生了什么,如果有的话。我尝试了一个完全相同的方法并且它完美地工作(见下文),所以在不知道你试图定位的url的情况下,我建议你尝试在vidposition0 = +$("[data-slide='0']").attr('data-time'); vidposition1 = +$("[data-slide='1']").attr('data-time'); navItem.off().on('click',function(){ var navid = $(this).attr('data-slide'); if (navid == 0) {playVideo(vidposition0);} if (navid == 1) {playVideo(vidposition1);} }); function playVideo (endTime) { video.play(); video.addEventListener("timeupdate", function(){ if(video.currentTime >= endTime) { this.pause(); } }, false); } 中添加一个上下文,因为在许多情况下,服务器可以被配置为拒绝没有file_get_contents字符串的请求。

User-Agent

使用$url='http://beautifulbathrooms.tumblr.com/'; $query='//script[contains(@src,"jquery")]'; $dom=new DOMDocument; $dom->validateOnParse=false; $dom->standalone=true; $dom->preserveWhiteSpace=true; $dom->strictErrorChecking=false; $dom->substituteEntities=false; $dom->recover=true; $dom->formatOutput=false; $dom->loadHTML( file_get_contents( $url ) ); libxml_clear_errors(); $xp=new DOMXPath( $dom ); $col=$xp->query( $query ); if( !empty( $col ) ){ foreach( $col as $script ) echo $script->getAttribute('src').BR; }

的上下文参数
file_get_contents