假設我有一個包含10個新聞源的列表,我想將其導入到我的本地數據庫中。我需要打開每個外部新聞頁面,提取主要內容並保存。所有這些頁面中的html結構都不同。一些使用div,而另一些使用文章標籤。
我知道我可以使用HttpWebRequest對像打開頁面,並使用HtmlAgilityPack加載[HTML]文檔。
HttpWebRequest oReq = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse resp = (HttpWebResponse)oReq.GetResponse();
var doc = new HtmlAgilityPack.HtmlDocument();
doc.Load(resp.GetResponseStream());
但是,我不知道如何在不知道類型的情況下定位主元素。
我甚至想做什麼?
HTML Agility Pack非常有用,但使用它的代碼通常必鬚根據站點結構進行自定義。
您可以嘗試通用和自適應,但即使像Evernote這樣的“大男孩”也必須為不同的網站佈局提供不同的剪輯選項。
我要看的第一件事:如果是新聞,你應該使用他們的RSS源嗎? (不僅在技術上,而且在法律上。查看網站的服務條款部分。)
如果你必須解析他們的網站,我建議為每個實現該接口的網站創建一個接口和一個單獨的類。調整每個類以匹配相應站點的結構。