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

问题描述 投票:0回答:1

我正在使用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

python web-scraping beautifulsoup
1个回答
0
投票

你也可以在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

© www.soinside.com 2019 - 2024. All rights reserved.