如何从具有 div class 值的跨度中获取文本和值在美丽的汤 python 中?
How to get text and value from span with div class value in beautiful soup python?
我有一个元素 return 位于 [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
我正在尝试 return Beli 4 : Rp 2.500 / pcs
但是我很难做到。
我目前的代码 return 全部跨度。
item = soup.select('span', {"currency-format":"USD"})
如何获取 div class 中的跨度文本和值?
您可以通过调用 .text
获取文本,但您应该知道,您使用的是 select_one()
而不是 select
,因为无法在 [=17] 上调用它=] 和:
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
我有一个元素 return 位于 [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
我正在尝试 return Beli 4 : Rp 2.500 / pcs
但是我很难做到。
我目前的代码 return 全部跨度。
item = soup.select('span', {"currency-format":"USD"})
如何获取 div class 中的跨度文本和值?
您可以通过调用 .text
获取文本,但您应该知道,您使用的是 select_one()
而不是 select
,因为无法在 [=17] 上调用它=] 和:
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