Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
修复php图像刮刀代码,使其在不同情况下更加灵活_Php_Image_Xpath - Fatal编程技术网

修复php图像刮刀代码,使其在不同情况下更加灵活

修复php图像刮刀代码,使其在不同情况下更加灵活,php,image,xpath,Php,Image,Xpath,我能够构建一些代码,从下面的网站上抓取图像,图像链接每次都是随机的,并在另一个网站上镜像。虽然这很好,但我无法将此格式复制到任何其他网站。我看到图像是用一个getElementbyId文件抓取的,但是从原始源代码来看,有很多对文件的引用,所以我有点卡住了。对php还是很了解的 我想做的是复制下面的结果,但是在任何有特定图像的站点上 <?php $html = file_get_contents("http://commons.wikimedia.org/wiki/Special:Ran

我能够构建一些代码,从下面的网站上抓取图像,图像链接每次都是随机的,并在另一个网站上镜像。虽然这很好,但我无法将此格式复制到任何其他网站。我看到图像是用一个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复制这些信息

我想把wartortle.jpg

如果我不知道图像的确切名称,因为我希望它在随机条件下工作,那么我最初的想法是用标记
标识图像

唉,插入colset而不是文件并没有奏效


有什么想法吗??非常感谢。-Wilson使用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\u start和ob\u end\u clean以删除xml验证错误。

嘿,奈杰尔。真的很感谢你给这个人一些反馈。我看到了您在上面输入的逻辑,是的,我能够获得链接文件名。你知道如何使实际的图像出现吗?这就是我在上面使用的代码中能够实现的,也是我的最终目标。虽然这是一个很好的开始,但是你可以将它包含在一个img标签中,这是在原始站点中完成的。哦,我明白了。我试着像以前那样引用它,但它给了我一个断开的链接。然后打开我引用的实际php文件,看看我是否能弄清楚发生了什么,得到了这个。致命错误:在第2行的/home/wilsons888/public_html/test2.php中的非对象上调用成员函数loadHTMLFile。不确定那条消息中是否有答案。嗯。。。我想我错过了$doc=新文档;在前面。。。但是不要告诉任何人:-/另外-如果您想让它输出图像,可以将echo更改为readfilestring$entry->value;从我在报纸上读到的