使用div的内容作为更多Beautifulsoup输入

时间:2013-05-06 22:46:06

标签: python beautifulsoup

这一定是一个简单的答案,因为这是BS4的目的,但我很难过。

我有一个HTML页面,其中包含一些主要的div,每个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.contents [0]不像我想的那样Soupy,因为我一直得到一个“NoneType”对象有没有属性'string'或者其他什么,好像Soup函数不在输入上。测试类型,类型(product_page)=&lt; class'bs4.element.Tag'&gt;和type(self.souped_text)=&lt; class'bs4.BeautifulSoup'&gt;

使用OSX,Python 2.7,BS4

1 个答案:

答案 0 :(得分:0)

我是双重的。应该是self.souped_text = product_page