如何在 < !--- > 之后获取 span items in soup
how to get span items after < !--- > in soup
您好,我想在商品售出后拿到商品 377
,商品后面是 < !-- -- >
。我该怎么做?我得到了 2 个带有以下代码的项目。我添加了 space 以便它可见。
sold = soup.find_all('span', {"class":"jsx-302 jsx-385"})
结果:
<span class=""jsx-302 jsx-385""><span class=""jsx-302 jsx-385 sold-text"">Sold</span> < !-- -- >377</span>,
<span class=""jsx-302 jsx-385"">Rp41,400 / 100 g</span>
我可以做一个正则表达式只得到第一个 items[0].text
包含 sold 并忽略其余的。但是,有没有办法处理括号中 < !-- -- >
的跨度?
同意使用 split()
但 HTML
看起来不太有效,因此 < !-- -- >
或 <!-- -->
的行为不明确。
在< !-- -- >
的情况下:
soup.select_one('span:has(.sold-text)').text.split('>')[-1]
在<!-- -->
的情况下:
soup.select_one('span:has(.sold-text)').text.split(' ')[-1]
我会推荐 filter
数字:
''.join(filter(str.isdigit, soup.select_one('span:has(.sold-text)').text))
例子
from bs4 import BeautifulSoup,Comment
html = '''
<span class="jsx-302 jsx-38""><span class="jsx-302 jsx-385 sold-text">Sold</span> < !-- -- >377</span>
<span class="jsx-302 jsx-385">Rp41,400 / 100 g</span>
'''
soup=BeautifulSoup(html,'html.parser')
sold = ''.join(filter(str.isdigit, soup.select_one('span:has(.sold-text)').text))
print(sold)
输出
377
您好,我想在商品售出后拿到商品 377
,商品后面是 < !-- -- >
。我该怎么做?我得到了 2 个带有以下代码的项目。我添加了 space 以便它可见。
sold = soup.find_all('span', {"class":"jsx-302 jsx-385"})
结果:
<span class=""jsx-302 jsx-385""><span class=""jsx-302 jsx-385 sold-text"">Sold</span> < !-- -- >377</span>,
<span class=""jsx-302 jsx-385"">Rp41,400 / 100 g</span>
我可以做一个正则表达式只得到第一个 items[0].text
包含 sold 并忽略其余的。但是,有没有办法处理括号中 < !-- -- >
的跨度?
同意使用 split()
但 HTML
看起来不太有效,因此 < !-- -- >
或 <!-- -->
的行为不明确。
在< !-- -- >
的情况下:
soup.select_one('span:has(.sold-text)').text.split('>')[-1]
在<!-- -->
的情况下:
soup.select_one('span:has(.sold-text)').text.split(' ')[-1]
我会推荐 filter
数字:
''.join(filter(str.isdigit, soup.select_one('span:has(.sold-text)').text))
例子
from bs4 import BeautifulSoup,Comment
html = '''
<span class="jsx-302 jsx-38""><span class="jsx-302 jsx-385 sold-text">Sold</span> < !-- -- >377</span>
<span class="jsx-302 jsx-385">Rp41,400 / 100 g</span>
'''
soup=BeautifulSoup(html,'html.parser')
sold = ''.join(filter(str.isdigit, soup.select_one('span:has(.sold-text)').text))
print(sold)
输出
377