如何获得文本和值从跨度与div类值在美丽的汤python?



我有一个在[33]位置返回的元素。

<span>Beli 4 :<div class="d-inline" currency-format="IDR" value="2500"></div>/ pcs</span>

从https://alfagift.id/p/aice -麻吉-冰淇淋klepon - 45 - ml - 772306

我正试图返回Beli 4: Rp 2.500/pcs

但是我很难做到。

我现在的代码返回所有的span。

item = soup.select('span', {"currency-format":"USD"}) 

如何在div类中获得span文本和值?

您可以通过调用.text来获取文本,但您应该注意,您使用的是select_one()而不是select,因为它不能在ResultSet和:

item = soup.select_one('span').text

还有另一个问题,您似乎在寻找具有USD的元素,但只有IDS值,因此更精确的选择将是:

item = soup.select_one('span:has([currency-format="IDR"])').text

以防万一,如果你必须处理多个元素/ResultSet,你必须迭代它:

from bs4 import BeautifulSoup
html = '''
<span>Beli 4 :<div class="d-inline" currency-format="IDR" value="2500">Rp 2.500</div>/ pcs</span>
<span>Beli 5 :<div class="d-inline" currency-format="IDR" value="2500">Rp 2.500</div>/ pcs</span>
<span>Beli 6 :<div class="d-inline" currency-format="IDR" value="2500">Rp 2.500</div>/ pcs</span>
'''
soup = BeautifulSoup(html)
for e in soup.select('span:has([currency-format="IDR"])'):
print(e.text)

输出:

Beli 4 :Rp 2.500/ pcs
Beli 5 :Rp 2.500/ pcs
Beli 6 :Rp 2.500/ pcs

试试这个:

response = BeautifulSoup(driver.page_source, 'html.parser')
response.select_one("span[currency-format*=IDR]").text

最新更新