确定主要文章图片 - HTML敏捷包

4
我希望使用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

这些只是我想要抓取的网站的一些示例。

content to rip

content to rip

谢谢!


3
如何从 HTML 页面中提取文章文本内容,类似于 Pocket、Read It Later?如何从 HTML 页面中提取文章文本内容,类似于 Pocket、Read It Later?我需要一种方法来提取网页中的主要内容,而不是包含其中的广告或导航栏等元素。 - I4V
2个回答

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,它的类名叫做"illustrations",所以:

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中查看。

希望这可以帮助到您。


0

您可以扫描给定 URL 的 HTML 内容以查找社交网站的元标签。例如,对于 Facebook,它应该是:

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

但像natenho说的那样,没有一种绝对可行的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接