Php 从URL抓取图像并显示它们

Php 从URL抓取图像并显示它们,php,javascript,Php,Javascript,我对javascript中的文档对象模型有一个问题。 我正在尝试构建一个从url获取图像并输出它们的程序,实际上我已经使用下面的代码在php中完成了这项工作,但我的问题是如何在javascript中执行相同的功能 <?php $url = 'http://lockerz.com/s/104049300'; $doc = new DOMDocument(); @$doc->loadHTMLFile($url); // Get all

我对javascript中的文档对象模型有一个问题。
我正在尝试构建一个从url获取图像并输出它们的程序,实际上我已经使用下面的代码在php中完成了这项工作,但我的问题是如何在javascript中执行相同的功能

<?php

    $url = 'http://lockerz.com/s/104049300';    

    $doc = new DOMDocument();    
    @$doc->loadHTMLFile($url);

    // Get all images
    $images_list = $doc->getElementsByTagName('img');

    foreach($images_list as $image) {      
      echo $image;
    }

?>

您可以使用jQuerys.load()方法获取网站的内容。 获得html后,可以解析html源代码


希望这对您有所帮助

您不能使用ajax向发送请求(假设它不是您自己的域),因此您无论如何都需要一些服务器端脚本。您也可以只使用在php中工作的内容,但将其更改为将url作为参数并返回JSON数组,如:

<?php

    $url = $_GET['url'];
    // sanitize url here, possible verify that it begins with http://lockerz.com, or something    

    $doc = new DOMDocument();    
    @$doc->loadHTMLFile($url);

    // Get all images
    $images_list = $doc->getElementsByTagName('img');

    $out = '[';
    foreach($images_list as $image) {      
      $out .= $image.',';
    }

    echo substr($out, 0, -1).']';

?>


然后使用javascript将ajax请求发送到您自己的php页面,并对返回的数组执行您想要的操作。

基于ajax或iframe的纯客户端解决方案将违反。也就是说,一旦使用AJAX(或iframe)获取不在您的网站上的页面,浏览器将禁止这种行为

我建议使用服务器端获取页面并将其传递回客户端

服务器端:


客户端(基于jQuery):


$.get('http://your-host/fetch.php“,{url:”http://lockerz.com/s/104049300'},函数(数据){
var imgs=$('').html(data.find('img');
img.每个(功能(i,img){
警报(img.src);//显示包含图像url的对话框
});
});

您是在寻找纯JavaScript的答案,还是愿意使用jQuery这样的框架?不要在客户端进行屏幕抓取。如果可能的话,我现在更喜欢javascript,我现在正在尝试学习纯javascriptfirst@edmund然后使用node.jsp拥有这样的文件是一个很大的安全风险。白名单!我可以让您的服务器向我的恶意网站发出与此问题无关的
get
请求。为什么?这是因为他需要其他网站的内容。(@$doc->loadHTMLFile($url);)据我所知,它只能从您自己的域加载内容,这个问题是关于从外部url加载的。
<?php
$url = $_GET['url'];
echo file_get_contents($url);
?>
<script>
    $.get('http://your-host/fetch.php', {url: 'http://lockerz.com/s/104049300'}, function(data) {
        var imgs = $('<div/>').html(data).find('img');
        imgs.each(function(i, img) {
            alert(img.src); // show a dialog containing the url of image
        });
    });
</script>