<dependency> <groupId> edu.uci.ics </groupId> <artifactId> crawler4j </artifactId> <version> 4.4.0</version> </dependency> <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.15.4</version> </dependency>
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 { // 建立网络连接 urlObj = new URL(url); // 打开网络连接 uc = urlObj.openConnection(); // 创建输入流 in = new InputStreamReader(uc.getInputStream(),encoding); // 创建一个缓冲写入流 reader = new BufferedReader(in); String line = null; while ((line = reader.readLine()) != null) { // 一行一行追加 buffer.append(line+"\r\n"); } } catch (Exception e) { e.printStackTrace(); } finally{ try { if (in != null) { in.close(); } } catch (IOException e) { e.printStackTrace(); } } return buffer.toString(); } /** * 根据图片的URL下载的图片到本地的filePath * @param filePath 文件夹 * @param imageUrl 图片的网址 */ public static void downImages(String filePath,String imageUrl){ // 截取图片的名称 String fileName = imageUrl.substring(imageUrl.lastIndexOf("/")); //创建文件的目录结构 File files = new File(filePath); if(!files.exists()){// 判断文件夹是否存在,如果不存在就创建一个文件夹 files.mkdirs(); } try { URL url = new URL(imageUrl); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); InputStream is = connection.getInputStream(); // 创建文件,并设置默认文件名 File file = new File(filePath+fileName); FileOutputStream out = new FileOutputStream(file); int i = 0; while((i = is.read()) != -1){ out.write(i); } is.close(); out.close(); } catch (Exception e) { e.printStackTrace(); } } //执行测试程序代码 public static void main(String[] args) { //要爬取的网页地址 String url = "https://image.baidu.com/search/index?tn=baiduimage&ct=201326592&lm=-1&cl=2&ie=utf8&word=%E5%A4%B4%E5%83%8F%E5%9B%BE%E7%89%87400%E5%BC%A0&fr=ala&ala=1&alatpl=normal&pos=0&dyTabStr=MCwzLDEsMiwsNyw2LDUsMTIsOQ%3D%3D"; //编码方式 String encoding = "UTF-8"; //存储到本地的位置 String filePath = "D:\\Img"; String htmlResource = getHtmlResourceByUrl(url, encoding); // 解析网页源代码 Document document = Jsoup.parse(htmlResource); // 获取所有图片的地址 不同的网站图片标签可能不同,到时候自己更改 Elements elements = document.getElementsByTag("img"); System.out.println("-------------------------开始下载!----------------------------"); for(Element element : elements){ // 不同的网站图片标签可能不同,到时候自己更改 String imgSrc = element.attr("src"); // 判断imgSrc是否为空且是否以"http://"或是"https://"开头 if (!"".equals(imgSrc) && (imgSrc.startsWith("http://") || imgSrc.startsWith("https://"))) { System.out.println("正在下载的图片的地址:" + imgSrc); downImages(filePath, imgSrc); } } System.out.println("-------------------------下载完毕!----------------------------"); System.out.println("-------------------------爬取了"+elements.size()+"张头像"); }