C#通過WebBrowser快速扒站思路積累大量著陸頁列表

來源:互聯網
上載者:User

標籤:

現在工作方向已經越來越傾向於項目產品運營相關的東西。對線上運營也有了一定程度的瞭解。

 

配合一些技術性的操作,能極大的便利工作中的各種高難度任務,快速提升自我,積累豐富的經驗和資源。

 

以近期製作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快速扒站思路積累大量著陸頁列表

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.