【问题标题】:Using BeautifulSoup to populate a Django model使用 BeautifulSoup 填充 Django 模型
【发布时间】:2012-12-23 02:40:11
【问题描述】:

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

我在此页面上尝试了第二个答案:How can I retrieve the page title of a webpage using 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 在预览中的作用。

【问题讨论】:

  • 随意发布您当前遇到的代码 - 它有助于为您的情况添加上下文并为人们提供一个起点(欢迎使用 SO :))。
  • 很少出现“代码过多”的问题。

标签: python django django-models beautifulsoup


【解决方案1】:

编辑:误解了问题...

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

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

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

【讨论】:

  • 感谢您的欢迎和回复。我已经用一些代码更新了原版...
  • 谢谢@tobypanzer。你问的问题也有帮助:)
猜你喜欢
  • 2020-11-16
  • 2018-12-22
  • 1970-01-01
  • 2016-02-05
  • 1970-01-01
  • 1970-01-01
  • 2011-06-01
  • 1970-01-01
  • 2010-10-30
相关资源
最近更新 更多