从 php 中的网站获取所有图像源
get all image source from a website in php
我想做的是让用户输入一个url,里面有https://www.flickr.com/search/?text=arushad%20ahmed这样的图片,得到'src'属性中的所有图片源,并显示出来。
以下方法无效:
$file = fopen("https://www.flickr.com/search/?text=arushad%20ahmed", "r");
$doc = new DOMDocument();
$doc->loadHTML($file);
$image = $doc->getElementsByTagName('img');
foreach ($image as $img) {
echo $img;
}
那么我怎样才能让这个工作如我所愿呢?
src
不是 tag
,而是 attribute
。
你说你是 php 的新手所以这很正常,现在担心,使用这个代码:
$doc = new DOMDocument();
$doc->loadHTMLFile("https://www.flickr.com/search/?text=arushad%20ahmed");
$xpath = new DOMXpath($doc);
$imgs = $xpath->query("//img");
for ($i=0; $i < $imgs->length; $i++) {
$img = $imgs->item($i);
$src = $img->getAttribute("src");
// do something with $src
}
详细了解 PHP DOMDocument
更新
根据您的评论,您似乎没有 PHP DOMDocument 支持,您可以使用以下命令安装它。
sudo yum --enablerepo=webtatic install php-xml
sudo /sbin/service httpd stop
sudo /sbin/service httpd start
此外,您尝试解析的页面不包含有效的 HTML,请使用 HTML Tidy 修复它,即:
$html = file_get_contents('https://www.flickr.com/search/?text=arushad%20ahmed');
$config = array(
'clean' => 'yes',
'output-html' => 'yes',
);
$tidy = tidy_parse_string($html, $config, 'utf8');
$tidy->cleanRepair();
$doc = new DOMDocument();
$doc->loadHTML($tidy);
//the rest of the code is the same
$xpath = new DOMXpath($doc);
$imgs = $xpath->query("//img");
for ($i=0; $i < $imgs->length; $i++) {
$img = $imgs->item($i);
$src = $img->getAttribute("src");
// do something with $src
}
我想做的是让用户输入一个url,里面有https://www.flickr.com/search/?text=arushad%20ahmed这样的图片,得到'src'属性中的所有图片源,并显示出来。
以下方法无效:
$file = fopen("https://www.flickr.com/search/?text=arushad%20ahmed", "r");
$doc = new DOMDocument();
$doc->loadHTML($file);
$image = $doc->getElementsByTagName('img');
foreach ($image as $img) {
echo $img;
}
那么我怎样才能让这个工作如我所愿呢?
src
不是 tag
,而是 attribute
。
你说你是 php 的新手所以这很正常,现在担心,使用这个代码:
$doc = new DOMDocument();
$doc->loadHTMLFile("https://www.flickr.com/search/?text=arushad%20ahmed");
$xpath = new DOMXpath($doc);
$imgs = $xpath->query("//img");
for ($i=0; $i < $imgs->length; $i++) {
$img = $imgs->item($i);
$src = $img->getAttribute("src");
// do something with $src
}
详细了解 PHP DOMDocument
更新
根据您的评论,您似乎没有 PHP DOMDocument 支持,您可以使用以下命令安装它。
sudo yum --enablerepo=webtatic install php-xml
sudo /sbin/service httpd stop
sudo /sbin/service httpd start
此外,您尝试解析的页面不包含有效的 HTML,请使用 HTML Tidy 修复它,即:
$html = file_get_contents('https://www.flickr.com/search/?text=arushad%20ahmed');
$config = array(
'clean' => 'yes',
'output-html' => 'yes',
);
$tidy = tidy_parse_string($html, $config, 'utf8');
$tidy->cleanRepair();
$doc = new DOMDocument();
$doc->loadHTML($tidy);
//the rest of the code is the same
$xpath = new DOMXpath($doc);
$imgs = $xpath->query("//img");
for ($i=0; $i < $imgs->length; $i++) {
$img = $imgs->item($i);
$src = $img->getAttribute("src");
// do something with $src
}