我正在为webscraping编写代码,似乎beautifulsoup中的.findAll()函数只找到其类属性包含指定类名的标记。
例如,如果我写container = page_soup.findAll('div',{'class':'compare-collapse'})
,container
将包含div标签,其类不仅是'compare-collapse'
,还包括'compare-collapse compare-collapse_collapsed'
。我只想找到其类属性仅 'compare-collapse'
的div标签。我之前使用过Beautifulsoup,但我没有遇到过这个问题。
这是我的代码。我用很多容器编写了代码,以便于调试。这个bug发生在container3。
html = driver.page_source
page_soup = soup(html,"html.parser")
container1=page_soup
container2=container1.findAll('div',{'id':'ratings'})
container2=container2[0]
container3=container2.findAll('div',{'class':'compare-collapse'}) #BUG HAPPENS HERE
container3=container3[1]
container4=container3.findAll('div',{'class':'compare-collapse_items'})
container4=container4[0]
container5=container4.findAll('div',{'class':'compare-section'})
container5=container5[0]
container6=container5.findAll('div',{'class':'container-fluid compare-row'})
container6=container6[2]
container7=container6.findAll('div',{'class':'row'})
container7=container7[0]
name=container7.div.div.text
print(name)
我以前将所有容器存储在文本文档中。 container3
的课程为compare-collapse compare-collapse_collapsed
,而不是compare-collapse
。我该如何解决这个问题?
答案 0 :(得分:0)
重复: BeautifulSoup webscraping find_all( ): finding exact match
请参阅上述问题。
基于你的,它将是:
container = page_soup.findAll(lambda tag: tag.name == 'div' and
tag.get('class') == ['compare-collapse'])