簡體   English   中英

用DOMDocument獲取DomXPath <img> 類別網址

[英]DomXPath with DOMDocument to get <img> Class URL

我正在編寫一個小的搜尋器腳本,該腳本將找到具有特定類名的圖像URL。 我知道我的cURL和DOMDocument可以正常運行,甚至DomXPath都可以正常運行(據我所知,沒有錯誤),但是我正在努力研究如何獲取xpath查詢結果的URL。

到目前為止,我的代碼:

$dom = new DOMDocument();
@$dom->loadHTML($x);

$xpath = new DomXpath($dom);
$div = $xpath->query('//*[@class="productImage"]');


var_dump($div);
echo $div->item(0);

如果我var_dump($ x)頁面輸出沒有問題。 因此,CURL運行正常。 但是我不知道如何獲取$ div中包含的數據。 我正在嘗試查找帶有'productImage'類的圖像,如下所示:

<img src="/uploads/5W/yP/5WyPP4l7Z-jmZRzu_MJ6zg/1077-d.jpg" border="1" alt="Album" class="productImage">

我想要該圖像標簽的來源。

有什么建議么?

$dom = new DOMDocument();
$dom->loadHTML($x);

$xpath = new DomXpath($dom);
$imgs  = $xpath->query('//*[@class="productImage"]');

foreach($imgs as $img)
{
    echo 'ImgSrc: ' . $img->getAttribute('src') .'<br />' . PHP_EOL;
}

試試看...

==編輯:其他信息==

我在這里使用循環的原因是,您可能會發現多個img。 如果您知道只有一個元素(或者您想找到第一個dom節點),則可以通過domnodelist的item方法從domnodelist中訪問元素-像這樣:

$dom = new DOMDocument();
$dom->loadHTML($x);

$xpath = new DomXpath($dom);
$img   = $xpath->query('//*[@class="productImage"]');

echo 'ImgSrc: ' . $img->item(0)->getAttribute('src') .'<br />' . PHP_EOL;

實際上,您實際上不需要在這里使用XPath,因為似乎您只是在使用圖像,並且可以通過使用DOMDocument::getElementsByTagName()以及一個簡單的過濾器來完成:

foreach ($dom->getElementsByTagName('img') as $image) {
    $class = $image->getAttribute('class');
    if (strpos(" $class ", " productImage ") !== false) {
        $url = $image->getAttribute('src');
        // do stuff
    }
}

然后,您可以使用DOMElement::getAttribute()獲得src屬性:

echo $image->getAttribute('src');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM