исправление кода скребка изображений php, чтобы быть более гибким в разных ситуациях

Мне удалось создать какой-то код, который захватывает изображение с сайта ниже, где ссылка на изображение будет случайной каждый раз и отражает ее на другом сайте. Хотя это здорово, что это работает, я не могу скопировать этот формат на любой другой сайт. Я вижу, что изображение захватывается с помощью файла getElementbyId, но из исходного исходного кода существует много ссылок на «файл», поэтому я немного застрял. очень хорошо знал php.

То, что я пытаюсь сделать, реплицирует приведенный ниже результат, но на любом сайте с определенным изображением.

<?php $html = file_get_contents("http://commons.wikimedia.org/wiki/Special:Random/File"); $dom = new DOMDocument(); $dom->loadHTML($html); $remoteImage = $dom->getElementById("file")->firstChild->attributes[0]- >textContent; header("Content-type: image/png"); header('Content-Length: ' . filesize($remoteImage)); echo file_get_contents($remoteImage); ?> 

Попытка выяснить, как я могу воспроизвести это на этом сайте для ex https://pokemondb.net/pokedex/wartortle

где я пытаюсь вытащить wartortle.jpg

Моя первоначальная идея, если вы не знаете точно, что образ будет гипотетически назван, так как я хочу, чтобы это работало во время случайных условий, заключается в том, чтобы идентифицировать изображение с его тегом <div class = "colset">

Увы, включение «colset» вместо «файла», однако, не помогло.

Есть предположения?? Большое спасибо. Уилсон

Related of "исправление кода скребка изображений php, чтобы быть более гибким в разных ситуациях"

Использование XPath всегда намного более гибко (хотя, вероятно, медленнее, чем другие решения). Используя предыдущий пример, вы можете использовать следующее, чтобы получить имя файла …

 <?php ob_start(); $doc = new DOMDocument; $doc->loadHTMLFile('https://pokemondb.net/pokedex/wartortle'); $xpath = new DOMXPath($doc); $query = "//li[@id='svtabs_basic_8']//img/@src"; ob_end_clean(); header('content-type: image/jpeg'); $entries = $xpath->query($query); foreach ($entries as $entry) { readfile((string)$entry->value); } 

Я добавил ob_start и ob_end_clean, чтобы удалить ошибки проверки xml.