Колба не показывает весь мой список - PullRequest
0 голосов
/ 23 апреля 2019

Я создаю веб-приложение, которое удаляет коды курсов, названия и кредиты с сайта моей школы.Когда я "возвращаю render_template (...)", я получаю только последнее название курса.Но когда я сам запускаю цикл for и приказываю ему напечатать, я получаю все.

Я попытался изменить вывод, чтобы он стал равным чему-то другому, но это просто дает мне список списков, и я хочуданные для отображения в виде строк.

Вот так выглядит сам код.Я выплевываю информацию, которую хочу:

from bs4 import BeautifulSoup 
import csv
import requests 

source = requests.get('https://bulletins.psu.edu/undergraduate/colleges/behrend/digital-media-arts-technology-ba/#programrequirementstext') 

soup = BeautifulSoup(source.text, 'lxml') 
course_list = []

for td in soup.find_all("td")[12:162]:
    courseinfo = td.text
    print(courseinfo)

Вот как мой код выглядит с флягой:

@app.route('/digit/')
def digit():
    try:
        source = requests.get('https://bulletins.psu.edu/undergraduate/colleges/behrend/digital-media-arts-technology-ba/#programrequirementstext') 

        soup = BeautifulSoup(source.text, 'lxml') 
        course_list = []

        for td in soup.find_all("td")[12:162]:
            coursename = td.text
            course_list.append(coursename.split())
            print(coursename)

        coursename = coursename
        return render_template("digit.html", coursename = coursename)
    except Exception as e:
        return render_template("500.html", error = e)

А вот HTML-файл:

{% extends "header.html" %}

{% block body %}

    <p>{{coursename}}</p>

{% endblock %}

Всякий раз, когда я смотрю на свой веб-сайт и захожу на конкретную страницу / цифру /, у меня появляется только «Конгресс и Президентство», что является последней возможной вещью в списке.Я до сих пор не очень разбираюсь в колбе, поэтому не знаю, куда идти.

1 Ответ

0 голосов
/ 23 апреля 2019

coursename сохраняет только последнее значение из списка soup.find_all("td")[12:162]:.

print(coursename) отображать только один элемент - но вы запускаете его в цикле, чтобы получить все элементы на экране.


Вы должны отправить course_list в шаблон

return render_template("digit.html", coursename=course_list)

И затем вы можете отобразить его

<p>{{coursename}}</p>

или использовать цикл для его форматирования

{% for item in coursename %} 
   <p>{{ item }}</p>
{% endfor %]
...