Мне нужно разобрать теги h2 с сайта. Я использую BeautifulSoup
Вот часть Views.py. Я ищу все теги H2
from django.shortcuts import render
from django.http import HttpResponse
from django.template import loader
from django.views.generic.edit import CreateView
from django.urls import reverse_lazy
from urllib.request import urlopen
from bs4 import BeautifulSoup
import requests
def index(request):
if request.method == "POST":
url = request.POST.get('web_link', None)
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'}#headers
source=requests.get(url, headers=headers).text # url source
#bs
soup = BeautifulSoup(source, 'html.parser')
# Title INFO
title_num = soup.find_all('title')
title_num = len(title_num)
title = soup.title.text
title_len = len(title)
# H1 INFO
h1_num = soup.find_all('h1')
h1_num = len(h1_num)
h1 = soup.h1.text
# H2 INFO
h2_all = soup.find_all('h2')
h2_num = len(h2_all)
return render(request, 'tags/django-bs.html', {
'title':title,
'title_len':title_len,
'title_num':title_num,
'h1_num':h1_num,
'h1':h1,
'h2_all':h2_all,
'h2_num':h2_num,
'h21':h21
})
return render(request, 'tags/django-bs.html')
Вот часть шаблона:
<h2>H2 info</h2>
<table class="table">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Test</th>
<th scope="col">Value</th>
<th scope="col">Result</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">1</th>
<td>H2 quantity:</td>
<td>{{ h2_num }}</td>
<td>None</td>
</tr>
<tr>
<th scope="row">3</th>
<td>H2</td>
<td>{{ h2_all }}</td>
<td>None</td>
</tr>
<tr>
<th scope="row">3</th>
<td>H2 tags:</td>
<td>
{% for h2 in h2_all %}
{{ h2 }}
{% endfor %}
</td>
<td>E</td>
</tr>
</tbody>
</table>
В части шаблона. Когда я пытаюсь отобразить h2_all - все работает. Результат: [<h2>Запись к врачу</h2>, <h2>Запись на диагностику</h2>]
Но когда я пытаюсь l oop получить каждый тег h2.
{% for h2 in h2_all %}
{{ h2 }}
{% endfor %}
Результат следующий: [] []
Я новичок, и это мой первый проект на Django. Я уже потратил несколько часов, пытаясь решить проблему, но не дал результата ... Пожалуйста, помогите ...