我需要从html页面阅读一些内容。
我已对simple_html_dom
进行了测试,但它根本无法满足我的需求。
我需要这样的东西(基于simple_html_dom的pseaudo语法):
$html = file_get_contents($url);
$html_obj = parse_html($html);
$title = $html_obj->get('title');
$meta1 = $html_obj->get('meta[name=description]', 'innertext']; //text only
$meta2 = $html_obj->get('meta[name=keywords]', 'innertext']; // text only
$content = $html_obj->get('div[id=section_a]', outerText); //html code
我已经在很多方面测试了simple_html_dom,并且只设法获得了我需要的部分内容。 它根本不简单"。
我还测试了PHP DOMDocument::loadHTML
,但我遇到了处理内联<script>
的问题。
是否有任何php库可以像jQuery
一样轻松获取内容?
更新
我的一个问题是来自添加代理机构的第三方javascript:
<script language="javascript" type="text/javascript">
<!--
if (window.adgroupid == undefined) {
window.adgroupid = Math.round(Math.random()*100000);
}
document.write('<scr'+'ipt language="javascript1.1" type="text/javascript" src="http://adserver.adtech.de/addyn|3.0|994|3159100|0|-1|size=980x150|ADTECH;loc=100;target=_blank;key=startside,kvinner, kvinnesak, bryllup, graviditet, mamma, kosmetikk, markedsplass, dagbok, feminisme;grp='+window.adgroupid+';misc='+new Date().getTime()+'"></scri'+'pt>');
//-->
</script>
即使我将<scr'+'ipt
更改为<script
,它也会向我提供无效的JavaScript代码。
答案 0 :(得分:2)
您可以将DOMDocument与DOMXPath一起使用..
<?php
$DOMDocument = new DOMDocument();
//libxml_use_internal_errors ( true ) ;
$DOMDocument->loadHTMLFile ( 'http://www.iconfinder.com' ) ;
$XPath = new DOMXPath( $DOMDocument );
$title = $DOMDocument->getElementsByTagName('title')->item(0)->nodeValue;
echo $title ;
#$desc = $XPath->query('//meta[@name=description]')->item(0)->getAttribute ( 'content' );
#$keywords = $XPath->query('//meta[@name=keywords]')->item(0)->getAttribute( 'content' );
#$content = $XPath->query('//div[@id=section_a]')->item(0)->nodeValue;
答案 1 :(得分:1)
PHPQuery(http://code.google.com/p/phpquery/)允许您通过类似语法的jquery来操作HTML