我希望使用beauthoulsoup来解析一些HMTL。我有一张有几排的桌子。我试图找到一个满足特定条件(特定属性值)的行,然后在代码中使用该行的索引。在
问题是:find_all()
是否保留它返回的结果集中我的行的顺序?在
我没有在docs中找到这个,而google只找到了this answer:
'BeautifulSoup tags don't track their order in the page, no.'
但他没有说他是从哪里得到这些信息的。在
我很乐意得到一个答案,但更高兴的是有一个指向解释这一点的文档的指针。在
编辑: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文件中显示的顺序获取所需的单元格内容。在
不过,我还是想知道在beauthoulsoup文档中,我可以在哪里找到find_all()
是否保持顺序。这就是为什么我不接受dstudeba的回答。(我的赞成票没有显示,还不够代表:P)
根据我的经验,
find_all
确实保持了秩序。但是为了确保您可以使用find_all_next
方法,该方法使用find_next
方法,该方法将保持顺序。Here is a link到文档。在相关问题 更多 >
编程相关推荐