美丽的汤:只解析一个元素

时间:2015-10-05 15:10:37

标签: python html parsing beautifulsoup html-parsing

我一直跑到墙上,但感觉我就在附近。

正在收获HTML块:

div class="details">
   <div class="price">
   <h3>From</h3>
   <strike data-round="true" data-currency="USD" data-price="148.00" title="US$148 ">€136</strike>
   <span data-round="true" data-currency="USD" data-price="136.00" title="US$136 ">€125</span>
</div>

我想单独解析“US $ 136”值(跨度数据)。这是我到目前为止的逻辑,它捕获“跨度数据”和“打击数据:

price = item.find_all("div", {"class": "price"})
        price_final = (price[0].text.strip()[8:])
        print(price_final)

感谢任何反馈:)

1 个答案:

答案 0 :(得分:1)

在您的情况下,

price是一个ResultSet - div类的price标记列表。现在,您需要在每个结果中找到span标记(假设您要匹配多个价格):

prices = item.find_all("div", {"class": "price"})
for price in prices:
    price_final = price.span.text.strip()
    print(price_final)

如果您只需要找到一次价格:

soup.find("div", {"class": "price"}).span.get_text()

CSS selector

soup.select_one("div.details div.price span").get_text()

请注意,如果您要使用select_one(),请安装最新的beautifulsoup4包:

pip install --upgrade beautifulsoup4