gpt4 book ai didi

python - 迭代可变数量的表行时出现 IndexError

转载 作者:太空宇宙 更新时间:2023-11-03 17:31:28 26 4
gpt4 key购买 nike

我正在使用 BeautifulSoup 4.4 的网站上抓取表中不断变化的行数。在下面的代码中有四个表 - 但它每天都在不断变化。

主要问题:

  • 如何消除 IndexError 消息?

状态:我正在尝试将可迭代项的数量设置为最大迭代(但这并没有解决实际问题)。

子问题:

  • 我计划将输出附加到文件中 - 索引是否错误迭代此表会以任何方式影响数据输出或与迭代相关的其他过程吗? (我仍然想避免错误消息无论如何)。

索引错误消息: item_name = strengths.findAll('tr')[x].findAll('td')[0].get_text()
IndexError: list index out of range

<tbody>
<tr>
<td>
<div class="iconize iconize-icon-left">
<span class="incidents-icon" title="Description"></span>
Heinz 57 ketchup
</div>
</td>
<td style="text-align: right;">
<span class="level">Popular</span>
</td>
</tr>
<tr> # same structure as the tr above
<tr> # same structure as the tr above
<tr> # same structure as the tr above
</tbody>

到目前为止我的代码:

strengths = strengths_div.table.tbody

output = []

iter_length = len(list(strengths)) # Finding out the number of iterable elements

x = 0 # counter

for tr in strengths:
while x <= int(iter_length):

item_name = strengths.findAll('tr')[x].findAll('td')[0].get_text()
strength_value = strengths.findAll('tr')[x].findAll('td')[1].get_text()
item_name = item_name.strip()
strength_value = strength_value.strip()

x = x + 1

最佳答案

首先,如果要使用索引,则不要使用 x = len(iterable),因为长度为 n 的可迭代对象不会有索引 n。最大索引是 n - 1,因此 while 循环行应该像这样开始: while x < int(iter_length): 。另外,我不明白你的外部for的目的循环,因为您没有使用 tr在我能看到的循环中的任何地方。

避免索引错误的一个好方法是循环遍历可迭代对象中的项目而不是遍历其索引。它通常也使代码更整洁、更易于阅读。这就是我要做的:

for items in strengths.findAll('tr'):

item_name = items.findAll('td')[0].get_text()
strength_value = items.findAll('td')[1].get_text()
item_name = item_name.strip()
strength_value = strength_value.strip()

关于python - 迭代可变数量的表行时出现 IndexError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31776086/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com