使用HTML Agility Pack提取动态内容

时间:2017-01-19 20:28:17

标签: 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());

但是,我不知道如何在不知道类型的情况下定位主要元素。

我正在尝试做什么?

1 个答案:

答案 0 :(得分:1)

HTML Agility Pack非常有用,但使用它的代码通常必须根据网站结构进行自定义。

你可以尝试通用和自适应,但即使像Evernote这样的“大男孩”也必须为不同的网站布局提供不同的剪辑选项。

我要看的第一件事:如果是新闻,你应该使用他们的RSS源吗? (不仅在技术上,而且在法律上。查看网站的服务条款部分。)

如果你必须解析他们的网站,我建议为每个实现该接口的网站创建一个接口和一个单独的类。调整每个类以匹配相应站点的结构。