我希望使用 BeautifulSoup 来解析一些 HMTL。我有一张有几行的桌子。我试图找到满足某些条件(某些属性值)的行,并稍后在我的代码中使用该行的索引。
问题是:find_all()
保留它返回的结果集中的行顺序?
我在 中没有找到这个docs谷歌搜索让我只这个答案:
“BeautifulSoup 标签不会跟踪它们在页面中的顺序,不会。”
但他没有透露他从哪里得到这些信息。
我很高兴得到答案,但更高兴的是指向一些解释这一点的文档。
编辑:dstudeba 向我指出了这个“解决方法”的方向next_sibling
.
from bs4 import BeautifulSoup
soup = BeautifulSoup(open('./mytable.html'), 'html.parser')
row = soup.find('tr', {'class':'something', 'someattr':'somevalue'})
myvalues = []
while True:
cell = row.find('td', {'someattr':'cellspecificvalue'})
myvalues.append(cell.get_text())
row = row.find_next_sibling('tr', {'class':'something', 'someattr':'somevalue'})
if not row:
break
这会按照它们在 html 文件中出现的顺序获取我需要的单元格内容。
但是我仍然想知道在 BeautifulSoup 文档中我可以找到是否find_all()
是否保留秩序。这就是为什么我不接受 dstudeba 的答案。 (我的赞成票没有显示,还没有足够的代表:P)