如何找到所有匹配的Python中使用BeautifulSoup两个值的标签

问题描述 投票:1回答:2

我试图让在span class="last value"部分所有的值,但是,有时部分有轻微的变化,span class="last value empty",和我的代码跳过的变化,我想获得所有以"last value"span class="last value"开始部分,或替代所有要么"last value""last value empty"区段

这是我坚持的观点:

    r = requests.get(baseurl)
    soup = BeautifulSoup(r.content)
    elem = soup.find_all('span', {'class':"last value"})
python python-3.x web-scraping beautifulsoup
2个回答
1
投票

问题是,它们是作为两个独立的类lastvalue处理。您可以使用CSS选择这样的

soup.select('span.last.value')

html="""
<span class="last value">
1
</span>
<span class="last value empty">
2
</span>
"""
from bs4 import BeautifulSoup
import re
soup=BeautifulSoup(html,'html5lib')
print(soup.select('span.last.value'))

产量

[<span class="last value">
1
</span>, <span class="last value empty">
2
</span>]

1
投票

您可以使用CSS选择器,如:

soup.select("span[class*=lastvalue]")

或者您可以使用使用XPath支持scrapy selector

from scrapy.selector import Selector
sel = Selector(text=r.content)
elem = sel.xpath('//span[contains(@class, "lastvalue")]')
© www.soinside.com 2019 - 2024. All rights reserved.