gpt4 book ai didi

python - BeautifulSoup,在不使用 find_all() 的情况下找到第 n 个表

转载 作者:行者123 更新时间:2023-11-28 18:59:28 25 4
gpt4 key购买 nike

我想用 BeautifulSoup 找到第 n 个表。到目前为止,这一直在为我完成工作。

table = soup.find_all('table',{'class':'wikitable sortable jquery-tablesorter'})[nth]

但是如果我确定它是我定义的第 n 个表,有没有办法避免搜索和保存所有以前的表?我觉得如果有一种方法只在第 n 个表时获取表,我的代码就会运行得更快。这些表格来自维基百科。

最佳答案

使用 .selectnth-of-type。我不确定这是否会使您的代码运行得更快,为此请查看 improving performance文档部分。

from bs4 import BeautifulSoup
html="""
<table class="1">
</table>
<table class="2">
</table>
<table class="3">
</table>
<table class="4">
</table>
<table class="5">
</table>
"""
soup=BeautifulSoup(html,'html.parser')
print(soup.select('table:nth-of-type(3)'))

输出

[<table class="3">
</table>]

CSS 选择器 .class:nth-of-type(n) 似乎不适用于 BeautifulSoup。但是,如果您知道表的父类,则可以执行类似 '.parent table:nth-of-type(n)'

的操作
from bs4 import BeautifulSoup
html="""
<div class="parent1">
<table class="tbl">
not our table 1
</table>
<table class="tbl">
not out table 2
</table>
</div>
<div class="parent2">
<table class="tbl">
our table 1
</table>
<table class="tbl">
our table 2
</table>
</div>
"""
soup=BeautifulSoup(html,'html.parser')
print(soup.select('.parent2 table:nth-of-type(2)'))

输出

[<table class="tbl">
our table 2
</table>]

以上输出也可以通过soup.select('.parent2 .tbl ~ .tbl')

关于python - BeautifulSoup,在不使用 find_all() 的情况下找到第 n 个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54356576/

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