0
$urlToScrap = "https://play.google.com/store/apps/details?id=flipboard.app#?t=W251bGwsMSwxLDIxMiwiZmxpcGJvYXJkLmFwcCJd";
$pageContentData = file_get_contents($urlToScrap);
$doc = new DOMDocument();
$doc->loadHTML($pageContentData);
$listOfDivs = $doc->getElementsByTagName("div");
foreach ($listOfDivs as $div) {
    if($div->getAttribute("class") == "doc-banner-icon"){
        $img = $div->getElementsByTagName("img");
        var_dump($img->getAttribute("src"));
    }
}

空を返します。

私はdomに次の要素を持っています:

<div class="doc-banner-icon"><img src="somesrc"></div>

img src を取得しようとしていますが、ページには多くの画像があるため、最初に親 div を取得してから、その中の画像を抽出したいと考えています。

解決策は次のとおりです。

$urlToScrap = "https://play.google.com/store/apps/details?id=flipboard.app#?t=W251bGwsMSwxLDIxMiwiZmxpcGJvYXJkLmFwcCJd";
$pageContentData = file_get_contents($urlToScrap);
$doc = new DOMDocument();
$doc->loadHTML($pageContentData);
$listOfDivs = $doc->getElementsByTagName("div");
foreach ($listOfDivs as $div) {
    if($div->getAttribute("class") == "doc-banner-icon"){
        $listOfImages = $div->getElementsByTagName("img");
        foreach($listOfImages as $img){
            var_dump($img->getAttribute("src"));
        }
    }
}
4

1 に答える 1

0

あなたは何も欠けてvar_dumpいません.あなたが期待するように動作しませんDOMNodeList. 代わりにこれを試してください:

$listOfImages = $doc->getElementsByTagName("img");

foreach ($listOfImages as $img) {
    $imgClass = $img->getAttribute('class');

    echo $imgClass;
}

更新された質問で、変更するだけです:

$img->getAttribute("src")

に:

$img->item(0)->getAttribute("src")

選択基準がかなり複雑な場合は、手動でナビゲートする代わりに XPath を使用することを検討してください。

$doc = new DOMDocument();
$doc->loadHTML($pageContentData);

$xpath = new DOMXPath($doc);
$img = $xpath->query("//div[@class = 'doc-banner-icon']/img");

var_dump($img->item(0)->getAttribute('src'));
于 2013-07-09T12:57:53.133 に答える