使用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
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow