我需要提取外部网站的元描述。我已经搜索过了,也许简单的答案已经在那里了,但我无法将它应用到我的代码中。

目前我可以通过以下方式获得它的标题:

external_sites_html = urllib.request.urlopen(url)
soup = BeautifulSoup(external_sites_html)
title = soup.title.string

但是,描述有点棘手。它可以采用以下形式:
<meta name="og:description" content="blabla"
<meta property="og:description" content="blabla"
<meta name="description" content="blabla"

所以我想要的是提取出现在 html 中的第一个。然后它将被添加到数据库中:
entry.description = extracted_desc
entry.save

如果它根本没有找到任何描述,那么它只会继续保存标题。

最佳答案

您可以在汤对象上使用 find 方法并找到具有特定属性的标签。这里我们需要找到 meta 标签,其中 name 属性等于 og:descriptiondescriptionproperty 属性等于 description

# First get the meta description tag
description = soup.find('meta', attrs={'name':'og:description'}) or soup.find('meta', attrs={'property':'description'}) or soup.find('meta', attrs={'name':'description'})

# If description meta tag was found, then get the content attribute and save it to db entry
if description:
    entry.description = description.get('content')

关于python - 从外部网站获取元描述,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22318095/

10-16 22:43