亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? writer.java

?? 這是一個改進的網絡爬蟲源代碼,采用多線程技術對網頁進行采集.
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
package gather;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.nio.charset.Charset;
import java.nio.charset.IllegalCharsetNameException;
import java.nio.charset.UnsupportedCharsetException;

public class Writer
{
	public final int	FL_50K			= 50 * 1024;
	public final int	FL_100K			= 100 * 1024;
	public final int	FL_500K			= 500 * 1024;
	public final int	FL_1M			= 1024 * 1024;
	public final int	FL_5M			= 5 * 1024 * 1024;

	int					rlength			= 0;
	int					nlength			= 0;
	private int			nUrlPath		= 0;
	private String[]	urlPath			= new String[100];

	static long			nSaveFileCount	= 0;

	private final int	nSLEEPTIME		= 1 * 60000;
	byte[]				buf				= new byte[10240];
	byte[]				inbuf			= new byte[10240];
	byte[]				tembuf			= new byte[10240];

	public Writer()
	{

	}

	public void memcpy(byte[] src, int srcpos, byte[] dest, int destpos, int length)
	{
		for (int i = 0; i < length; i++)
		{
			dest[destpos + i] = src[srcpos + i];
		}
	}

	public String findCharset(byte[] buf)
	{
		if (buf == null || buf.length <= 0)
			return "";
		String strcharset = "";
		String addEr = "  將使用默認的charset。";
		String strtem;
		final String strCHARSETMARK = "charset=";
		int n = 0;
		int pos = 0;
		int i = 0;
		try
		{
			strtem = new String(buf);
			strtem = strtem.toLowerCase();
			n = strtem.indexOf(strCHARSETMARK);
			if (n > -1)
			{
				pos = n + strCHARSETMARK.length();
				for (i = pos; (i < pos + 30) && (i < buf.length); i++)
				{
					if ((strtem.charAt(i) == '"') || (strtem.charAt(i) == '\'') || (strtem.charAt(i) == '/') || (strtem.charAt(i) == '>') || (strtem.charAt(i) == 0x20) || (strtem.charAt(i) == 0x0d) || (strtem.charAt(i) == 0x0a) || (strtem.charAt(i) == ',') || (strtem.charAt(i) == ';'))
					{
						break;
					}
				}
				strcharset = strtem.substring(pos, i);
			}
			Charset cs = Charset.forName(strcharset);
		}
		catch (UnsupportedCharsetException e)
		{
			strcharset = "";
		}
		catch (IllegalCharsetNameException e)
		{
			strcharset = "";
		}
		catch (IllegalArgumentException e)
		{
			strcharset = "";
		}
		catch (Exception e)
		{
			strcharset = "";
		}
		return strcharset;
	}

	public void savetofile(String strPath, String strFileExt, byte[] buf)
	{//說明:strFileExt是指定保存到文件的后綴名,從鏈接的后三個字符讀出,不帶“.”
		try
		{
			new File(strPath).mkdirs();
			String strfile = "";
			strfile = strfile.format(strPath + "%08X." + strFileExt, nSaveFileCount++);
			FileOutputStream fos = new FileOutputStream(strfile);
			fos.write(buf);
			fos.close();
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
	}

	public int writeData(URLConnection con, String strurl, boolean bSaveToFile) throws Exception
	{
		int n = 0;
		String strhtml = "";
		String strcharset = "";
		String strHost = "noname";
		String strWritePath = "D:\\temp\\";
		String strSubPath = "";
		try
		{
			int len = 0;
			nlength = 0;

			nUrlPath = parseURLPath(strurl);//解析BaseURL
			strHost = new URL(strurl).getHost();
			if (strHost == null || strHost.length() == 0)
				strHost = "noname";
			strWritePath = "D:\\temp\\" + strHost + "\\";
			// ------------------------------------------------------------
			HttpURLConnection httpurlconn;
			httpurlconn = (HttpURLConnection) con;
			int nnnn = 0;
			String strHeaderField = "";
			if (!bSaveToFile)
			{//如果不寫入文件,則讀取頭數據,并尋找charset:
				while (strHeaderField != null)
				{
					strHeaderField = httpurlconn.getHeaderField(nnnn++);

					if (strHeaderField != null)
					{
						if (strHeaderField.toLowerCase().contains("charset="))
						{
							strcharset = findCharset(strHeaderField.getBytes());// 在HTTP頭數據中尋找charset
							if (!strcharset.isEmpty())
								break;
						}
					}
				}
			}
			// ------------------------------------------------------------
			// ------------------------------------------------------------
			InputStream br = con.getInputStream();// 獲取數據流
			while ((len = br.read(inbuf)) > 0)
			{
				tembuf = new byte[nlength];
				memcpy(buf, 0, tembuf, 0, nlength);
				buf = new byte[nlength + len];
				memcpy(tembuf, 0, buf, 0, nlength);
				memcpy(inbuf, 0, buf, nlength, len);
				nlength += len;
			}
			//			System.out.println("數據下載完成。" + strurl);
			br.close();// 關閉數據流:必須關閉,否則網絡連接的端口資源會被占完!!!
			if (bSaveToFile)
			{// 需要寫入文件:
				strSubPath = "";
				if (nlength >= 5120 && nlength < FL_100K)
				{
					strSubPath = "FL_100K\\";
				}
				else if (nlength >= FL_100K && nlength < FL_500K)
				{
					strSubPath = "FL_500K\\";
				}
				else if (nlength >= FL_500K && nlength < FL_1M)
				{
					strSubPath = "FL_1M\\";
				}
				else if (nlength >= FL_1M)
				{
					strSubPath = "FL_Over1M\\";
				}
				else
				{
					strSubPath = "";
					System.out.println("------------------------>該數據長度小于指定值,丟棄。" + nlength);
				}
				if (!strSubPath.isEmpty())
					savetofile(strWritePath + strSubPath, strurl.substring(strurl.length() - 4), buf);
			}
			else
			{// 需要進行鏈接分析:
				if (strcharset.isEmpty())// 如果在HTTP頭數據中沒有尋找charset,則進一步在:
				{
					strcharset = findCharset(buf);// 網頁中尋找到“charset”,并讀出其指示的字符集類型
				}
				if (strcharset.isEmpty())
				{// 如果以上兩步都沒有找到charset,則手動指定默認值:
					strcharset = "gbk";
				}
				strhtml = new String(buf, 0, nlength, strcharset);
				// ----------------------------------------------
				// 讀取需要的文件鏈接:
				getIMGLinkText(strhtml);
				getBackgroundLinkText(strhtml);
				getOtherUrlLink(strhtml, strcharset);
			}
		}
		catch (Exception e)
		{
			System.out.println("Error:_Writer::" + e);
		}
		// ---------------------------------------------------------------------------
		return n;
	}

	public int parseURLPath(String strurl)
	{
		int re = 0;
		int nCount = 0;
		if ((null == strurl) || (strurl.length() == 0))
			return 0;
		strurl = strurl.toLowerCase();
		try
		{
			URL url = new URL(strurl);
			urlPath[nCount++] = "http://" + url.getHost() + "/";
			String strpath = url.getPath();
			if (strpath.length() > 0)
				strpath = url.getPath().substring(1);
			while (strpath.contains("/"))
			{
				int pos = strpath.indexOf("/") + 1;
				urlPath[nCount++] = strpath.substring(0, pos);
				strpath = strpath.substring(pos);
			}
			re = nCount;
		}
		catch (Exception e)
		{
			System.out.println("Error:_HTML_parseURLPath:" + strurl + e.getMessage());
		}

		return re;
	}

	public void getIMGLinkText(String strHtml)
	{
		String line = "";
		String strBZ = "<img src=";
		String strmylinktext = "";

		int nstartpos = 0;
		int nstoppos = 0;
		int pos = 0;
		int i = 0;
		boolean bSaveToFile;
		int nCount = 0;
		int nCount2 = 0;

		if (strHtml == null || strHtml.isEmpty())
			return;
		try
		{
			strHtml = strHtml.toLowerCase();

			while (pos != -1)
			{
				pos = strHtml.indexOf(strBZ, nstoppos);
				if (-1 == pos)
					break;
				nCount++;
				char c = strHtml.charAt(pos + strBZ.length());
				if ('"' == c || '\'' == c)
					nstartpos = pos + strBZ.length() + 1;
				else
					nstartpos = pos + strBZ.length();

				for (i = nstartpos; i < strHtml.length(); i++)
				{
					if ((strHtml.charAt(i) == '"') || (strHtml.charAt(i) == '\'') || (strHtml.charAt(i) == '>') || (strHtml.charAt(i) == 0x20) || (strHtml.charAt(i) == 0x0d) || (strHtml.charAt(i) == 0x0a) || (strHtml.charAt(i) == ',') || (strHtml.charAt(i) == ';'))
					{
						break;
					}
				}
				nstoppos = i;

				strmylinktext = strHtml.substring(nstartpos, i);
				strmylinktext = completeURL(strmylinktext);
				//----------------------------------------------

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩电影在线观看网站| 972aa.com艺术欧美| 欧美精品123区| 国内精品免费在线观看| 一区二区三区毛片| 日韩一区中文字幕| 中文在线免费一区三区高中清不卡| 91精品国产综合久久香蕉麻豆| 欧美午夜影院一区| 色综合欧美在线| 91网站视频在线观看| 成人18精品视频| 丁香激情综合国产| 粉嫩欧美一区二区三区高清影视| 国产精品自拍毛片| 国产电影精品久久禁18| 国产高清亚洲一区| 日韩欧美在线一区二区三区| 91精品国产欧美一区二区| 91精品国产综合久久精品app| 国产精品蜜臀在线观看| 国产偷v国产偷v亚洲高清| 精品电影一区二区| 久久精子c满五个校花| 久久精品国产一区二区| 国产91丝袜在线观看| 日韩美女天天操| 国产精品丝袜黑色高跟| 国产精品伊人色| 久久你懂得1024| 一区二区三区欧美日韩| 99国产精品久| 亚洲色图视频网| 麻豆成人av在线| 97精品久久久午夜一区二区三区| 久久久精品人体av艺术| 国产精品资源网站| 久久久久久免费毛片精品| 国产伦精一区二区三区| 在线视频综合导航| 精品国产一区二区三区四区四| 日韩影视精彩在线| 成人不卡免费av| 中文字幕亚洲在| 色成人在线视频| 26uuu另类欧美| 亚洲国产日日夜夜| 国产在线精品视频| 久久久噜噜噜久噜久久综合| 国产91综合网| 亚洲精品国产视频| 国产一区福利在线| 中文字幕二三区不卡| 在线视频国产一区| 天堂午夜影视日韩欧美一区二区| 欧美一区在线视频| 国产91丝袜在线播放0| 亚洲久草在线视频| 日韩欧美国产一区二区在线播放| 国产成人午夜精品影院观看视频 | 欧美美女黄视频| 三级影片在线观看欧美日韩一区二区| 制服丝袜亚洲播放| 国产成人8x视频一区二区| 一区二区三区免费网站| 日韩一级免费观看| av在线播放成人| 久久久久久久久久美女| 99re成人精品视频| 蜜桃视频在线一区| 亚洲蜜臀av乱码久久精品| 国产99久久久国产精品免费看| 亚洲精品你懂的| 欧美tickling挠脚心丨vk| 免费成人av资源网| 欧美一区二区三区在线| 国产91高潮流白浆在线麻豆| 亚洲精品日韩专区silk| 26uuu亚洲综合色欧美| 欧美一卡二卡在线| 成人精品小蝌蚪| 九九九久久久精品| 日韩写真欧美这视频| 99国产精品久久| 国产成人在线免费| 日韩精品一级中文字幕精品视频免费观看| 国产喷白浆一区二区三区| 成人午夜视频在线观看| 日韩高清在线观看| 一区二区三区在线播放| 久久精品一区二区三区不卡牛牛| 51精品视频一区二区三区| 91免费看片在线观看| 国产精品综合在线视频| 青青国产91久久久久久| 亚洲一区二区三区四区在线| 欧美久久久久久久久中文字幕| 国产成人自拍在线| 久久99国产精品成人| 无码av中文一区二区三区桃花岛| 91精品国产色综合久久 | 韩国av一区二区三区| 日韩在线一区二区三区| 亚洲国产日韩精品| 一区二区视频免费在线观看| 中国av一区二区三区| 国产亚洲一区二区三区| 久久综合九色综合欧美就去吻| 91精品国产综合久久久久久久久久 | 国产精品天美传媒沈樵| 日韩一区二区三区三四区视频在线观看 | 国产精品久久久久一区| 成人综合激情网| 国产成人夜色高潮福利影视| 国产激情精品久久久第一区二区| 另类的小说在线视频另类成人小视频在线 | 精品一区二区三区免费视频| 奇米精品一区二区三区四区 | 久久久国产一区二区三区四区小说 | 国产成人在线视频免费播放| 国产乱子伦视频一区二区三区 | 亚洲午夜久久久久| 午夜一区二区三区在线观看| 精品剧情v国产在线观看在线| 91精品国产福利在线观看| 欧美一区午夜视频在线观看| 欧美成人vps| 亚洲国产精品精华液2区45| 国产精品免费丝袜| 一区二区三区在线观看视频| 亚洲成人免费在线观看| 日本vs亚洲vs韩国一区三区| 美日韩黄色大片| 国产成人精品www牛牛影视| 成人app下载| 欧美日韩午夜影院| 成人avav影音| 欧美日韩情趣电影| 亚洲精品一区二区在线观看| 国产精品久久久一区麻豆最新章节| 国产精品家庭影院| 天堂在线一区二区| 高清国产午夜精品久久久久久| 日本电影欧美片| 日韩免费视频一区二区| 国产精品拍天天在线| 亚洲国产精品久久久久婷婷884| 蜜臀a∨国产成人精品| 成人综合在线观看| 51精品秘密在线观看| 中文字幕制服丝袜一区二区三区| 亚洲午夜久久久久久久久久久| 美腿丝袜一区二区三区| 色综合一个色综合| 国产一区二区成人久久免费影院| 91女厕偷拍女厕偷拍高清| 69堂国产成人免费视频| 国产精品二区一区二区aⅴ污介绍| 五月天亚洲婷婷| 96av麻豆蜜桃一区二区| 欧美刺激脚交jootjob| 亚洲欧美色一区| 国产成人亚洲综合色影视| 欧美一卡二卡在线| 一区二区成人在线视频| 国产91色综合久久免费分享| 日韩一区二区精品葵司在线| 亚洲日本va午夜在线影院| 韩国av一区二区三区| 欧美日韩精品电影| 精品视频1区2区| 亚洲天堂中文字幕| 国产乱码精品一区二区三区五月婷| 在线观看国产91| 日韩理论片中文av| 成人动漫一区二区在线| 久久综合久久久久88| 美女高潮久久久| 欧美一区二区三区色| 亚洲国产aⅴ成人精品无吗| 99这里只有久久精品视频| 久久久久青草大香线综合精品| 日韩精品欧美精品| 欧美日韩精品一区二区三区| 亚洲女爱视频在线| 成人av网站免费观看| 国产亚洲欧美日韩俺去了| 国内外成人在线视频| 欧美成人一区二区三区在线观看| 日韩av电影天堂| 欧美日韩一级视频| 天天综合天天做天天综合| 欧美在线免费观看视频| 亚洲综合另类小说| 91福利视频在线| 亚洲高清免费视频| 欧美日韩国产首页| 无吗不卡中文字幕| 日韩精品一区二区在线| 精品一区二区久久久|