PHP Dom从类中获取多个href

PHP Dom从类中获取多个href,php,dom,Php,Dom,谁能帮我一下吗 我正在尝试从exmaple的页面获取多个href 页面 <div class="link__ttl"> <a href="/watch-link-53767-934537" target="_blank" rel="nofollow">Version 1</a> </div> <div class="link__ttl"> <a href="/watch-link-53759-934537" tar

谁能帮我一下吗

我正在尝试从exmaple的页面获取多个href

页面

<div class="link__ttl">
    <a href="/watch-link-53767-934537" target="_blank" rel="nofollow">Version 1</a>
</div>
<div class="link__ttl">
    <a href="/watch-link-53759-934537" target="_blank" rel="nofollow">Version 1</a>
</div>

PHP Dom

$data = array();

$data['links'] = array();

$page = $this->curl->get($page);
$dom = new DOMDocument();
@$dom->loadHTML($page);

$divs = $dom->getElementsByTagName('div'); 
for($i=0;$i<$divs->length;$i++){   
    if ($divs->item($i)->getAttribute("class") == "link__ttl") {
        foreach ($divs as $div) {
            $link = $div->getElementsByTagName('a');
            $data['links'][] = $link->getAttribute("href");
        }
    }
}
$data=array();
$data['links']=array();
$page=$this->curl->get($page);
$dom=新的DOMDocument();
@$dom->loadHTML($page);
$divs=$dom->getElementsByTagName('div');
对于($i=0;$i长度;$i++){
如果($divs->item($i)->getAttribute(“类”)=“链接”\uuuTTL”){
foreach($div作为$div){
$link=$div->getElementsByTagName('a');
$data['links'][=$link->getAttribute(“href”);
}
}
}
但这和工作不一样,我得到了一个错误

调用未定义的方法DOMNodeList::getAttribute()


有人能帮我一下吗谢谢

$link=$div->getElementsByTagName('a')检索无法获取属性值“href”的项目列表


尝试使用
$link[0]
而不是
$link

测试div是否具有
link\u tt
类,然后只测试每个div。仅从具有该类的div中获取锚定。
然后您试图从
DOMNodeList
调用
getAttribute
,您需要获取底层domnode以获取属性

$divs = $dom->getElementsByTagName('div'); 
for($i=0;$i<$divs->length;$i++){  
    $div = $divs->item($i);
    if ($div->getAttribute("class") == "link__ttl") {
            $link = $div->getElementsByTagName('a');
            $data['links'][] = $link->item(0)->getAttribute("href");
    }
}
$divs=$dom->getElementsByTagName('div');
对于($i=0;$i长度;$i++){
$div=$divs->item($i);
如果($div->getAttribute(“类”)=“链接”\uuuTTL”){
$link=$div->getElementsByTagName('a');
$data['links'][=$link->item(0)->getAttribute(“href”);
}
}
另一个解决方案是使用xpath

$path = new DOMXPath($dom);
$as = $path->query('//div[@class="link__ttl"]/a'); 
for($i=0;$i<$as->length;$i++){  
    $data['links'][] = $as->item($i)->getAttribute("href");
}
$path=newdomxpath($dom);
$as=$path->query('//div[@class=“link\uu ttl”]/a');
对于($i=0;$i长度;$i++){
$data['links'][=$as->item($i)->getAttribute(“href”);
}

DOM的任何部分都是节点。属性也是节点,而不仅仅是元素。使用Xpath可以直接获取href属性节点的列表

$dom = new DOMDocument();
$dom->loadHtml($html);
$xpath = new DOMXpath($dom);

$result = [];
foreach ($xpath->evaluate('//div[@class = "link__ttl"]/a/@href') as $href)  {
  $result[] = $href->value;
}

var_dump($result);
输出:


$div->getElementsByTagName('a')
为您提供了一个
DOMNodeList
;不是
DOMNode
。您需要访问
DOMNodeList
的一个特定项,或者迭代其项。
array(2) {
  [0]=>
  string(24) "/watch-link-53767-934537"
  [1]=>
  string(24) "/watch-link-53759-934537"
}