文档章节

菜鸟的爬虫代码,下载福利

宿舍楼顶
 宿舍楼顶
发布于 2015/05/16 00:05
字数 479
阅读 43
收藏 0

菜鸟我自己花了3个小时写的代码,没怎么组织,就自己看得懂了

小程序的功能是: 下载某个网站的图片,大大的福利啊,好了,直接上代码了,也方便以后自己修改改善

    主程序入口

package com.sise.Rola;

import java.io.File;
import java.util.List;

public class MyRobot {

	/**
	 * @param args
	 */
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		File dir = new File("d://image//");
		if(!dir.exists()) {
			dir.mkdir();
		}
		String topUrl = "http://sexy.faceks.com/";
		GetUrls getUrls = new GetUrls();
		List<String> urls = getUrls.getUrls(topUrl);
		//创建一个可重用固定线程数的线程池
		//ExecutorService pool = Executors.newFixedThreadPool(3);
		for(String it : urls) {
			new Thread(new ImageDownload(it)).start();
		}

	}

}

    获取下载的url

package com.sise.Rola;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
/**
 *取得待下载的url
 **/
public class GetUrls {

	public List<String> urls = new ArrayList<String>();
	
	public List<String> getUrls(String topUrl) {
		try {
			Document doc = Jsoup.connect(topUrl).timeout(5000).get();
			Elements links = doc.select("a.img");
			for(int i=0;i<links.size();i++) {
				Element element = links.get(i);
				urls.add(element.attr("href"));
			}
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return urls;
	}
//	public static void main(String[] args) {
//		GetUrls get = new GetUrls();
//		get.getUrls("http://sexy.faceks.com");
//	}
}

package com.sise.Rola;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
/**
*根据取得的url下载图片
**/
public class ImageDownload implements Runnable{
	
	private String currentUrl;
	private List<String> imageList = new ArrayList<String>();
	public ImageDownload(String url) {
		this.currentUrl = url;
	}
	
	@Override
	public void run() {
		// TODO Auto-generated method stub
		System.out.println("线程      "+Thread.currentThread().getName() +"    开始下载福利(你懂的- -!).....");
		try {
			Thread.sleep(500);
		} catch (InterruptedException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		try {
			Document doc = Jsoup.connect(currentUrl).timeout(10000).get();
			
			Elements links = doc.select("a.img > img");
			for(int i=0;i<links.size();i++) {
				Element element = links.get(i);
				imageList.add(element.attr("src"));
			}
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		//开始下载图片
		CloseableHttpClient httpClient = HttpClients.createDefault();
		for(String it : imageList) {
			HttpGet get = new HttpGet(it);
			try {
				HttpResponse response = httpClient.execute(get);
				long name = new Date().getTime();
				File image = new File("D://image//"+name+".jpg");
				FileOutputStream output = new FileOutputStream(image);
				HttpEntity entity = response.getEntity();
				entity.writeTo(output);
				output.flush();
				output.close();
				
			} catch (ClientProtocolException e) {
				// TODO Auto-generated catch block
				
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} 
		}
		try {
			httpClient.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		System.out.println("线程 "+Thread.currentThread().getName()+" 下载完成!!!!");
	}
	
}


© 著作权归作者所有

宿舍楼顶
粉丝 1
博文 16
码字总数 6977
作品 0
广州
程序员
私信 提问
年薪20万Python工程师进阶(1):Python 资源 + 经典练手项目

Python 越来越火爆,最近自己也在学习。整理下一些 Python 资料,和练手的项目。希望对你学习 Python 有所帮助。 1、入门阶段 1 Python 官网 Python 官网 The Python Tutorialdocs.python.o...

程序员八阿哥
2018/05/11
0
0
基于node下的http小爬虫

每时每刻不管你睡了还是没睡,互联网都会有海量的数据来来往往,有客服端到服务端,有服务端到服务端。http的get和request完成的角色即为数据的获取及提交,接下来我们动手写一个简单的小爬虫...

风慕李
2018/01/11
0
0
【Python爬虫实战】——爬取今日头条美女图片

笔者是头条的深度使用者,经常用头条完成“看片”大业。若不信的话可以试试在头条搜索街拍,返回的都是一道道靓丽的风景线。 想把图片存下来,该怎么办呢?我们可以用Python爬虫啊。 人生苦短...

崔斯特
2016/12/25
0
0
Android通用框架设计与完整电商APP开发系列文章

作者|傅猿猿 责编|Javen205 有福利 有福利 有福利 鸣谢 感谢@傅猿猿 邀请写此系列文章 Android通用框架设计与完整电商APP开发 课程介绍 【导学视频】 【课程详细介绍】 以下是部分截图 介绍与...

javen205
2017/07/12
0
0
看过这两本书的程序员都升值加薪了!(内含送书福利)

对于程序员来说,加班就是家常便饭,甚至隔壁的产品、设计、运营、人事、保洁小妹……看着不加班的你,都会觉得这个程序员不务正业 。 前阵子一个女HR就在吐槽: 最近和一个程序员谈恋爱,只...

菜鸟窝
2018/12/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

官方来源的 Duo Mobile App 解决了我的 Network Difficulties 问题

https://help.duo.com/s/article/2094?language=en_US 我利用百度搜索下载了一个 Duo Mobile App (由于 Google Play)在大陆不可用。 在扫描旧手机上的 Duo Mobile App 的二维码时, 显示出错...

圣洁之子
5分钟前
1
0
Zabbix监控Mysql容器(Docker容器)主从是否存活

1、在Zabbix Web端创建模板

abowu
6分钟前
1
0
基于 RocketMQ 的同城双活架构在美菜网的挑战与实践

本文整理自李样兵在北京站 RocketMQ meetup分享美菜网使用 RocketMQ 过程中的一些心得和经验,偏重于实践。 嘉宾李样兵,现就职于美菜网基础服务平台组,负责 MQ ,配置中心和任务调度等基础...

大涛学长
12分钟前
1
0
设计模式之:外观模式和桥接模式

作者:DevYK 链接:https://juejin.im/post/5d7e01f4f265da03b5747aac 外观模式 介绍 外观模式 (Facade) 在开发过程中的运用评率非常高,尤其是在现阶段,各种第三方 SDK “充斥” 在我们周边...

Java架构Monster
13分钟前
1
0
人证合一核验设备

人脸身份验证机,人证合一设备1:N如我们现在在车站或一些重要的场所如步行街、城中村等人流密集的场所应用的人脸识别布控系统,其特点是动态和非配合。所谓的动态也就是识别的不是照 片,不是...

非思丸智能
15分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部