我想使用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
这些只是我想要抓住的网站的一些例子。
谢谢!
答案 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所说的那样,没有一种可靠的方法可以继续发挥作用。