1

我正在尝试使用 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>
4

1 回答 1

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))

参考:

于 2013-02-09T05:23:18.920 回答