2013-05-13 17 views
3

我想使用HTML敏捷包確定主要文章正文,然後從中提取主要文章圖像確定主要文章圖像 - HTML敏捷包

我注意到,大多數網站的網站管理員都有他們的主要內容容器包含標籤,但這並非每次都有規則,所以我不能根據我的假設。

下面的2個printscreens來自這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

http://stackoverflow.com/questions/12239128/how-to-extract-article-text-contents-from-html-page-like-pocket-read-it-later – I4V 2013-05-13 13:28:02

回答

2

事實上,沒有定義的假設來實現你想要的通用方式。

首先,你必須記住,網站是不同的,可以在任何時候改變,所以任何嘗試得到一個不可抵抗的算法是在大多數情況下浪費時間。

在這種情況下,如果你的網站來解析短短數,那麼你可以計算出每一個的當前內容配置模式,並與HTML敏捷性包解析它,例如:

24matins:有一個叫「後首部」類,第一<img>是主要的文章圖像的DIV,然後用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其班級名爲「illust口糧「,所以:

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源來獲取相關信息。一般來說,他們包括文章的圖片,並且更有可能具有可識別的模式,因爲您可以在www.24matins.fr/feed/rss-toutes-actualites中查看。

希望它有幫助。

0

您可以掃描社交網站元標記給定網址的HTML內容。例如,對於Facebook的將是:

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

但像natenho說是沒有一個肯定的方式,將永遠工作。