从网站获取图像

时间:2013-01-02 16:58:58

标签: web-crawler

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

使用以下代码从Google网站获取图片

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等。 那么如何计算图像数量以及如何在http://www.google.co.in/images/

中访问其名称

5 个答案:

答案 0 :(得分:6)

您正在寻找 crawler 。我最近使用了 scrapy ,使用相当简单。

您所要做的就是创建Spider。它需要为您遇到的每个URL生成Request个对象,并且可以使用对图像的额外HTTP请求在页面中下载图像。

关注tutorial,这非常简单,并逐步引导您,向您解释如何构建抓取工具,并提供code example

请注意,scrapy适用于python。

还有 crawl4j for java 。我并不熟悉它,但我听说它也很简单。

答案 1 :(得分:2)

看起来您对Java感到满意,可以尝试使用HtmlUnit

他们有HtmlPage.getElementsByTagName("img")方法,它会为您提供HTML中的图片代码列表。根据结果​​,您可以使用测试方法获取图像src位置并从URL下载图像。

您还可以使用其他HTML解析器(如SimpleHTML ParserJTidy等)来解析HTML以获取图片代码。

答案 2 :(得分:0)

如果您是Linux用户,请查看命令行工具wget

作为Windows用户,您可以通过Cygwin(http://www.cygwin.com/)

使用它

答案 3 :(得分:0)

您正在寻找一名抓取工具。如果您要使用Java,我建议使用Jsoup来解析网站上的HTML。结合commons.io,你应该能够相当容易地做到这一点。

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

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

答案 4 :(得分:-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");
}