2

我需要从我有用户名和密码的网站下载所有图像。比如说,网站网址是 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/中访问它们的名称

4

5 回答 5

6

您正在寻找一个爬虫。我最近使用了scrapy,它使用起来相当简单。

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

按照教程,它真的很简单,一步一步地引导你,解释如何构建你的爬虫,并提供一个代码示例

请注意,scrapy 适用于 python。

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

于 2013-01-02T17:04:12.153 回答
2

看起来您对 Java 很熟悉,您可以尝试使用HtmlUnit

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

您还可以使用其他 HTML 解析器,如SimpleHTML ParserJTidy等来解析 HTML 以获取图像标签。

于 2013-01-02T17:04:22.340 回答
0

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

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

于 2013-01-02T17:01:19.200 回答
0

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

如果你想要一个完整的代码示例,你可以看看我最近做的一个正是这样做的项目。

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

于 2013-01-02T17:05:59.127 回答
-1

使用crawler4j,这是一个非常容易使用的网络爬虫库。

在他们的示例演示中展示了如何获取页面中包含的 url。

 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");
}
于 2013-01-02T17:12:17.397 回答