在包含空格的类中使用Beautiful Soup

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在包含空格的类中使用Beautiful Soup相关的知识,希望对你有一定的参考价值。

我正在使用Python with Beautiful Soup来废除来自Steam(http://store.steampowered.com/tags/en-us/RPG/)的20个游戏列表。但是这些游戏不是用div分开的,而是用a标签代替。因此,我尝试执行以下操作:

all_games=soup.find_all('a',{'class':'tab_item   app_impression_tracked'})

(Steam的html中存在这些空格)

然而,它返回一个空列表而不是所有包含名为a的“类”的tab_item app_impression_tracked标签

我不是只想废除游戏的名字,而是它的价格,折扣......而且我对这个链接也不感兴趣。我只是想抓住a标签,因为它包含了我需要的有关游戏的所有信息。

有解决方案吗?

解:

all_games = soup.find('div', {'id':'NewReleasesRows'}).find_all('a', {'class':'tab_item'})

这些空间是有问题的,这个类的真名是tab_item而不是我认为的tab_item app_impression_tracked

答案

你也可以在soup.select()方法中使用css-rules找到所需的项目。下一个代码从页面中选择20个项目:

all_games = soup.select("a.tab_item[class*='app_impression_tracked']")

当标记属性class中的类由空格分隔时,您可以通过以下方式匹配它们:"a.tab_item.app_impression_tracked"。但是这条规则与a完全匹配这两个类,而其他内部没有。看起来列表中的20项具有很少的不同classes。括号中的*=表示contains next string

以上是关于在包含空格的类中使用Beautiful Soup的主要内容,如果未能解决你的问题,请参考以下文章

beautiful soup解析有空格的class

[HDOJ4782]Beautiful Soup(模拟)

在 Beautiful Soup 中将文本添加到 p 标签

使用 Beautiful soup 从多个 svg 帧创建循环 svg 动画

Beautiful Soup 笔记 1基本使用

从解析的 Beautiful Soup 列表中删除 <br> 标签?