[英]How to get text from <div> with included <span> with beautiful soup
[英]How to get text and value from span with div class value in beautiful soup python?
我有一個在 [33] 位置返回的元素,下面是我的代碼。
<span>Beli 4 :<div class="d-inline" currency-format="IDR" value="2500"></div>/ pcs</span>
來自https://alfagift.id/p/aice-mochi-ice-cream-klepon-45-ml-772306
我正在嘗試退回 Beli 4:Rp 2.500 / pcs
但是我這樣做有困難。
我目前擁有的代碼返回所有跨度。
item = soup.select('span', {"currency-format":"USD"})
如何獲取 div 類中的跨度文本和值?
您可以通過調用.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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.