使用Beautiful Soup从网站上搜索数据并在jinja2中显示

时间:2012-12-18 06:46:51

标签: python google-app-engine beautifulsoup jinja2

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

1 个答案:

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

参考文献: