2013-01-02 200 views
1

我需要从网站上下载我有用户名和密码的所有图像。 说,网址是 http://example.co.in/images/Photos/ABC123.jpg 这样一来有很多图片,我的要求是下载所有图片。 在Java,C++或任何编程语言中可以做什么? 示例代码将会有所帮助。 感谢从网站获取图像

使用下面的代码从谷歌网站上获得的图像

import java.io.BufferedInputStream; 
import java.io.ByteArrayOutputStream; 
import java.io.FileOutputStream; 
import java.io.InputStream; 
import java.net.URL; 

class Test { 
public static void main(String args[]) throws Exception { 
    System.out.println("Hello World"); 

    URL url = new URL("http://www.google.co.in/images/google_favicon_128.png"); 
    InputStream in = new BufferedInputStream(url.openStream()); 
    ByteArrayOutputStream out = new ByteArrayOutputStream(); 
    byte[] buf = new byte[1024]; 
    int n = 0; 
    while (-1 != (n = in.read(buf))) { 
     out.write(buf, 0, n); 
    } 
    out.close(); 
    in.close(); 
    byte[] response = out.toByteArray(); 

    FileOutputStream fos = new FileOutputStream("C://ABC//google1.jpg"); 
    fos.write(response); 
    fos.close(); 

}} 

现在我需要帮助,我不知道名字的图片说与扩展名为.jpg(* .JPG)所有图像,它应该在我的文件夹中存储为1.jpg,2.jpg等。 那么如何获得图像的数量,以及如何计数如果你是一个Linux用户访问http://www.google.co.in/images/

+2

你正在寻找一个[*履带*](http://en.wikipedia.org/wiki/Web_crawler)。我最近使用[scrapy](http://scrapy.org/),使用起来相当简单。 – amit

+0

查找图像标签,查找标签的URL,必要时计算图像URL(例如相对链接),通过普通HTTP请求进行检索。什么是实际问题? –

+0

我需要在网站的图像/文件夹中计数图像。 如何使用Java – prathameshr

回答

0

他们的名字,看看在命令行工具wget

正如你可能会使用它的Windows用户通过Cygwin(http://www.cygwin.com/)

+0

我是Win用户。 我需要使用Java – prathameshr

5

您正在寻找一个crawler。我最近使用scrapy,它使用起来相当简单。您只需要创建Spider即可。它需要为您遇到的每个url生成Request对象,并且可以使用对图像的额外HTTP请求在页面中下载图像。

按照tutorial,它非常简单,并引导您一步一步地向您解释如何构建抓取工具以及提供code example

请注意scrapy与python一起使用。

另外还有crawl4j适用于java。我不是很熟悉它,但我也听说它也很简单。

+0

谢谢我会尝试 – prathameshr

0

您在寻找一个履带。如果你打算使用Java,我会推荐使用Jsoup来解析网站中的HTML。结合commons.io你应该能够做到这一点相当容易。

如果你想要一个完整的代码示例,你可以看看最近的一个project我做到了这一点。

基本上所有你需要做的就是加载src属性img标签中的所有链接,然后下载这些图片。您可以提供额外的参数,如图像类型或大小,但这取决于您自己的判断。

-1

使用crawler4j这是非常简单的网络爬虫库工作。

在他们的示例演示中显示了如何获取页面中包含的网址。

List<WebURL> links = htmlParseData.getOutgoingUrls(); 

我不会使用字节流来写入文件。你可以通过URI创建一个File对象,然后找出如何将文件写入磁盘。

File imageFile = new File(new URL("www.foo.someImage.jpg").toURI()); 

另一种可能的解决方案是用ImageIO的()

URL url = new URL("www.foo.someImage.jpg"); 

Image image = ImageIO.read(url); 

if(image != null){ 
    ImageIO.write(image, "jpg",new File("file path to save"); 
} 
+0

手头的问题不是保存图像,而是检索给定网页上的所有图像。 –

+0

ouch为反对票。从页面获取网址是非常容易的,因为已经列出了网络爬虫的库。 – Dan