YahooNewsParser_1

這是半個月前幫學弟寫的程式(順便學習一下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)
所以只要網頁有變動就得重新指定
這就是一堆免空下載跟看漫畫程式必須一直更新解析器的原因

下載(點選Download)
詳細說明

 

順便一提,大致上的用法是這樣,有需要可以參考看看

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;
}
arrow
arrow
    文章標籤
    VB.NET 自製程式 yahoonews
    全站熱搜
    創作者介紹
    創作者 蕭雲 的頭像
    蕭雲

    正因為活著

    蕭雲 發表在 痞客邦 留言(4) 人氣()