解析BS4中的文本

时间:2012-04-21 03:36:53

标签: python beautifulsoup

我正在阅读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 find&amp; amp;替换功能,但我想尽可能坚持BSS4,而不必写一个表格或其他形式的支票......

2 个答案:

答案 0 :(得分:4)

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

price_str = price.get_text() # $17.95

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

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

你已经完成了!

答案 1 :(得分:0)

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

if price_str is not None :
    price =  re.sub("[^0123456789.]","",price_str.get_text())