1. 程式人生 > >JAVA抓取網頁圖片並下載到本地

JAVA抓取網頁圖片並下載到本地

package com.yong.util;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/***
 * java抓取網路圖片
 * @author swinglife
 *
 */
public class CatchImage {

	// 地址
	private static final String URL = "http://www.baidu.com";
	// 編碼
	private static final String ECODING = "UTF-8";
	// 獲取img標籤正則
	private static final String IMGURL_REG = "<img.*src=(.*?)[^>]*?>";
	// 獲取src路徑的正則
	private static final String IMGSRC_REG = "http:\"?(.*?)(\"|>|\\s+)";

	
	public static void main(String[] args) throws Exception {
		CatchImage cm = new CatchImage();
		//獲得html文字內容
		String HTML = cm.getHTML(URL);
		//獲取圖片標籤
		List<String> imgUrl = cm.getImageUrl(HTML);
		//獲取圖片src地址
		List<String> imgSrc = cm.getImageSrc(imgUrl);
		//下載圖片
		cm.Download(imgSrc);
	}
	
	
	/***
	 * 獲取HTML內容
	 * 
	 * @param url
	 * @return
	 * @throws Exception
	 */
	private String getHTML(String url) throws Exception {
		URL uri = new URL(url);
		URLConnection connection = uri.openConnection();
		InputStream in = connection.getInputStream();
		byte[] buf = new byte[1024];
		int length = 0;
		StringBuffer sb = new StringBuffer();
		while ((length = in.read(buf, 0, buf.length)) > 0) {
			sb.append(new String(buf, ECODING));
		}
		in.close();
		return sb.toString();
	}

	/***
	 * 獲取ImageUrl地址
	 * 
	 * @param HTML
	 * @return
	 */
	private List<String> getImageUrl(String HTML) {
		Matcher matcher = Pattern.compile(IMGURL_REG).matcher(HTML);
		List<String> listImgUrl = new ArrayList<String>();
		while (matcher.find()) {
			listImgUrl.add(matcher.group());
		}
		return listImgUrl;
	}

	/***
	 * 獲取ImageSrc地址
	 * 
	 * @param listImageUrl
	 * @return
	 */
	private List<String> getImageSrc(List<String> listImageUrl) {
		List<String> listImgSrc = new ArrayList<String>();
		for (String image : listImageUrl) {
			Matcher matcher = Pattern.compile(IMGSRC_REG).matcher(image);
			while (matcher.find()) {
				listImgSrc.add(matcher.group().substring(0, matcher.group().length() - 1));
			}
		}
		return listImgSrc;
	}

	/***
	 * 下載圖片
	 * 
	 * @param listImgSrc
	 */
	private void Download(List<String> listImgSrc) {
		try {
			for (String url : listImgSrc) {
				String imageName = url.substring(url.lastIndexOf("/") + 1, url.length());
				URL uri = new URL(url);
				InputStream in = uri.openStream();
				FileOutputStream fo = new FileOutputStream(new File(imageName));
				byte[] buf = new byte[1024];
				int length = 0;
				System.out.println("開始下載:" + url);
				while ((length = in.read(buf, 0, buf.length)) != -1) {
					fo.write(buf, 0, length);
				}
				in.close();
				fo.close();
				System.out.println(imageName + "下載完成");
			}
		} catch (Exception e) {
			System.out.println("下載失敗");
		}
	}

	
}

相關推薦

JAVA網頁圖片下載本地

package com.yong.util; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.net.URL; import jav

python爬蟲小試例項--爬網頁圖片下載

一、python安裝在python的官網下載python版本,需要下載對應版本(在計算機-屬性中檢視自己是32位作業系統還是64位作業系統),我是64位的,就下載64位對應的安裝包了(如下圖:Windows x86-64 executable installer)。官網下載地

java網頁圖片

記得是這個月9號來深圳的,找了快20天的工作,結果只有那麼三四家公司打電話要我去面試,真的不知道什麼原因啊。是我投簡歷投簡歷投少了麼?還是這個季節就是招聘冷季節?真的不清楚。前天去一家創業公司面試,公司感覺還好,整體還算滿意,很幸運的被面試上了。談的工資也是我能接受的,就答

使用python網站圖片下載本地

使用python抓取網站圖片,下載到本地 看程式碼 import os import random import urllib.request def imgs(url): try: rep = urllib.request.Request(url)

JAVA網頁圖片,JAVA利用正則表示式網站圖片

利用java抓取網頁上的所有圖片: 用兩個正則表示式: 1、匹配html中img標籤的正則:<img.*src=(.*?)[^>]*?> 2、匹配img標籤中得src中http路徑的正則:http:\"?(.*?)(\"|>|\\s+) 實現:

實現網頁圖片JAVA實現)

    最近學習網頁設計,想仿網路上的一個頁面,圖片素材一個一個地儲存起來太麻煩。就想著裡利用JAVA來實現一個小小的網頁圖片爬蟲,程式碼很簡單,不一會兒就實現了,但是當我訪問https協議的圖片時,一直報javax.net.ssl.SSLKeyException異常,到我儲

第十講:Python爬網頁圖片儲存到本地,包含次層頁面

上一講我們講到了從暱圖網的首頁下載圖片到本地,但是我們發現首頁上面的大部分連結其實都可以進入到二級頁面。 在二級頁面裡面,我們也

Java網頁數據(原網頁+Javascript返回數據)

class mail 搜索引擎 網頁數據 點擊 ann 技術 while span 轉載請註明出處! 原文鏈接:http://blog.csdn.net/zgyulongfei/article/details/7909006 有時候由於種種原因,我們需要采集某個網站的數

PHP遠端圖片儲存到本地的實現方法

PHP抓取遠端圖片儲存到本地的實現方式<?php // Function: 獲取遠端圖片並把它儲存到本地 // //// 確定您有把檔案寫入本地伺服器的許可權 // //// 變數說明:// $url 是遠端圖片的完整URL地址,不能為空。// $filename 是

Python初學者好玩案例(一):最短的網頁圖片程式碼,只有10行

這幾天閒來無事,又研究了一下Python的基礎內容,首先研究的是如何抓取網頁資料。 發現大神們通常在初級教程裡就要寫很多程式碼,真讓我們這些初學者無所適從。 加上Python的各種版本不同,也會讓初學者頭腦,在此提醒初學者,看資料一定要注意軟體版本號。 還是按照我的原則,凡

(PHP)用cURL網頁資訊替換部分內容

<?php /** * 用cURL抓取網頁資訊並替換部分內容 * User: Ollydebug * Date: 2015/11/11 * Time: 19:13 */ $curlo

python多執行緒網頁內容寫入MYSQL

自己的第一個多執行緒練習,中間踩了不少坑,程式寫的很渣,但是勉強能實現功能需求了 ,實際上抓取網頁是多執行緒在MYSQL寫入的時候是加了執行緒鎖的 ,實際上感覺就不是在多執行緒寫入了,不過作為第一個練習程式就這樣吧 ,後續部落格還會繼續更新優化版本。## htm

網路爬蟲之爬網頁圖片儲存

爬取網頁圖片並儲存在本地 將網頁上的圖片爬取之後,以圖片原有名字儲存在本地 程式碼: import requests import os url="http://p1.so.qhmsg.com/bdr/_240_/t01dab8b2e73fe661d6

node.js網路圖片儲存到本地,node.js防盜鏈網路圖片儲存到本地

node.js抓取網路圖片儲存到本地,node.js抓取防盜鏈網路圖片儲存到本地 使用模組request、fs,request模組在npm裡平均月下載量超過3000W次,那是相當的牛逼。 node版本

Java網頁資料(原網頁+Javascript返回資料)

轉載請註明出處! 有時候由於種種原因,我們需要採集某個網站的資料,但由於不同網站對資料的顯示方式略有不同! 本文就用Java給大家演示如何抓取網站的資料:(1)抓取原網頁資料;(2)抓取網頁Jav

java網頁 --- 網路爬蟲

wechat:812716131 ------------------------------------------------------ 技術交流群請聯絡上面wechat ----------------------------------------------

Python爬蟲 BeautifulSoup網頁資料 儲存到資料庫MySQL

最近剛學習Python,做了個簡單的爬蟲,作為一個簡單的demo希望幫助和我一樣的初學者 程式碼使用python2.7做的爬蟲  抓取51job上面的職位名,公司名,薪資,釋出時間等等 直接上程式碼,程式碼中註釋還算比較清楚 ,沒有安裝mysql需要遮蔽掉相關程式碼:#!/u

php遠端網站圖片儲存

<?php /** * 一個用於抓取圖片的類 * * @package default * @author WuJunwei */ class download

網頁資料解析Android

這天遇到這樣一個需求:這種頁面資料可以抓取嗎? 隨後提供了賬號、密碼和網站地址: 帳號:kytj1     密碼:******************     登陸地址:http://student.tiaoji.kaoyan.com/tjadm 主要思路: 1、使用F

使用scrapy框架爬蜂鳥論壇的攝影圖片下載本地

utf 賦值 col 異常處理 創建文件夾 clas watermark follow ret 目標網站:http://bbs.fengniao.com/使用框架:scrapy 因為有很多模塊的方法都還不是很熟悉,所有本次爬蟲有很多代碼都用得比較笨,希望各位讀者能給處意見