0

ユーザーがリンクを送信できるサイトを構築しています。BeautifulSoup (または、タスクに適している場合は他の何か) を使用して、送信された URL からタイトル タグを取得し、ユーザーが送信したリンクを一覧表示するページに表示したいと考えています。

このページで 2 番目の回答を試しました: Python を使用して Web ページのページ タイトルを取得するにはどうすればよいですか?

シェルで動作しますが、モデルにデータを入力できるように、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 に答える