我需要从我拥有用户名和密码的网站下载所有图片。 说,网站网址是 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/
中访问其名称答案 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 Parser,JTidy等)来解析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");
}