我正在创建一个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 /时,我只会显示“国会和总统职位”,这是列表中最后一件可能的事情。我对烧瓶不熟悉,所以我不知道从这里去哪里。
答案 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>