在包含空格的类中使用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的主要内容,如果未能解决你的问题,请参考以下文章