繁体   English   中英

使用 php domxpath 抓取标签样式

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM