Мне удалось создать какой-то код, который захватывает изображение с сайта ниже, где ссылка на изображение будет случайной каждый раз и отражает ее на другом сайте. Хотя это здорово, что это работает, я не могу скопировать этот формат на любой другой сайт. Я вижу, что изображение захватывается с помощью файла 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» вместо «файла», однако, не помогло.
Есть предположения?? Большое спасибо. Уилсон
Использование 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.