Skip to content Skip to sidebar Skip to footer

How To Print All The Links Of A Given Url On A Html File Using Django

I have this code in my views.py: from django.http import HttpResponse, Http404 from django.shortcuts import render_to_response from bs4 import BeautifulSoup import urllib def ex

Solution 1:

Try:

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

I arrived at that from the following session:

>>> 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'}

If your version of BeautifulSoup has other attributes you can find them similarly.

You might have to extract them in the view though, and not in the template, e.g.:

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

before your return statement (or whichever attribute you need to access in your version of BeautifulSoup).


Solution 2:

If all_links is a list of dicts each having key href then do the following to access the value of href in the Django template:

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

Post a Comment for "How To Print All The Links Of A Given Url On A Html File Using Django"