2013-05-06 101 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