【发布时间】:2020-07-16 18:07:40
【问题描述】:
我正在阅读一个使用 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("https://example.com/image.jpg") 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;
【问题讨论】:
-
这是我正在抓取的 URL:lnk.to/Michael-Gray-Rework,这就是我想要得到的:284fc2d5f6f33a52cd9f-ce476c3c56a27f320262daffab84f1af.ssl.cf3.r…
-
如果您保存
$html然后查看该源,则该数据看起来像是在 javascript 中加载的 -media-player未在任何地方设置。 -
啊,是的,它出现在:
poster : 'https://284fc2d5f6f33a52cd9f-ce476c3c56a27f320262daffab84f1af.ssl.cf3.rackcdn.com/artwork_5e74a44e1e004_CHAMPDL879D_5e74a44e4672b.jpg'有没有办法抓住它,或者我应该看看像stripos()这样的东西?