【问题标题】:When using the .findAll() method, Beautifulsoup is counting too many tags使用 .findAll() 方法时,Beautifulsoup 计算的标签太多
【发布时间】:2018-11-26 17:31:50
【问题描述】:

我正在编写网页抓取的代码,看起来beautifulsoup中的.findAll()函数只是查找类属性包含指定类名的标签。

例如,如果我写container = page_soup.findAll('div',{'class':'compare-collapse'}),container 将包含 div 标签,其类不仅是'compare-collapse',而且还有'compare-collapse compare-collapse_collapsed'。我只想找到类属性为 only 'compare-collapse' 的 div 标签。之前用过Beautifulsoup,没遇到过这个问题。

这是我的代码。我用许多容器编写代码以使其更易于调试。该错误发生在 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。我该如何解决这个问题?

【问题讨论】:

标签: python html web-scraping beautifulsoup


【解决方案1】:

重复: BeautifulSoup webscraping find_all( ): finding exact match

请参阅上述问题。

根据你的情况,应该是:

container = page_soup.findAll(lambda tag: tag.name == 'div' and 
                               tag.get('class') == ['compare-collapse'])

【讨论】:

    猜你喜欢
    • 2014-01-06
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    • 2020-12-02
    • 1970-01-01
    • 1970-01-01
    • 2012-06-02
    相关资源
    最近更新 更多