在某个 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')]
这是我第一次使用 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')]