c# – 确定主要文章图像 – HTML Agility Pack

我想使用
HTML Agility Pack来确定主文章正文,然后从中提取主文章图像.

我注意到大多数站点网站管理员都有他们的主要内容容器包含H1标签,但这不是每次的规则,所以我不能将我的假设作为基础.

下面的2个印刷品来自这两个地点.

http://www.24matins.fr/the-walking-dead-saison-4-le-deces-de-ce-personnage-ne-sera-pas-anodin-40685

http://www.lasemainedansleboulonnais.fr/actualite/la_une/2013/04/04/article__20_ans_prison_meurtre_de_sa_mere_boulogne.shtml

这些只是我想要抓住的网站的一些例子.

谢谢!

最佳答案 实际上,没有明确的假设来以通用的方式实现您想要的.

首先,你必须记住,网站是不同的,并且可以随时改变,所以任何尝试获得不可缺少的算法在大多数情况下是浪费时间.

在这种情况下,如果您只需要解析几个网站,那么您可以只计算每个网站的当前内容处理模式并使用HTML Agility Pack进行解析,例如:

24matins:有一个div有一个名为“post-header”的类,第一个< img>是主要的文章图像,然后用HAP你可以写:

var web = new HtmlWeb();
var doc = web.Load("http://www.24matins.fr/the-walking-dead-saison-4-le-deces-de-ce-personnage-ne-sera-pas-anodin-40685");
var img = doc.DocumentNode.SelectSingleNode("//div[@class='post-header']/img");
Console.WriteLine(img.Attributes["src"].Value);

lasemaine ..:有一个独特的div,其类名为“插图”,所以:

web = new HtmlWeb();
doc = web.Load("http://www.lasemainedansleboulonnais.fr/actualite/la_une/2013/04/04/article__20_ans_prison_meurtre_de_sa_mere_boulogne.shtml");
img = doc.DocumentNode.SelectSingleNode("//div[@class='illustrations']/img");
Console.WriteLine(img.Attributes["src"].Value);

另外,我建议您使用网站的RSS Feed来获取相关信息.一般来说,它们包括文章的图片,并且更有可能具有可识别的模式,因为您可以在www.24matins.fr/feed/rss-toutes-actualites中查看.

希望能帮助到你.

点赞