美丽的汤,使用“findAll()”时完全匹配

Posted

技术标签:

【中文标题】美丽的汤,使用“findAll()”时完全匹配【英文标题】:Beautiful soup, exact match when using "findAll()" 【发布时间】:2018-05-26 09:11:34 【问题描述】:

我正在使用 python (3.5)、selenium (3.6) 和 beautiful soup (4.6) 抓取网站。 我用来查找某个 html 标记的代码如下:

descContainer=descContainers[0].findAll("div", "class":"userHtml")

不幸的是,我不仅找到了我的目标 div,它是:

<div class="userHtml">

还有以下 div,其类名部分由感兴趣的类名组成:

<div class="cept-threadUpdate-html toggleSect-hide--collapsed userHtml space--b-2 space--h-2" data-lightbox-xhr=""name":"thread_updates"" data-handler="lightbox-xhr emoticon-preview">

有没有办法只找到完全匹配而不是找到所有包含上述类名的类?

【问题讨论】:

【参考方案1】:

你应该看看这个问题:BeautifulSoup webscraping find_all( ): finding exact match

答案似乎是:

descContainer = descContainers[0].find_all(lambda tag: tag.name == 'div' and 
                               tag.get('class') == ['userHtml'])

【讨论】:

【参考方案2】:

更简洁易读的CSS selector:

descContainers[0].select("div[class=userHtml]")

【讨论】:

以上是关于美丽的汤,使用“findAll()”时完全匹配的主要内容,如果未能解决你的问题,请参考以下文章

美丽的汤类型错误和正则表达式

美丽的汤和正则表达式

美丽的汤 CSS 选择器没有找到任何东西

美丽的汤 - 提取信息

美丽的汤和提取价值

美丽的汤 KeyError 'href' 但肯定存在