python - Flask 没有显示我的全部列表
问题描述
我正在创建一个 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/ 时,我只会显示“国会和总统”,这是列表中最后可能出现的内容。我对烧瓶仍然很缺乏经验,所以我不知道从哪里开始。
解决方案
coursename
仅保留 list 中的最后一个值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 %]
推荐阅读
- reactjs - 用玩笑反应应用程序测试 - 获取组件并应用 toHaveStyleRule
- tensorflow - 如何以张量的形式访问 pytorch 嵌入查找表
- python - 获取连续出现 n 次的值
- angular - Angular Material mat-table 在单列上应用多个复选框过滤器,然后进一步搜索
- c++ - 在二叉树中查找元素
- python - 情节:在悬停标签中显示值,而不是在堆积面积图中显示百分比`groupnorm ='percent'`
- php - 如何在 cURL 中使用 shadowsocks 代理?
- javascript - 收到此错误类型错误:无法读取未定义的属性“SearchUserIp”
- python - Tkinter - 无法从另一种方法设置的全局变量中获取值
- ios - 有多个项目的粘贴板