2010-07-21 24 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