2

こんにちは、cURL を使用して Web サイトからデータを取得しています。複数のアイテムを取得する必要がありますが、タグ名または ID で取得できません。クラス名を使用して 1 つのアイテムを取得するコードをまとめることができました。ループを通過させてから、別のループを通過させて要素からテキストを取得します。

ここでいくつかの問題があります。まず、これを行うにはもっと便利な方法があるはずです。2 つ目は、タイトル、説明、タグ、URL リンクなど、複数の要素をまとめてスタックする必要があります。

# Create a DOM parser object and load HTML
$dom    = new DOMDocument();
$result = $dom->loadHTML($html);

$finder = new DomXPath($dom);
$nodes = $finder->query("//*[contains(concat(' ', normalize-space(@class), ' '),     'classname')]");

$tmp_dom = new DOMDocument(); 
foreach ($nodes as $node) 
{
    $tmp_dom->appendChild($tmp_dom->importNode($node,true));
}

$innerHTML = trim($tmp_dom->saveHTML()); 

$buffdom = new DOMDocument();
$buffdom->loadHTML($innerHTML);

# Iterate over all the <a> tags
foreach ($buffdom->getElementsByTagName('a') as $link) 
{
    # Show the <a href>
    echo $link->nodeValue, "<br />", PHP_EOL;
}

私はPHPだけに固執したい。

4

1 に答える 1