2013-01-09 139 views
0

我正在構建一個允許用戶提交鏈接的站點。我想使用BeautifulSoup(或者其他的東西,如果它對任務更好),從提交的URL中提取標題標籤並將其顯示在列出用戶提交的鏈接的頁面上。使用BeautifulSoup來填充Django模型

我嘗試這個頁面上的第二個答案: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時,它在預覽中會做什麼。

+1

隨意發佈您目前所使用的代碼 - 它有助於爲您的情況添加上下文,併爲人們提供一個起點(並歡迎您加入:))。 – RocketDonkey

+0

「太多代碼」是一個問題是非常罕見的。 – cwallenpoole

回答

1

編輯:誤解了這個問題...

這將是有益的,看看你的模型。創建頁面的代碼看起來很可疑。在你的模型中湯是一個領域?也許這就是你想要做的?

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

給你一些更大的問題。當用戶提交惡意或無效的鏈接時會發生什麼?當URL超時時會發生什麼?有沒有其他時間超出這種觀點,你可能想從你的頁面實例中獲取鏈接並創建一個標題?

+0

感謝您的歡迎和回覆。我用一些代碼更新了原件... – brandonjschwartz

+0

謝謝@tobypanzer。你問的問題也幫助:) – brandonjschwartz