標籤:
現在工作方向已經越來越傾向於項目產品運營相關的東西。對線上運營也有了一定程度的瞭解。
配合一些技術性的操作,能極大的便利工作中的各種高難度任務,快速提升自我,積累豐富的經驗和資源。
以近期製作LP為例,在沒有任何經驗的情況下,需要快速和設計溝通製作著陸頁,中間遇到了一些經驗上不足,於是到處找各種別人家的著陸頁研究別人的思路和做法,積累一些活動著陸頁,對工作是有比較大益處的。參考別人的東西越多,才能做出更厲害的東西出來,凡事盡量往極致上靠近。
於是花了一整天的時間,基於瀏覽器,製作了一個扒站工具,把看到的一些好一點的著陸頁全部down到本地,快速探索和研究學習。
市面上已經有很多扒站的工具,包括最原始的teleport,後來的都客扒站工具、模板小偷、網頁小偷、網頁提取助手什麼的。基本上都使用過,基本上都不能完整的把CSS、指令碼、圖片有效下載回來,按我要的格式存放。
以我在新浪上發現的一個懶財網的著陸頁為例:
我想要的是這樣的結果。
著陸頁名稱為index.html,CSS,圖片和JS分別給我歸類存到指定的目錄,再到根目錄下面標記一個txt文檔,告訴我當時這個著陸頁我是哪個網址下載回來的。
最後做出來的程度的介面是這樣的
做的非常粗糙,只有一個分析並抓取和一個C#的WebBrowser可以用。
程式會自動下載相關的資料,並存到相關的目錄,產生需要的檔案。
為什麼不用普通的直接擷取原始碼的方式直接下載HTML呢。
1、是HTML裡面解析相對路徑和絕對路徑非常 非常 非常麻煩,需要Regex一個個匹配,並替換成本地路徑。
2、是一些情況下,瀏覽器匹配出來的結果或許會更精確一點,實現上應該是更簡單的。
代碼流程:
1、瀏覽器載入著陸頁,等待載入完成。
2、遍曆所有節點
圖片,就下載,儲存,並替換為本地路徑,指令碼同樣,CSS同樣。最後處理著陸頁內嵌入的style格式的源碼。
最後,開啟CSS檔案,用正則匹配圖片串連並下載遠程圖片,替換CSS裡面的圖片地址。
貼上解析CSS裡面的圖片並下載到本地的代碼。其餘都是比較簡單的。
/// <summary> /// 解析CSS源碼裡面的圖片,下載,並轉換為本地格式的連結 /// </summary> /// <param name="content">CSS檔案內容</param> /// <param name="cssUrl">CSS檔案路徑,用於轉換為圖片絕對位址下載</param> /// <returns></returns> public string ParseImgInCSS(string content, string cssUrl = "") { Regex reg = new Regex(@"url\((.*?)\)", RegexOptions.IgnoreCase); content = reg.Replace(content, (match) => { string imgUrl = match.Groups[1].Value; imgUrl = imgUrl.Replace("‘", "").Replace("\"", "");//替換‘和雙引號,因為URL匹配是可能帶引號的 imgUrl = HtmlHelper.GetUrlRelative(cssUrl, imgUrl);//修複路徑為絕對位址 if (!string.IsNullOrEmpty(imgUrl)) { //遠程圖片下載儲存到本地 var localImage = Path.Combine("images", HtmlHelper.GetFileNameInUrl(imgUrl)); DownloadHelper.DownloadFile(imgUrl, Path.Combine(SaveFolder, SiteFolder, localImage));//下載到本地 if (cssUrl.ToLower().IndexOf(".css") > -1) {//代表是CSS檔案,會存到CSS目錄,需要使用相對位址 return @"url(‘../" + localImage.Replace("\\", "/") + @"‘)"; } else {//代表是頁面內部的CSS,不需要切換為相對路徑 return @"url(‘" + localImage.Replace("\\", "/") + @"‘)"; ; } } return match.Value; }); return content; }
最後加上注釋用了100行程式碼完成了整個扒站工具。
還有很多地方可以完善,不過已經可以投入使用。1分鐘扒個幾個站的著陸頁是沒問題了,準備抽空去各家p2p網站的百度推廣扒他們的頁了。。。
扒了10個LP,目錄還沒發現問題。要是有機會再封裝一下出售。
會搞的人,可以自己玩玩,思路已經有了。
更多精彩內容,訪問小五部落格http://www.lingdonge.com
C#通過WebBrowser快速扒站思路積累大量著陸頁列表