[英]Grab tag styling with php domxpath
我有以下 html
<ul class="L1_1">
<li><div style="font-size:10pt;font-family:'Arial';">A, B, C</div></li></ul>
我正在尝试使用所有样式和标签来获取<li>
。 到目前为止,我对 domxpath 的了解
$garb1 = $xpath->query('//ul/li');
关于代码会抓取并显示“A,B,C”,我想像这样抓取整个<li>'s
样式
<li><div style="font-size:10pt;font-family:'Arial';">A, B, C</div></li>
那有可能吗?
谢谢
根据评论,您必须使用以下语法来显示 HTML 节点:
echo $domobject->saveHTML( $node );
您使用此功能:
function returnXPathObject( $item )
{
$xmlPageDom = new DomDocument();
@$xmlPageDom->loadHTML( $item );
$xmlPageXPath = new DOMXPath( $xmlPageDom );
return $xmlPageXPath;
}
$clget = curlGet( 'localhost/webscrape/master-tung-doc-test.html' );
$xpath = returnXPathObject( $clget );
DOMDocument
对象名称是$xmlPageDom
,但问题是您无法访问它,因为它在函数内部。
要访问它,您可以通过以下方式修改您的功能:
function returnDomObject( $html )
{
$dom = new DomDocument();
@$dom->loadHTML( $html );
$xpath = new DOMXPath( $dom );
return (object) array( 'dom' => $dom, 'xpath' => $xpath );
}
$clget = curlGet( 'localhost/webscrape/master-tung-doc-test.html' );
$dom = returnDomObject( $clget );
$garb1 = $dom->xpath->query( '//ul/li' );
echo $garb1->dom->saveHTML( $garb1->item(0) );
通过这种方式,您的函数返回一个同时包含 DOM 对象和 XPath 对象的对象:您只需修改语法即可调用它,使用$dom->xpath->
而不是$xpath->
和$dom->dom->
$xpath->
$dom->dom->
访问 DOM 对象。
实际上,恕我直言,最好的方法可能是构造一个扩展的 DOMDocument 类。 如果你有兴趣,我可以给你举个例子。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.