我正在尝试使用Beautiful Soup从网站上提取数据列表:
class burger(webapp2.RequestHandler):
Husam = urlopen('http://www.qaym.com/city/77/category/3/%D8%A7%D9%84%D8%AE%D8%A8%D8%B1/%D8%A8%D8%B1%D8%AC%D8%B1/').read()
def get(self, soup = BeautifulSoup(Husam)):
tago = soup.find_all("a", class_ = "bigger floatholder")
for tag in tago:
me2 = tag.get_text("\n")
template_values = {
'me2': me2
}
for template in template_values:
template = jinja_environment.get_template('index.html')
self.response.out.write(template.render(template_values))
现在,当我尝试使用jinja2在模板中显示数据时,它会根据列表的数量重复整个模板,并将每个信息放在一个模板中。
我如何将整个列表放在一个标签中,并且能够在不重复的情况下编辑其他标签?
<li>{{ me2}}</li>
答案 0 :(得分:2)
要输出条目列表,您可以在jinja2模板中循环它们,如下所示:
{%for entry in me2%}
<li> {{entry}} </li>
{% endfor %}
要使用它,您的python代码还必须将标记放入列表中。
这样的事情应该有效:
def get(self, soup=BeautifulSoup(Husam)):
tago = soup.find_all("a", class_="bigger floatholder")
# Create a list to store your entries
values = []
for tag in tago:
me2 = tag.get_text("\n")
# Append each tag to the list
values.append(me2)
template = jinja_environment.get_template('index.html')
# Put the list of values into a dict entry for jinja2 to use
template_values = {'me2': values}
# Render the template with the dict that contains the list
self.response.out.write(template.render(template_values))
参考文献: