国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

用Java從網上抓取指定URL源碼的方案

2019-11-18 11:33:04
字體:
來源:轉載
供稿:網友
引言:
  在做無線項目的時候,與通訊公司的數據通訊有一部分是通過XML交互的,所以必須要動態抓取通訊公司提供的固定的Internet上的數據,便研究了一下如何抓取固定url上的數據,現與大家分享一下。

  類名GetPageCode,有一個方法GetSource,通過屬性傳遞參數,入參控制的是要取得URL的地址,代理服務器的設置及輸出方式的控制,這里大家可以再擴展自己的需要,我這里只提供了兩種方式,一種是直接寫到本地的某個文件中,另外一種就是返回字符串的。類里已經作了比較具體的注釋,我想大家很輕易就看明白了。

調用方式:
#region 測試獲取遠程網頁
GetPageCode gpc = new GetPageCode();
gpc.Url="http://ppcode.com";
gpc.PRoxyState=1;//使用代理服務器,0為不使用,設置為1后下面的代理設置才起作用
gpc.ProxyAddress="http://proxyName.com";//代理服務器地址
gpc.ProxyPort="80";//代理服務器的端口
gpc.ProxyAccount="proxy";//代理服務器賬號
gpc.ProxyPassWord="password";//代理服務器密碼
gpc.ProxyDomain="bqc";//代理服務器域
gpc.OutFilePath=filePath;//設置輸出文件路徑的地方,假如不設置,則返回字符串
gpc.GetSource();//處理
string tempErr=gpc.NoteMessage;//假如出錯,這里會提示
string tempCode=gpc.OutString;//返回的字符串
#endregion
類代碼:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Net;
using System.Text;
using System.Web;
namespace Test.Com
{
/// &lt summary &gt
/// 功能:取得Internet上的URL頁的源碼
/// 創建:2004-03-22
/// 作者:Rexsp MSN:yubo@x263.net
/// &lt /summary &gt
public class GetPageCode
{
#region 私有變量
/// &lt summary &gt
/// 網頁URL地址
/// &lt /summary &gt
private string url=null;
/// &lt summary &gt
/// 是否使用代碼服務器:0 不使用 1 使用代理服務器
/// &lt /summary &gt
private int proxyState=0;
/// &lt summary &gt
/// 代理服務器地址
/// &lt /summary &gt
private string proxyAddress=null;
/// &lt summary &gt
/// 代理服務器端口
/// &lt /summary &gt
private string proxyPort=null;
/// &lt summary &gt
/// 代理服務器用戶名
/// &lt /summary &gt
private string proxyAccount=null;
/// &lt summary &gt
/// 代理服務器密碼
/// &lt /summary &gt
private string proxyPassword=null;
/// &lt summary &gt
/// 代理服務器域
/// &lt /summary &gt
private string proxyDomain=null;
/// &lt summary &gt
/// 輸出文件路徑
/// &lt /summary &gt
private string outFilePath=null;
/// &lt summary &gt
/// 輸出的字符串
/// &lt /summary &gt
private string outString=null;
/// &lt summary &gt
/// 提示信息
/// &lt /summary &gt
private string noteMessage;

#endregion

#region 公共屬性
/// &lt summary &gt
/// 欲讀取的URL地址
/// &lt /summary &gt
public string Url
{
get{return url;}
set{url=value;}
}
/// &lt summary &gt
/// 是否使用代理服務器標志
/// &lt /summary &gt
public int ProxyState
{
get{return proxyState;}
set{proxyState=value;}
}
/// &lt summary &gt
/// 代理服務器地址
/// &lt /summary &gt
public string ProxyAddress
{
get{return proxyAddress;}
set{proxyAddress=value;}
}
/// &lt summary &gt


/// 代理服務器端口
/// &lt /summary &gt
public string ProxyPort
{
get{return proxyPort;}
set{proxyPort=value;}
}
/// &lt summary &gt
/// 代理服務器賬號
/// &lt /summary &gt
public string ProxyAccount
{
get{return proxyAccount;}
set{proxyAccount=value;}
}
/// &lt summary &gt
/// 代理服務器密碼
/// &lt /summary &gt
public string ProxyPassword
{
get{return proxyPassword;}
set{proxyPassword=value;}
}
/// &lt summary &gt
/// 代理服務器域
/// &lt /summary &gt
public string ProxyDomain
{
get{return proxyDomain;}
set{proxyDomain=value;}
}
/// &lt summary &gt
/// 輸出文件路徑
/// &lt /summary &gt
public string OutFilePath
{
get{return outFilePath;}
set{outFilePath=value;}
}
/// &lt summary &gt
/// 返回的字符串
/// &lt /summary &gt
public string OutString
{
get{return outString;}

}
/// &lt summary &gt
/// 返回提示信息
/// &lt /summary &gt
public string NoteMessage
{
get{return noteMessage;}

}

#endregion

#region 構造函數
public GetPageCode()
{
}
#endregion

#region 公共方法
/// &lt summary &gt
/// 讀取指定URL地址,存到指定文件中
/// &lt /summary &gt
public void GetSource()
{
WebRequest request = WebRequest.Create(this.url);
//使用代理服務器的處理
if(this.proxyState==1)
{
//默認讀取80端口的數據

if(this.proxyPort==null)
this.ProxyPort="80";
WebProxy myProxy=new WebProxy();
myProxy = (WebProxy)request.Proxy;
myProxy.Address = new Uri(this.ProxyAddress+":"+this.ProxyPort);
myProxy.Credentials = new NetworkCredential(this.proxyAccount, this.proxyPassword, this.ProxyDomain);
request.Proxy = myProxy;
}
try

{
//請求服務
WebResponse response = request.GetResponse();
//返回信息
Stream resStream = response.GetResponseStream();
StreamReader sr = new StreamReader(resStream, System.Text.Encoding.Default);
string tempCode= sr.ReadToEnd();
resStream.Close();
sr.Close();

//假如輸出文件路徑為空,便將得到的內容賦給OutString屬性
if(this.outFilePath==null)
{
this.outString=tempCode;
}
else
{

FileInfo fi = new FileInfo(this.outFilePath);
//假如存在文件則先干掉
if(fi.Exists)
fi.Delete();
StreamWriter sw = new StreamWriter(this.outFilePath,true,Encoding.Default);
sw.Write(tempCode);
sw.Flush();
sw.Close();
}
}
catch
{
this.noteMessage="出錯了,請檢查網絡是否連通;";
}

}
#endregion

}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沙河市| 舞阳县| 井冈山市| 红桥区| 四川省| 军事| 福州市| 富平县| 平湖市| 大新县| 麦盖提县| 桃园市| 句容市| 高尔夫| 马关县| 绍兴市| 蒙阴县| 台中市| 曲靖市| 公主岭市| 繁昌县| 哈密市| 临海市| 全南县| 娄底市| 宜城市| 大悟县| 哈尔滨市| 武城县| 邯郸县| 财经| 福清市| 彩票| 浠水县| 长葛市| 印江| 文安县| 武山县| 镇安县| 察哈| 武城县|