烧瓶未显示我的完整列表

时间:2019-04-23 03:37:59

标签: python html flask beautifulsoup python-requests

我正在创建一个Web应用程序,该应用程序从我的学校网站上抓取课程代码,名称和学分。当我“返回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 %}

每当我浏览我的网站并转到特定的页面/ digit /时,我只会显示“国会和总统职位”,这是列表中最后一件可能的事情。我对烧瓶不熟悉,所以我不知道从这里去哪里。

1 个答案:

答案 0 :(得分:0)

reload仅保留列表coursename中的最后一个值。

soup.find_all("td")[12:162]:仅显示一个元素-但您可以循环运行它,以便将所有元素显示在屏幕上。


您必须将print(coursename)发送到模板

course_list

然后您可以显示它

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

或者您可以使用循环对其进行格式化

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