4

我想使用 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

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

要翻录的内容

要翻录的内容

谢谢!

4

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

希望能帮助到你。

于 2013-05-29T18:39:36.937 回答
0

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

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

但就像 natenho 说的那样,没有一种可靠的方法可以永远有效。

于 2017-03-14T10:12:34.500 回答