在某个 class PHP DOMDocument 的 div 上面获取一个 div

Get one div above the div of certain class PHP DOMDocument

这是我第一次使用 PHP DOMDocument,我不知道它的方法。

我抓取具有以下格式的html

<div class=row abc>...</div>
<div class=row xyz>...</div>
<div class=row qrs>...</div>
...
...
<div class="row>This is what i want to grab</div>
<div class="row show-more-result">Show More</div>

我想要实现的是,首先我 select div 和 class show-more-results 然后瞄准更高一级 div 就是这样我的数据在哪里。

我已经开始探索 PHP DOMDocument class 但是我没有找到任何 getElementByClass 方法

public function scrapping()
{
    // Create a DOMDocument Object to fetch the search results
    $dom = new \DOMDocument;
    @$dom->loadHTML($this->_response);
    $dom->preserveWhiteSpace = false;

    $xpath = new \DomXpath($dom);
    $show_more_div = $xpath->query('//*[@class="show-more-result"]')->item(0);
    $stuff = $show_more_div->textContent;

    echo($stuff);

}

我试图将节目定位更多 div 但它说 Trying to get property of non-object 好像 $xpath-query() returns 什么都没有。

请帮助我定位所需的 div。

已更新

var_dump($xpath->query('//*[@class="show-more-result"]')->item(0));
// NULL

你正在做一个直接的字符串相等:

$show_more_div = $xpath->query('//*[@class="show-more-result"]')->item(0);
                                       ^^^^^^^

但是你的目标 div 的 class 实际上是 row show-more-result。您需要进行子字符串匹配:

//*[contains(@class, 'show-more-result')]