2012-04-12 17 views
0

打印指定網址的各個環節上的html文件,我有這樣的代碼在我的views.py:如何使用Django

from django.http import HttpResponse, Http404 
from django.shortcuts import render_to_response 

from bs4 import BeautifulSoup 
import urllib 

def extract_links(request): 
    starting_link = urllib.urlopen("http://www.finalyearondesk.com") 
    soup = BeautifulSoup(starting_link) 
    all_links = soup.findAll('a', href = True)   
    return render_to_response('extracted_links.html',{'all_links': all_links }) 

在此,我usign BeautifulSoup。 ,我在模板文件編寫這些代碼:extracted_links.html:

{% for final_links in all_links %} 
    {{ final_links['href'] }} # {{ final_links.href }} did not print anything 
{% endfor %} 

但問題是,它顯示了一個錯誤:

Could not parse the remainder: '['href']' from 'final_links['href']' 

任何建議如何解決此問題?如果我用這個函數在一個簡單的Python文件,它只是工作正常,但不是在Django的模板

回答

1

嘗試:

{% for final_links in all_links %} 
    {{ final_links.attrMap.href }} 
{% endfor %} 

我初來乍到從以下會議:

>>> import urllib 
>>> from BeautifulSoup import BeautifulSoup as BS 
>>> start = urllib.urlopen('http://blog.tkbe.org') 
>>> soup = BS(start) 
>>> all_links = soup.findAll('a', href=True) 
>>> first = all_links[0] 
>>> first 
<a href="http://blog.tkbe.org/" title="TKBE" rel="home">TKBE</a> 
>>> dir(first) 
[..., 'attrMap', 'attrs', ...] 
>>> first.attrs 
[(u'href', u'http://blog.tkbe.org/'), (u'title', u'TKBE'), (u'rel', u'home')] 
>>> first.attrMap 
{u'href': u'http://blog.tkbe.org/', u'rel': u'home', u'title': u'TKBE'} 

如果您的BeautifulSoup版本具有其他屬性,您可以同樣找到它們。

您可能必須在視圖中提取它們雖然,而不是在模板,例如:

all_links = [link.attrMap['href'] for link in all_links] 

您return語句之前(或任何屬性,你需要在你的BeautifulSoup的版本訪問)。

+0

仍然沒有在html頁面上打印任何內容.. :( – 2012-04-12 16:12:05

+0

在views.py文件中提取工作... :) – 2012-04-12 17:24:26

1

如果all_linksdict個列表中的每個具有關鍵href然後執行以下操作來訪問Django模板的href值:

{% for final_links in all_links %} 
    {{ final_links.href }} 
{% endfor %} 
+0

我已經這樣做了,我們已經不知道我們不能在{{中放] [],但是它沒有在html文件上打印任何內容 – 2012-04-12 15:53:18

+0

@AmitYadav列表中的單個項目的內容是什麼?all_links? – 2012-04-12 15:55:42

+0

這是一個列表,由美麗的湯的find_all()方法提取 – 2012-04-12 16:05:44