0

我试图从一个页面上抓取两个不同的东西,如果我只抓取链接,那么我可以做一个 foreach 并获取链接,但我也想要代表该链接的标题。

这是页面标记的示例

<div id="parent">
<span id="title">Title</span>


<div id="Two">
<a href="somelink">Somelink</a>
</div>
</div>

这是仅获取标题和链接的示例

foreach($html->find('div[id=Two] a') as $a){
echo $a->href;
}

foreach($html->find('span[id=title]') as $az){
echo $az->plaintext;
}

但是我需要它们在一个循环中,这样我就可以拥有标题及其各自的链接

就像是

foreach($html->find('span['id=title'] as $a, div[id=Two] a') as $aa){

虽然那行不通

我使用简单的 html dom

4

2 回答 2

0

我认为这应该可行,前提是总是有标题和链接:

$links = $html->find('div[id=Two] a');
$titles = $html->find('span[id=title]');

foreach ($links as $i => $a)
{
    echo $titles[$i]->plaintext;
    echo $a->href;
}
于 2013-03-03T02:14:57.010 回答
0

根本没有经过测试,但这样的东西应该可以工作。您可能需要添加验证检查以确保每个标题都有一个链接。

foreach($html->find('div[id=parent]') as $parent) {
    $title = $parent->find('span[id=title]')->plaintext;
    $href = $parent->find('div[id=Two] a')->href;

    echo $title . ': ' . $href . '<br />';
}
于 2013-03-03T02:15:07.170 回答