0

我正在建立一个允许用户提交链接的网站。我想使用 BeautifulSoup(或其他东西,如果它更适合该任务)从提交的 URL 中提取标题标签,并将其显示在列出用户提交的链接的页面上。

我在此页面上尝试了第二个答案:如何使用 Python 检索网页的页面标题?

它在 shell 中工作,但我不确定在哪里/如何使用 soup.title.string 来填充模型。

如果您需要我迄今为止尝试过的代码示例,请询问。我没有发布它,因为我尝试过一些不同的事情。

查看代码:

    def page_save(request):
  if request.method == 'POST':
    form = PageSaveForm(request.POST)
    if form.is_valid():
      # Create or get link.
      link, dummy = Link.objects.get_or_create(
        url=form.cleaned_data['url']
      )
      # Create or get bookmark.
      page, created = Page.objects.get_or_create(
        user=request.user,
        link=link
        soup=BeautifulSoup.BeautifulSoup(urllib.urlopen(link))
        title=soup.title.string

显然,间距是关闭的。

如果用户可以只保存链接,然后我让模板从每个链接中提取标题并将其显示给最终用户,我会很高兴。

甚至当我粘贴 URL 时,SO 在预览中所做的事情。

4

1 回答 1

1

编辑:误解了这个问题......

看看你的模型会很有帮助。创建页面的代码看起来很可疑。汤是您模型中的一个字段吗?也许这就是你想要做的?

page, created = Page.objects.get_or_create(
    user=request.user,
    link=link,
    title=BeautifulSoup.BeautifulSoup(urllib.urlopen(link)).title.string
  )

给你一些更大的问题。当您的用户提交恶意或无效链接时会发生什么?当 url 超时时会发生什么?在此视图之外,是否还有其他时候您可能希望从页面实例中获取链接并创建标题?

于 2013-01-09T23:12:42.827 回答