7

我想复制 Facebook 用来解析链接的功能。当您将链接提交到您的 Facebook 状态时,他们的系统会退出并从该页面检索一个建议title的,summary通常是一个或多个相关image的 s,您可以从中选择一个缩略图。

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

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

需要明确的是,当给定网页的 URL 时,我希望能够检索:

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

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

4

2 回答 2

2

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

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

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

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

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

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

  1. 我使用BeautifulSoup从 中删除所有样式、脚本、表单和头块,html方法是使用: .findAll, then .extract
  2. 我使用以下方法获取剩余的文本:.join(soup.findAll(text = True))

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

我希望这有帮助。

于 2010-07-21T11:57:22.403 回答
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
>>>
于 2014-06-10T15:03:46.090 回答