2013-05-06 55 views
0

这必须是一个简单的答案,因为它是BS4的目的,但我很难过。使用div的内容作为更美味汤的输入

我有一个HTML页面,包含一些主要div,每个包含类似的HTML。我想循环遍历主div,然后解析每个内容。我有解析器都没有循环没有好转(也就是说,如果它是只有一个主div的页面,我很好)。如果可能的话,我宁愿不深入研究改变所有代码。

因此,它看起来是这样的:

<div class = main1> 
    <div class = price>$50</div> 
    <div class = title>Blah</div> 
</div> 
<div class = main2> 
    <div class = price>$150</div> 
    <div class = title>Blah blah</div> 
</div> 
<div class = main3> 
    <div class = price>$500</div> 
    <div class = title>Blah blah blah</div> 
</div> 

我的代码片段:

multi_products = self.souped_text.find_all("div", class=re.compile("main")) 
      if len(multi_products) > 1: 
       products = [] 
       for product_page in multi_products: 
        self.souped_text = BeautifulSoup(product_page.contents[0]) 
        products.append(self.parse()) 

我想这应该工作,但后来似乎没有经过解析 - 我的想法是,product_page。内容[0]不是我想要的Soupy,因为我始终得到一个“NoneType”对象没有属性“字符串”或任何其他内容,就好像汤功能不在输入上工作。 (product_page)= < class'bs4.element.Tag'>和type(self.souped_text)= <类的bs4.BeautifulSoup'>

使用OSX,Python 2.7版,BS4

回答

0

我是双souping。应该是self.souped_text = product_page