自己写的用java实现的小爬虫

今天写了个简单的小爬虫,可以获取大部分网站的网站源代码,扒取网站上图片并下载到本地指定目录下,可以作为爬虫学习的入门的例子:奋斗奋斗奋斗

1.获取网页源代码:

public static String getHtmlResourceByURL(String url,String encoding)
	{
		//声明一个存储网页源代码的容器——字符缓冲区
		StringBuffer buffer=new StringBuffer();
		
		//注意涉及流的地方要给其一个初始值
		URL urlObj=null;
		URLConnection uc=null;
		InputStreamReader in=null;
		BufferedReader reader=null;
		
		//因为存在网络等原因的连接失败,所以要try,catch抛出异常
		try {
			//建立网络连接
			urlObj=new URL(url);
			//打开网络连接
			uc=urlObj.openConnection();
			//建立网络的输入流
			in=new InputStreamReader(uc.getInputStream(),encoding);
			//缓冲写入文件流
			reader=new BufferedReader(in);
			//临时变量
			String tempLine=null;
			//一行一行的读取文件流
			while((tempLine=reader.readLine())!=null)
			{
				//将数据放入缓冲区
				buffer.append(tempLine+"\n");
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println("连接超时!");
		}
		//随手关闭流
		finally{
			if(in !=null)
			{
				try 
				{
					in.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
					System.out.print("关闭出错");
				}
			}
		}
		//将buffer(Stringbuffer类型转化为String类型)
		return buffer.toString();
	}
2.  指定编码,将图片下载到本地·指定文件夹:

/*
	 * 根据一个图片URL地址,批量下载图片到服务器磁盘filePath
	 * @param imgURL 要下载的图片服务器地址
	 * @param filePath 下载保存图片地址
	 */
	public static void downImages(String imgURL,String filePath)
	{
		//根据指定路径创建目录
		File parent = new File(filePath);
		//判断文件夹是否存在
		if(!parent.exists()){
			parent.mkdirs();
		}
		//获取图片名字,即截取图片路径最后一个/后面的内容
		String fileName=imgURL.substring(imgURL.lastIndexOf("/"));
		//获取文件的后缀名
		String imgType = imgURL.substring(imgURL.lastIndexOf(".")+1);
		try {
			//使用java的ImageIO读取指定URL下的图片
			BufferedImage image = ImageIO.read(new URL(imgURL));
			System.out.println(fileName+","+imgType+","+image);
			//在parent目录下创建指定文件名称文件file
			File  file = new File(parent,fileName);
			System.out.println(file.getAbsolutePath());
			ImageIO.write(image, imgType, file);
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
3.测试代码:

public static void main (String args[])
	{
		String imgSrc=null;
		//获取源代码
		String htmlResource=
				getHtmlResourceByURL("http://www.mooncollege.cn/","utf-8");
		System.out.println("源代码为:"+htmlResource);
		//解析源代码
		Document document=Jsoup.parse(htmlResource);
		//获取网页图片
		Elements elements=document.getElementsByTag("img");
		for(Element element:elements)
		{
			//jsoup的element的attr(XX)的作用,根据属性取数据
			//获取图片相对地址
			imgSrc=element.attr("src");
			if(imgSrc!="")
			{	
				/*System.out.println("下载图片地址:"+"http://www.163.com/"+imgSrc);*/
				System.out.println("下载图片地址:"+imgSrc);
				downImages(imgSrc,"./img");
				System.out.println("图片下载成功");
			}
		}
		
		//解析我们需要下载的内容部分
		
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值