使用DOM XPATH从网页获取背景图像

问题描述 投票:0回答:1

我正在使用PHP DOM / XPath阅读网页,并且设法获取了所需的文本,但是现在我试图获取主图像的src,但我无法获取它。同样使事情复杂化的是,源与检查员不同。

这里是来源:

<div id="bg">
            <img src="https://example.com/image.jpg" alt=""/>
</div>

这是检查器中的元素:

<div class="media-player" id="media-player-0" style="width: 320px; height: 320px; background: url(&quot;https://example.com/image.jpg&quot;) center center / cover no-repeat rgb(208, 208, 208);" currentmouseover="16">

我尝试过:

$img = $xpath->evaluate('substring-before(substring-after(//div[@id=\'bg\']/img, "\')")');

$img = $xpath->evaluate('substring-before(substring-after(//div[@class=\'media-player\']/@style, "background: url(\'"), "\')")');    

但是什么都没得到。

这是我的完整代码:

$html = file_get_contents($externalurl);
$doc = new DOMDocument();
    @$doc->loadHTML($html);
    $xpath = new DOMXPath($doc);
    $allChildNodesFromDiv = $xpath->query('//h1[@class="artist"]');
    $releasetitle = $allChildNodesFromDiv->item(0)->textContent;
    echo "</br>Title: " . $releasetitle;

    $img = $xpath->evaluate('substring-before(substring-after(//div[@class=\'media-player\']/@style, "background: url(\'"), "\')")');    
    echo $image;

    $img = $xpath->evaluate('substring-before(substring-after(//div[@id=\'bg\']/img, "\')")');
    echo $image;
php dom xpath
1个回答
2
投票

我通常不建议这样做,但是由于您要从javascript加载特定的内容,但是内容位于<script>标记中,因此对于正则表达式而言,提取它可能很容易。根据您的评论...

[是的,它出现在:海报中: 'https://284fc2d5f6f33a52cd9f-ce476c3c56a27f320262daffab84f1af.ssl.cf3.rackcdn.com/artwork_5e74a44e1e004_CHAMPDL879D_5e74a44e4672b.jpg'

所以此代码看起来是poster : '...',的值。

$html = file_get_contents($externalurl);

preg_match("/poster : '(.*)',/", $html, $matches);
echo $matches[1];

这可能易于在html中进行更改,但目前可能仍然有效。

© www.soinside.com 2019 - 2024. All rights reserved.