我想使用 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
这些只是我想要抓取的网站的一些示例。


谢谢!
我想使用 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
这些只是我想要抓取的网站的一些示例。


谢谢!
事实上,没有明确的假设可以以通用的方式实现您想要的。
首先,您必须记住,网站是不同的,并且随时可能发生变化,因此在大多数情况下,任何试图获得完美算法的尝试都是浪费时间。
在这种情况下,如果您只有几个网站要解析,那么您可以找出每个网站当前的内容配置模式,并使用 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中查看。
希望能帮助到你。
您可以扫描给定 URL 的 HTML 内容以查找社交网站的元标记。例如对于 Facebook,它将是:
<meta property="og:image" content="_here_is_URL_of_main_article_image_" />
但就像 natenho 说的那样,没有一种可靠的方法可以永远有效。