python - Python 中的 BeautifulSoup - 获取类型的第 n 个标签

标签 python beautifulsoup

我有一些包含许多 <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/

相关文章:

python - 使用 BeautifulSoup 提取时保留某些 HTML 标签

Python 简化 HTML 表格

python - Bokeh :使用编辑工具时禁用自动调整范围

python - 如何在 PySpark 中加入/合并具有公共(public)键的数据帧列表?

python - ElementTree 和 Element 有什么区别? ( python XML)

python - 在抓取一个元素的不同位置时如何压缩脚本

python - 您无权使用 BeautifulSoup 访问网站

python - 测试具有用户输入的 python 函数的问题 (pytest)

python - 什么是 termios.TIOCGWINSZ

Python HTML 表格抓取(打印)