确定主要文章图像 - HTML Agility Pack

时间:2013-05-13 13:15:59

标签: c# algorithm dom html-parsing html-agility-pack

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

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

以下2个印刷品来自这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

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

content to rip

content to rip

谢谢!

2 个答案:

答案 0 :(得分:2)

事实上,没有明确的假设来以通用的方式实现你想要的东西。

首先,您必须记住网站是不同的,并且可以随时更改,因此在大多数情况下,尝试获取不可验证的算法都是浪费时间。

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

24matins :有一个名为“post-header”的div,其中第一个<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中查看。

希望它有所帮助。

答案 1 :(得分:0)

您可以扫描社交网站元标记的给定网址的HTML内容。例如对于Facebook,它将是:

<meta property="og:image" content="_here_is_URL_of_main_article_image_" />

但是像natenho所说的那样,没有一种可靠的方法可以继续发挥作用。