這是半個月前幫學弟寫的程式(順便學習一下HttpParser跟Config的用法)
主要功能就是把Yahoo新聞的新聞網頁的內容給抓下來存成txt檔
如此一來要做資訊檢索或斷詞之類的研究都很方便
或許有人會說:用RSS不就好了?
我會額外寫個小程式的原因有二,一是RSS不一定能顯示很久以前的資訊,二是自訂性
自製程式的話對於格式或檔名之類的設定都可以按造自己需求
還可以過濾掉已存在的新聞...等
按此下載 (51.7kb,需要.NET Framework 2.0)
原始碼(請不要二次散布,謝謝)
順便一提,這也是我第一次使用C#而非VB寫這種小程式
使用方式:
先選擇新聞種類,再選擇讀取範圍、儲存位置
按下[開始]後,程式就會將這些頁數底下的新聞連結都一一下載到指定目錄
另外可以設定儲存的格式
這個技術上其實很簡單,主要就是下載指定的Html再讀取需要的欄位資訊
我用的是HTML Agility Pack,這是一個.NET中相當好用的HTML Parser
讀取網頁後可以直接用指定tag的方式取得網頁內容,還可以設定是否要濾掉script及tag
ComicShelf之類的線上看漫畫軟體,其實也都是用同樣的方式去取得圖片的
美中不足的是由於指定tag的方式其實是絕對路徑(比方說指定id="xxx"的tag)
所以只要網頁有變動就得重新指定
這就是一堆免空下載跟看漫畫程式必須一直更新解析器的原因
順便一提,大致上的用法是這樣,有需要可以參考看看
WebClient client = new WebClient(); using (MemoryStream ms = new MemoryStream(client.DownloadData(url))) { HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); doc.Load(ms, Encoding.UTF8); // 取得所有符合條件的nodes HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//ul[@class='yom-list-wide thumbnail']//h4//a"); foreach (HtmlNode node in nodes) { // 中略 } // 取得符合條件的第一個node的內部文字 string title = doc.DocumentNode.SelectSingleNode("//h1[@class='headline']").InnerText; }
文章標籤
全站熱搜
留言列表