我有一个在[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