0

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

我有一个 HTML 页面,它由一些主要的 div 组成,每个 div 都包含相似的 HTML。我想遍历主 div,然后解析每个 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 函数对输入不起作用。测试类型,type(product_page) = < class 'bs4.element.Tag'> 和 type(self.souped_text) = < class 'bs4.BeautifulSoup' >

使用 OSX、Python 2.7、BS4

4

1 回答 1

0

我是双汤。本来应该self.souped_text = product_page

于 2013-05-06T23:56:27.177 回答