欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

以一種"廉價"的方式獲取頁面的標題(downmoon)

系統 2320 0

有朋友問到:
“我需要得到一個web page的title,因為這個title一般都比較靠前,只要取得html 的前面少量內容就可以了。因為要取得很多個頁面的title,如果下載整個html code, 肯定比較浪費時間。.net好像沒有現成的類可以干這件事情(取得部分html) ,我應該如何去實現?”
一種比較"廉價"(即較小成本條件下)的解決思路:
第一步:取出含有頁面title部分的最小集合。這是“廉價”的關鍵!
第二步:用正則表達式取出<title>和</title>之間的部分即可。
先看下效果:


下面我們來分析:
頁面title 一般都在靠近開始處,所以我們從開始讀取Stream流,(如果靠近結尾,則如何?)讀取到什么地方為止呢?有個比較明顯的標志是
</title>
遇到它結束就可以了。
以什么方式讀取,我這里選取的是:逐行讀取,取到標志符即終止。
方法如下:


<!-- {cps..2}--> #region 獲取所需要的頁面內容
/// <summary>
/// 獲取所需要的頁面內容bytony2009.9,16
/// 邀月(downmoon):3w@live.cn
/// <paramname="strUrl"> 所要查找的遠程網頁地址 </param>
/// <paramname="timeout"> 超時時長設置,一般設置為8000 </param>
/// <paramname="enterType"> 是否輸出換行符,0不輸出,1輸出文本框換行 </param>
/// <paramname="EnCodeType"> 編碼方式 </param>
/// <returns></returns>
public static string GetRequestString( string strUrl, int timeout, int enterType,EncodingEnCodeType)
{

if (strUrl.Equals( " about:blank " )) return null ;;
if ( ! strUrl.StartsWith( " http:// " ) && ! strUrl.StartsWith( " https:// " )){strUrl = " http:// " + strUrl;}
string strResult = string .Empty;
System.IO.StreamReadersr
= null ;
string temp = string .Empty;
try
{
HttpWebRequestmyReq
= (HttpWebRequest)HttpWebRequest.Create(strUrl);
myReq.Timeout
= timeout;
myReq.UserAgent
= " User-Agent:Mozilla/5.0(compatible;MSIE6.0;WindowsNT5.2;SV1;.NETCLR2.0.40607;.NETCLR1.1.4322;.NETCLR3.5.30729) " ;
myReq.Accept
= " */* " ;
myReq.KeepAlive
= true ;
myReq.Headers.Add(
" Accept-Language " , " zh-cn,en-us;q=0.5 " );
HttpWebResponseHttpWResp
= (HttpWebResponse)myReq.GetResponse();
if (HttpWResp.StatusCode == System.Net.HttpStatusCode.OK)
{
StringBuilderstrBuilder
= new StringBuilder();
StreammyStream
= HttpWResp.GetResponseStream();
sr
= new StreamReader(myStream,EnCodeType);
string tmp = string .Empty;
while ((temp = sr.ReadLine()) != null )
{
strBuilder.Append(temp);
// ifhas</title>thenendbydownmoon(邀月)2009.9.16
tmp = strBuilder.ToString();
if (tmp.IndexOf( " </title> " ) > 0 ){ break ;}
if (enterType == 1 ){strBuilder.Append( " /r/n " );}
}
strResult
= strBuilder.ToString();
return strResult;
}
return string .Empty;
}
catch (Exceptionex)
{
// #regionLoghandlebyTony2008.11.21
return strResult;
// #endregion
}
finally { if (sr != null ){sr.Close();}}
}
#endregion

取出后就是再用正則取出<title>和</title>之間的部分。
這部分浪費了些時間,因為邀月的正則功底不行啊!·
先后試過如下正則表達式:

<!-- {cps..5}--> 1 // stringstrRegEx="<[^>]*>";
2 // stringstrRegEx="<title>.*([^</title>])";
3 // stringstrRegEx="<title>(.*?)</title>";
4 // stringstrRegEx="<title>.*?</title>";

均不能達到想要的“經濟廉價”的效果,最終,找到這個:



<!-- {cps..8}--> public static string GetContextByHtml( string sHtml)
{
// stringregex="(<title[>])(.*)(<//title>)";
string regex = @" (?<=<title.*>)([/s/S]*)(?=</title>) " ;
System.Text.RegularExpressions.Regexex
= new System.Text.RegularExpressions.Regex(regex,System.Text.RegularExpressions.RegexOptions.IgnoreCase);
return ex.Match(sHtml).Value.Trim();
}


演示效果如上圖:

后續問題:
1、將繼續實現代理方式躲過IP;
2、將嘗試另外一種通過Request.Filter方式直接替換來實現。
歡迎交流。
助人等于自助! 3w@live.cn

以一種"廉價"的方式獲取頁面的標題(downmoon)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 黑人精品欧美一区二区蜜桃 | 91精品综合久久久久久五月天 | 亚洲国产精品99久久久久久久久 | 亚洲第一在线 | 一区二区三区视频在线 | 欧美高清在线视频一区二区 | 日本高清不卡在线 | 久久青草精品免费资源站 | 日韩精品久久久久久久电影99爱 | 那一个欧美一级毛片 | 国产欧美精品一区二区三区 | 日韩在线欧美 | 日本高清天码一区在线播放 | 9久久99久久久精品齐齐综合色圆 | 久久香蕉网 | 日韩亚洲第一页 | 婷婷射丁香 | 色橹橹欧美在线观看视频高清免费 | 久久国产精品久久久久久久久久 | 在线国产视频 | 国产精品一区二区三区免费 | 久久精品久久久 | 久久精品国产99国产 | 亚洲综合99| 午夜草逼| 日韩欧美亚洲视频 | 久草经典视频 | 性激情| 91在线视频免费观看 | 色视频网站在线观看 | 久久精品久久精品久久 | 一级做a | 成人亚洲视频在线观看 | 午夜私人影院粉色视频我要 | se999se男人最爱| 91亚洲国产成人精品性色 | 91精品久久久久久久久久 | 激情av免费看| 国产高清视频一区二区 | 欧美激情综合亚洲五月蜜桃 | 9l蝌蚪porny中文自拍 |