获得第一个href,你可以在DOM中找到上面的元素

时间:2014-02-24 09:26:40

标签: html dom web-scraping screen-scraping domdocument

我正在抓取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>

1 个答案:

答案 0 :(得分:0)

这听起来像你想要的:

$xpath->query('./preceding::*[@href][1]', $job)->item(0);