所以我有一个div类内部的代码,在div类中有一个文本和一个带有另一个文本的span,所以我需要获取内容,但不是内部跨度和跨度。
基本上这是代码
<div class="somecontent">
23:45
<span>Tags:
<a href="link to somewhere"> tag1</a>
<a href="link to somewhere"> tag1</a>
<a href="link to somewhere"> tag1</a>
</span>
</div>
所以我不需要内部跨度和那些链接。我只需要这个
23:45
基本上我只需要获取视频的时间。
我用simple_html_dom抓取页面,那么如果有人知道,我的解决方案是什么?
答案 0 :(得分:1)
您正在寻找:
$html->find('.somecontent text', 0);
答案 1 :(得分:0)
您可以执行以下操作:
$doc = str_get_html($html);
foreach ($doc->find('div.somecontent') as $parent) {
foreach ($parent->find('text') as $node) {
if ($node->parent() === $parent) {
echo trim($node->plaintext);
}
}
}
如果您使用PHP的内置DOMDocument
类,这会变得更容易。您只需使用XPath表达式来检索所需的文本:
$doc = new DOMDocument;
$doc->loadHTML($html);
$xpath = new DOMXPath($doc);
foreach ($xpath->query('//div/text()') as $node) {
echo trim($node->textContent);
}
XPath表达式//div/text()
查找<div>
内的所有文本节点。
答案 2 :(得分:0)
这对我来说是一种解决方案。
首先我得到span中的所有文本,而不是使用str_replace来获取somecontent类中的所有文本,并将内部的一个替换为空。
$get_duration = $video->find('div[class="somecontent"]', 0)->children(0);
$video_duration = str_replace($get_duration, '', $video->find('div[class="somecontent"]', 0)->innertext);