我有一些包含许多 <table>
的 html 代码就在里面。
我正在尝试获取第二个表中的信息。有没有办法不使用 soup.findAll('table')
来做到这一点? ?
当我使用 soup.findAll('table')
时,我得到一个错误:
ValueError: too many values to unpack
有没有办法用一些代码或其他不需要遍历所有表格的方法来获取第 n 个标签?或者我应该看看我是否可以在表格中添加标题? (如 <table title="things">
)
如果有帮助,每个表格上方还有标题 ( <h4>title</h4>
)。
谢谢。
编辑
当我问这个问题时,我是这样想的:
我将对象拆包成两个值,但实际上还有更多。我以为这只会给我列表中的前两件事,但当然,它一直给我上面提到的错误。我不知道返回值是一个列表,并认为它是一个特殊的对象或其他东西,我的代码基于我 friend 的。
我在想这个错误意味着页面上的表格太多,它无法处理所有表格,所以我想找一种方法来完成它,而不用我正在使用的方法。我可能应该停止假设。
现在我知道它返回一个列表,我可以在 for 循环中使用它或使用 soup.findAll('table')[someNumber]
从中获取值.我还了解了拆包是什么以及如何使用它。感谢所有提供帮助的人。
希望这一切都清楚了,既然我知道我在做什么,我的问题比我问它时更没有意义,所以我想我只是在这里写下我的想法。
编辑 2:
这个问题现在已经很老了,但我仍然看到我从来没有真正清楚自己在做什么。
如果对任何人有帮助,我正在尝试解压 findAll(...)
结果,其中有多少我不知道。
useless_table, table_i_want, another_useless_table = soup.findAll("table");
由于页面中的表格数量并不总是我猜到的,并且元组中的所有值都需要解包,所以我收到了 ValueError
:
ValueError: too many values to unpack
因此,我一直在寻找获取返回的元组中的第二个(或任何索引)表的方法,而不会遇到有关使用了多少表的错误。
最佳答案
要从调用 soup.findAll('table')
中获取第二个表,将其用作列表,只需对其进行索引:
secondtable = soup.findAll('table')[1]
关于python - Python 中的 BeautifulSoup - 获取类型的第 n 个标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14095511/