我正在抓取HTML文本及其href
元素,例如:
<a href="Scrape this">Also scrape this</a>
但是,在某些情况下,封闭文本容器中没有href
。相反,它可能是一个级别:
<a href="Scrape this"><div>Also scrape this</div></a>
这是我目前用于抓取的代码:
$doc->loadHTML($html);
libxml_clear_errors();
$xpath = new DOMXPath($doc);
$row = $xpath->query($job_location);
foreach ($row as $job) {
$jobs = array();
$jobs['title'] = $job->nodeValue;
$jobs['link'] = $root.$job->getAttribute('href');
}
如您所见,我正在使用getAttribute('href')
为我选择的元素返回href
。
我的问题是:是否有替代方法可以获得它找到的第一个href
,直接包含元素或进一步向上树,以便它适用于上面两个HTML示例中的任何一个?< / p>
答案 0 :(得分:0)
这听起来像你想要的:
$xpath->query('./preceding::*[@href][1]', $job)->item(0);