ASP.NET視訊採集站核心技術分析
很多站長都是從做“垃圾站”起家了。什麼是“垃圾站”?說白了就是採集別人的資料存入自己的資料庫,加以聚合、整理、歸類,或增加自己的一些小修改,然後自己做一個節目,成為自己的網站。一直以來最流行的“垃圾站”多是文章內的,因為文章內比較容易採集,而且資料量大,有利於搜尋引擎。前兩三年開始有人做視訊採集站,甚至還有了一些很完善的視訊採集系統(如馬克思CMS,非常專業),也讓一些站長發了一筆橫財。可是隨著用馬克思的人越來越多,越晚開始做的站就越沒搞頭了,呵呵。解決方法其實也簡單,就是趁現在視訊採集站還不夠氾濫,自己寫視訊採集站,不用別人做的通用系統,只需要稍微做一點SEO,搜尋引擎就會照顧你咯~ o(∩_∩)o。
下面以採集土豆為例,談談如何以最簡單粗暴的方式採集視訊。
成功案例:http://www.kangxiyoulaile.com/( 康熙又來了)
自從Youtube出來之後,視訊採集站就根本不需要採集視訊了——它只需要採集Flash播放器引數即可。
比如以下這個視訊,我們只需要採集到它的引數“K1hf2uocE1Y”就可以了。當然,為了顯得更專業,我們還要採集視訊的相關資訊,比如視訊名字、視訊時長、觀看次數、網友評論、內容簡介等等,這都是舉一反三的事了,^_^,通通都存入我們自己的資料庫中!
既然是做垃圾站,那麼一定要有自己的分類。我們就把這作為起點吧!用土豆搜尋功能!
搜尋“康熙來了”+日期,就可以得到某日期內的“康熙來了”節目,如“康熙來了20090720”,我們就來到了http://so.tudou.com/isearch.do?kw=%BF%B5%CE%F5%C0%B4%C1%CB20090720
明白了吧?我們定期讓程式開啟http://so.tudou.com/isearch.do?kw=%BF%B5%CE%F5%C0%B4%C1%CB + ‘當前日期’ 就可以了達到自動採集的效果了。
如何用ASP.NET獲取HTML呢?這是一個沒有技術含量的問題。我們直接給程式碼。
////// 獲取網頁內容 /// /// ///public static string GetHtml(string url) { string result = ""; try { WebRequest request = WebRequest.Create(url); WebResponse response = request.GetResponse(); StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("GBK")); result = reader.ReadToEnd(); } catch { result = ""; } return result; }
接下來,我們分析得到的HTML。現在這個年代,大家都採用div+css,這也讓我們的採集變得很容易。嘿嘿,仔細想想,土豆在採用div+css來做介面的時候,肯定會為每一個“節目”單獨做一個css的class吧? 嗯,這就對了!分析原始檔後,果然,我們發現在搜尋節目列表中,每一個節目都採用了“pack pack_video_card”這個css的class。
我們應該怎麼做呢? 將整個原始檔作為一個字串,然後以“
程式碼如下:
string[] list=html.Split(new string[]{""},StringSplitOptions.RemoveEmptyEntries);加一些簡單的控制條件,然後從每一個字串片段中提取資訊放入類裡。
如採集視訊縮圖:
foreach (string s in list) {begin = s.IndexOf("src")+5; end = s.IndexOf("")-4; v.ImgUrl = s.Substring(begin, end - begin + 1);…………
}
有了這樣的基礎,就可以進一步封裝成一些函式,便於快速採集了。如:
////// 獲取兩個日期段之間的所有視訊實體 /// /// /// /// 每天的最大視訊數 ///public static List<Video> GetVideoByDate(DateTime beginDate, DateTime endDate,int everydayMax) { ByDateVideoList = new List<Video>(); DateTime dt = beginDate; while (dt <= endDate) { ByDateVideoList.AddRange(GetTopVideo(GetTudouString(dt.ToString("yyyyMMdd")),everydayMax)); dt = dt.AddDays(1); } return ByDateVideoList; }
還有一個小細節。土豆網採用的是GBK編碼,我們如果也採用GBK編碼,搜尋引擎就會發現重複資料太大,所以我們必須要修改編碼。假設我們的網站使用UTF8編碼,如何將採集到的GBK編碼資料轉換成UTF8進行展示呢? 參考以下函式:
public static string ConvertEncoding(Encoding oldEncoding, Encoding newEncoding, string oldString) { byte[] ldBytes = oldEncoding.GetBytes(oldString); byte[] newsBytes = Encoding.Convert(oldEncoding, newEncoding, oldBytes); char[] newChars = new char[newEncoding.GetCharCount(newsBytes, 0, newsBytes.Length)]; newEncoding.GetChars(newsBytes, 0, newsBytes.Length, newChars, 0); string newString = new string(newChars); return newString; }最後,很重要了!做一個簡單的URL Rewrite,方便搜尋引擎搜錄。按照Google排PR的原則,離根目錄越近、地址越短、get引數越少的地址更容易收錄並靠前。我們可以這樣來做,在Global.asax.cs裡這樣寫protected void Application_BeginRequest(object sender, EventArgs e)
{
robot();
string Id = Request.Path.Substring(Request.Path.LastIndexOf('/') + 1);
if (Id.Length==16)
{
Server.Transfer("~/V.aspx?Id=" + Id.Substring(0,11));
}
}這樣,原本是 http://www.kangxiyoulaile.com/v.aspx?id=3IPFQqeKtKc 的地址就可以通過http://www.kangxiyoulaile.com/3IPFQqeKtKc.aspx 來訪問。把網站上所有帶引數形式的內部連結都改成後者,就可以瞞過搜尋引擎了。我們還可以賤一點,做一些針對搜尋引擎的優化。例如以下程式碼是判斷搜尋引擎蜘蛛訪問的。我們大可以在判斷到訪問者是搜尋引擎蜘蛛之後,對頁面資料做一些更改。。嘿嘿。。由於這招太賤了,以下不演示具體細節。稍微改改下面的程式碼你就可以……///
/// 判斷蜘蛛是否來過
///
///
protected bool robot()
{
bool brtn = false;
string king_robots = "mailto:Baiduspider+@Baidu%7CGooglebot@Google%7Cia_archiver@Alexa%7CIAArchiver@Alexa%7CASPSeek@ASPSeek%7CYahooSeeker@Yahoo%7Csohu-search@Sohu%7Chelp.yahoo.com/help/us/ysearch/slurp@Yahoo%7Csohu-search@SOHU%7CMSNBOT@MSN";
string ls_spr;ls_spr = Request.ServerVariables["http_user_agent"].ToString();
char[] delimiterChars = { '|' };
char[] x = { '@' };
string[] I1 = king_robots.Split(delimiterChars);for (int i = 0; i < I1.Length; i++)
{
string[] spider = I1[i].Split(x);
if (ls_spr.IndexOf(spider[0].ToString()) > -1)
{
brtn = true;
logrobots(spider[1].ToString()+"|"+Request.Path+"|");
break;
}
}
return brtn;
}好了!關鍵的技術都分析完了,我們點到為止吧,靠大家自己了!o(∩_∩)o來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-610959/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux核心技術分析Linux
- 圖書網站資訊採集網站
- 恆訊科技分析雲服務的核心技術
- 不重視技術,何談掌握核心技術?
- iOS視訊流採集概述(AVCaptureSession)iOSAPTSession
- iOS視訊採集實戰(AVCaptureSession)iOSAPTSession
- Android 音視訊採集那些事Android
- 最新熱乎的尚矽谷Docker核心技術視訊教程Docker
- Elasticsearch核心技術(四):索引原理分析Elasticsearch索引
- 音視訊入門之音訊採集、編碼、播放音訊
- 大資料技術是如何採集到我們的資訊的呢?大資料
- 初識AV Foundation-視訊、影象採集
- 大型網站技術架構核心原理(1)網站架構
- 大資料技術之資料採集篇大資料
- 資料採集與技術融合作業3
- 資料採集與融合技術作業4
- 資料採集和融合技術作業1
- 資料採集與融合技術作業一
- 資料採集與融合技術作業四
- 資料採集與融合技術作業2
- 資料採集和融合技術作業3
- 技術胖155集前端視訊教程-全部免費觀看前端
- 採集Prestashop獨立站REST
- 《大型網站技術架構核心原理與案例分析》讀書筆記(二)網站架構筆記
- 有什麼軟體可以批量採集阿里國際站的商品主圖視訊阿里
- 短視訊技術詳解:Android端的短視訊開發技術Android
- 日誌採集/分析
- 招聘資訊採集
- .NET 音訊採集音訊
- 音視訊技術基礎
- phpQuery採集網站資料PHP網站
- 抖音商家資訊採集器,抖音小店採集 電話採集
- Laravel PHP 框架網站重建技術分析LaravelPHP框架網站
- 無線通訊的核心技術有哪些?
- 大型網站技術架構(四)--核心架構要素網站架構
- 資料採集與融合技術實踐作業三
- 資料採集與融合技術實踐作業一
- 資料採集與融合技術實踐作業四
- 資料採集與融合技術實踐--作業三