java中用jsoup抓取网页源码,并批量下载图片

一、导入jsoup的核心jar包jsoup-xxx.jar

jar包下载地址:jsoup-1.8.2.jar

中文API地址:http://www.open-open.com/jsoup/parsing-a-document.htm

二、java中用jsoup抓取网页源码,并批量下载图片

package com.dgh.test;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

/**
 *
 *  抓取网页资源
 *  @author wangcunhuazi
 *
 */
public class JsoupTest {

	//资源所在的网页地址
	private static String resourceURL = "http://www.csdn.net/";
	//资源下载之后,保存在本地的文件路径
	private static String downloadFilePath = "E://downloadImage//";

	/**
	 *
	 * 根据图片的外网地址下载图片到本地硬盘的filePath
	 * @param filePath 本地保存图片的文件路径
	 * @param imgUrl 图片的外网地址
	 * @throws UnsupportedEncodingException
	 *
	 */
	public static void downImages(String filePath,String imgUrl) throws UnsupportedEncodingException {

		//图片url中的前面部分:例如"http://images.csdn.net/"
		String beforeUrl = imgUrl.substring(0,imgUrl.lastIndexOf("/")+1);
		//图片url中的后面部分:例如“20150529/PP6A7429_副本1.jpg”
		String fileName = imgUrl.substring(imgUrl.lastIndexOf("/")+1);
		//编码之后的fileName,空格会变成字符"+"
		String newFileName = URLEncoder.encode(fileName, "UTF-8");
		//把编码之后的fileName中的字符"+",替换为UTF-8中的空格表示:"%20"
		newFileName = newFileName.replaceAll("\\+", "\\%20");
		//编码之后的url
		imgUrl = beforeUrl + newFileName;

		try {
			//创建文件目录
			File files = new File(filePath);
			if (!files.exists()) {
				files.mkdirs();
			}
			//获取下载地址
			URL url = new URL(imgUrl);
			//链接网络地址
			HttpURLConnection connection = (HttpURLConnection)url.openConnection();
			//获取链接的输出流
			InputStream is = connection.getInputStream();
			//创建文件,fileName为编码之前的文件名
			File file = new File(filePath + fileName);
			//根据输入流写入文件
			FileOutputStream out = new FileOutputStream(file);
			int i = 0;
			while((i = is.read()) != -1){
				out.write(i);
			}
			out.close();
			is.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) throws IOException {

			//从一个网站获取和解析一个HTML文档,jsoup的API中有此方法的说明
			Document document = Jsoup.connect(resourceURL).get();
			//System.out.println(document);
			//获取所有的img标签
			Elements elements = document.getElementsByTag("img");
			for(Element element : elements){
				//获取每个img标签的src属性的内容,即图片地址,加"abs:"表示绝对路径
				String imgSrc = element.attr("abs:src");
				//下载图片文件到电脑的本地硬盘上
				System.out.println("正在下载图片:-----------" + imgSrc);
				downImages(downloadFilePath, imgSrc);
				System.out.println("图片下载完毕:-----------" + imgSrc);
				System.out.println("-------------------------------------------------------------------------------------------------------------");
			}
			System.out.println("共下载了 " + elements.size() +" 个文件(不去重)");
	}
}

更多jsoup使用方法的详细说明:  http://blog.csdn.net/wangcunhuazi/article/details/46237277

http://blog.csdn.net/wangcunhuazi/article/details/46237211

http://blog.csdn.net/wangcunhuazi/article/details/46237325

时间: 2024-10-24 09:47:30

java中用jsoup抓取网页源码,并批量下载图片的相关文章

[转]Linux Socket编程 Socket抓取网页源码

“一切皆Socket!” 话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket. ——有感于实际编程和开源项目研究. 我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web 服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型 有哪些?还有socket的基本函数,这些都是本文想介绍的.本文的主要内容如下: 1.网络中进程之间如何通信? 2.

java抓取网页源码

import java.io.*; import java.net.*; public class test { public static void main(String args[]) { //判断参数是否为两个,正确的用法为 FirstSocket 网站页面 if(args.length!=2) { System.out.println("Usage : FirstSocket host page\r\nExample:FirstSocket www.google.com");

jsoup抓取网页+详细讲解

jsoup抓取网页+详细讲解 Java 程序在解析 HTML 文档时,相信大家都接触过 htmlparser 这个开源项目,我曾经在 IBM DW 上发表过两篇关于 htmlparser 的文章,分别是:从 HTML 中攫取你所需的信息和 扩展 HTMLParser 对自定义标签的处理能力.但现在我已经不再使用 htmlparser 了,原因是 htmlparser 很少更新,但最重要的是有了 jsoup . jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址.HT

推荐一个不错的抓取匹配源码的正则表达式网站

在线网址:http://regexpal.com/ 本人用于抓取匹配的源码,更多功能自己研究. 推荐一个不错的抓取匹配源码的正则表达式网站,布布扣,bubuko.com

java通过url抓取网页数据

在很多行业中,要对行业数据进行分类汇总,及时分析行业数据,对于公司未来的发展,有很好的参照和横向对比.所以,在实际工作,我们可能要遇到数据采集这个概念,数据采集的最终目的就是要获得数据,提取有用的数据进行数据提取和数据分类汇总. 很多人在第一次了解数据采集的时候,可能无从下手,尤其是作为一个新手,更是感觉很是茫然,所以,在这里分享一下自己的心得,希望和大家一起分享技术,如果有什么不足,还请大家指正.写出这篇目的,就是希望大家一起成长,我也相信技术之间没有高低,只有互补,只有分享,才能使彼此更加成

java通过url抓取网页数据-----正则表达式

原文地址https://www.cnblogs.com/xiaoMzjm/p/3894805.html [本文介绍] 爬取别人网页上的内容,听上似乎很有趣的样子,只要几步,就可以获取到力所不能及的东西,例如呢?例如天气预报,总不能自己拿着仪器去测吧!当然,要获取天气预报还是用webService好.这里只是举个例子.话不多说了,上看看效果吧. [效果] 我们随便找个天气预报的网站来试试:http://www.weather.com.cn/html/weather/101280101.shtml

使用Jsoup抓取网页数据

Jsoup是一款Java的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据. 基本了解参考中文文档:http://www.open-open.com/jsoup/ 下面介绍一个具体例子: 比如我们要抓取:http://datacenter.mep.gov.cn/report/air_daily/air_dairy.jsp上某个时段的所有城市的天气信息并且保存为csv格式的文件. 在Chr

Java中使用Jsoup抓取网页URL时出现中文汉字乱码的问题及解决办法

public static String readHtml(String myurl) { StringBuffer sb = new StringBuffer(""); URL url; try { url = new URL(myurl); BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(), "gbk")); String s = "";

java通过Jsoup爬取网页(入门教程)

一,导入依赖 <!--java爬虫--> <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.10.3</version> </dependency> <!--httpclient依赖--> <dependency> <groupId>org.apa