使用 Python 检索类似 Facebook 的链接摘要(标题、摘要、相关图像)

Posted

技术标签:

【中文标题】使用 Python 检索类似 Facebook 的链接摘要(标题、摘要、相关图像)【英文标题】:Retrieving Facebook-like link summaries (title, summary, relevant images) using Python 【发布时间】:2011-03-18 22:46:20 【问题描述】:

我想复制 Facebook 用来解析链接的功能。当您提交指向您的 Facebook 状态的链接时,他们的系统会退出并从该页面检索建议的 titlesummary 以及一个或多个相关的 images,您可以从中选择缩略图。

我的应用程序需要使用 Python 完成此任务,但我愿意接受与此相关的任何类型的指南、博客文章或其他开发人员的经验,并且可能会帮助我弄清楚如何完成它。

在加入之前,我真的很想学习其他人的经验。

明确地说,当给定网页的 URL 时,我希望能够检索:

    标题:可能只是<title> 标签,但也可能是<h1>,不确定。 页面的单段摘要。 一组可用作缩略图的相关图像。 (棘手的部分是过滤掉不相关的图像,如横幅或圆角)

我可能必须自己实现它,但我至少想知道其他人是如何完成这些任务的。

【问题讨论】:

【参考方案1】:

BeautifulSoup 非常适合完成大部分工作。

基本上,您只需初始化soup 对象,然后执行以下操作来提取您感兴趣的内容:

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

然后,您可以使用urllib2,根据url 下载每个图像。

标题相当简单,但图片可能有点困难,因为您必须下载每张图片才能获得相关统计信息。也许您可以根据大小和颜色数量过滤掉大部分图像?例如,圆角会很小,通常只有 1-2 种颜色。

至于页面摘要,这可能有点困难,但我一直在做这样的事情:

    我使用BeautifulSoup 删除html 中的所有样式、脚本、表单和head 块,方法是:.findAll,然后是.extract。 我使用:.join(soup.findAll(text = True)) 抓取剩余的文本

在您的应用程序中,也许您可​​以使用此"text" 内容作为页面摘要?

我希望这会有所帮助。

【讨论】:

BeautifulSoup 在 Python 3.1 上没有得到很好的支持,它的原作者也没有做太多的开发了。您可能最好使用 lxml.html 和/或 html5lib(BeautifulSoup 作者推荐后者)。 很高兴知道以供将来参考。谢谢!【参考方案2】:

这里有一个完整的解决方案:https://github.com/svven/summary

>>> import summary
>>> s = summary.Summary('http://***.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
>>>

【讨论】:

很遗憾,这个项目不支持 Python 3。

以上是关于使用 Python 检索类似 Facebook 的链接摘要(标题、摘要、相关图像)的主要内容,如果未能解决你的问题,请参考以下文章

在 python-social-auth 中从 google 和 facebook 检索个人资料图片

检索 iPhone/iPad 商店 ID 时出现问题 - Facebook 开发者

Python Facebook API - 光标分页

当检索到的电子邮件与现有用户的电子邮件匹配时,django allauth facebook 重定向到注册?

通过 Facebook iOS SDK 检索 Facebook 好友列表

Facebook - 使用href从fb:comments中检索评论数?