使用HTML Agility Pack提取動態內容

c# html-agility-pack

假設我有一個包含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源嗎? (不僅在技術上,而且在法律上。查看網站的服務條款部分。)

如果你必須解析他們的網站,我建議為每個實現該接口的網站創建一個接口和一個單獨的類。調整每個類以匹配相應站點的結構。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因