我用BeautifulSoup创建了一个长度为42的DICT。我试图从标签中提取文本,我知道最后的一些是空白的。当我输入player [42] .text时,它会从REPL返回一个空白,但当我在一个循环中调用它时,我得到:
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "/Users/Brad/anaconda/lib/python3.6/site-packages/bs4/element.py", line 997, in __getitem__
return self.attrs[key]
KeyError: 0
代码:
for player in players:
name = player[0].text.strip()
print(name)
我已经查看了Google和Stackoverflow,发现了一些If语句,但仍然没有运气。
答案 0 :(得分:2)
for循环遍历players
中依次分配给player
每个项目的项目。尝试使用player[0]
进行索引时,BeautifulSoup会将其视为使用属性名称0
的属性查找。播放器标记中没有名为0
的属性,因此查找失败并引发KeyError
。
你应该像这样循环:
for player in players:
name = player.text.strip()
print(name)
答案 1 :(得分:1)
您不需要指定索引。 player
已经是一个单一的对象,所以你可以这样做:
name = player.text.strip()
print(name)