簡體   English   中英

如何在美麗的湯 python 中使用 div 類值從 span 中獲取文本和值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM