0

ページから 2 つの異なるものをスクレイピングしようとしています。リンクのみをスクレイピングすると、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;
}

しかし、タイトルとそれぞれのリンクを取得できるように、1つのループでそれらが必要です

何かのようなもの

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 に答える