2010-07-21 26 views
7

我想複製Facebook用來解析鏈接的功能。當您將鏈接提交到您的Facebook狀態時,系統會熄滅並從該頁面檢索建議的title,summary以及一個或多個相關的image,您可以從中選擇縮略圖。使用Python檢索類似Facebook的鏈接摘要(標題,摘要,相關圖像)

我的應用程序需要使用Python完成此操作,但我願意接受任何類型的指南,博客文章或其他開發人員的相關經驗,並可能幫助我弄清楚如何實現它。 。

我真的想只是在跳之前,從別人的經驗中學習

需要明確的是,給定一個網頁的URL的時候,我希望能夠檢索:

  1. 標題:可能只是<title>標記,但可能是<h1>,不確定。
  2. 該頁面的一段摘要。
  3. 一堆可用作縮略圖的相關圖像。 (棘手的部分是過濾掉像橫幅或圓角等不相關的圖像)

我可能必須自己實現它,但我至少想知道其他人是如何執行這些類型的任務的。

回答

2

BeautifulSoup非常適合完成其中的大部分工作。

基本上,你只需初始化soup對象,然後像做以下提取你所感興趣的東西:

title = soup.findAll('title') 
images = soup.findAll('img') 

然後,您可以根據使用urllib2他們url下載每個圖像。

標題相當簡單,但圖像可能會有點困難,因爲你必須下載每一個獲得相關的統計信息。也許你可以根據顏色的大小和數量濾除大部分圖像?作爲一個例子,圓角小,通常只有1-2種顏色。

對於頁的摘要,這可能是一個有點困難,但我一直在做這樣的事情:

  1. 我用BeautifulSoup從刪除所有樣式,腳本的形式,頭塊html通過使用:.findAll,然後.extract
  2. 我搶用剩餘的文本:.join(soup.findAll(text = True))

在應用程序中,也許你可以使用這個"text"內容的頁面總結?

我希望這會有所幫助。

+3

BeautifulSoup不能很好地支持關於Python 3.1,它的原作者沒有做太大的發展了。您最好使用lxml.html和/或html5lib(後者由BeautifulSoup作者推薦)。 – lunaryorn 2010-07-21 12:09:45

+0

有用,以備將來參考。謝謝! – 2010-07-21 12:25:42

1

下面是一個完整的解決方案:https://github.com/svven/summary

>>> import summary 
>>> s = summary.Summary('http://stackoverflow.com/users/76701/ram-rachum') 
>>> s.extract() 
>>> s.title 
u'User Ram Rachum - Stack Overflow' 
>>> s.description 
u'Israeli Python hacker.' 
>>> s.image 
https://www.gravatar.com/avatar/d24c45635a5171615a7cdb936f36daad?s=128&d=identic 
on&r=PG 
>>> 
+0

不幸的是,該項目不支持Python 3. – illagrenan 2016-09-14 13:28:46

+0

@illagrenan PRs歡迎 – ducu 2016-09-14 15:03:03