0

我正在阅读 python/BS4 中的一些产品页面,并在一行代码中找到了一个有趣的品种,即商品的价格。

有时 HTML 是:

<span class="currency">$<span id="product_price">0.00</span></span>

其他时候会是:

<span class="currency">$17.95</span></b>

使用price = soup.find('span', {'class' : 'currency'})

我可以隔离跨度,但是当我尝试仅获取文本时,使用

priceStr = price.findAll(text=re.compile(r''))

然后将其写入输出文件

divpage.write('Price = ' + str(priceStr) + '\n')

我得到(对于第一个例子):

Price = [u'$', u'0.00']

我的问题是,有没有办法只读取价格,没有'$',以及如何将编码从“u'0.00'”转换为“0.00”?

我知道我可以使用 Python 的查找和替换功能来做到这一点,但我想尽可能地坚持 BSS4,而不必为一种或另一种形式编写 w check ...

4

2 回答 2

4

我会使用 get_text() 而不是 find_all()

price_str = price.get_text() # $17.95

然后你可以使用 lstrip 摆脱美元符号

price_str = price_str.lstrip('$') # 17.95

你完成了!

于 2012-04-21T04:02:05.680 回答
0

在此处使用 Regex 也可以提供帮助,保留您需要的字符并删除其他所有内容。

if price_str is not None :
    price =  re.sub("[^0123456789.]","",price_str.get_text())
于 2015-04-18T06:50:26.187 回答