使用php从url中抓取图像

时间:2017-04-24 22:39:04

标签: php

我正在尝试创建一个页面,允许我从其他链接中抓取并保存图像,所以这就是我要在页面上添加的内容:

  1. 文本框(输入我想要获取图片的网址)。
  2. 保存对话框以指定保存图像的路径。
  3. 但是我想在这里做什么我只想保存来自该网址和特定元素内部的图片。

    例如在我的代码上我说去了example.com,从元素类里面="图像"抓住所有图像。

    注意:不是来自页面的所有图像,只是来自元素内部 元素中是否有3个图像,或者50或100个不在乎。

    这是我尝试和使用php的工作

    <?php
    $html = file_get_contents('http://www.tgo-tv.net');
    preg_match_all( '|<img.*?src=[\'"](.*?)[\'"].*?>|i',$html, $matches ); 
    echo $matches[ 1 ][ 0 ];
    ?>
    

    这会获取图像名称和路径,但我想要的是一个保存对话框,代码必须将图像直接保存到该路径而不是回显它

    希望你理解

    编辑2

    没有保存对话框。我必须从代​​码中指定保存路径

2 个答案:

答案 0 :(得分:1)

如果您想要通用的东西,可以使用:

<?php
    $the_site = "http://somesite.com";
    $the_tag = "div"; #
    $the_class = "images";

    $html = file_get_contents($the_site);
    libxml_use_internal_errors(true);
    $dom = new DOMDocument();
    $dom->loadHTML($html);
    $xpath = new DOMXPath($dom);

    foreach ($xpath->query('//'.$the_tag.'[contains(@class,"'.$the_class.'")]/img') as $item) {

        $img_src =  $item->getAttribute('src');
        print $img_src."\n";

    }

用法

更改sitetag,可以是divspana等,也可以更改class名称。

例如,将值更改为:

$the_site = "https://stackoverflow.com/questions/23674744/what-is-the-equivalent-of-python-any-and-all-functions-in-javascript";
$the_tag = "div"; #
$the_class = "gravatar-wrapper-32";

输出:

https://www.gravatar.com/avatar/67d8ca039ee1ffd5c6db0d29aeb4b168?s=32&d=identicon&r=PG
https://www.gravatar.com/avatar/24da669dda96b6f17a802bdb7f6d429f?s=32&d=identicon&r=PG
https://www.gravatar.com/avatar/24780fb6df85a943c7aea0402c843737?s=32&d=identicon&r=PG

答案 1 :(得分:0)

也许你应该试试HTML DOM Parser for PHP。我最近发现了这个工具,老实说它工作得很好。你可以在网站上看到类似JQuery的选择器。我建议你看看,尝试类似的东西:

<?php
require_once("./simple_html_dom.php");
foreach ($html->find("<tag>") as $<tag>) //Start from the root (<html></html>) find the the parent tag you want to search in instead of <tag> (e.g "div" if you want to search in all divs)
{
    foreach ($<tag>->find("img") as $img) //Start searching for img tag in all (divs) you found
    {
        echo $img->src . "<br>"; //Output the information from the img's src attribute (if the found tag is <img src="www.example.com/cat.png"> you will get www.example.com/cat.png as result)
    }
}
?>

我希望我帮助你少或多。