gpt4 book ai didi

python - BeautifulSoup 。元素索引错误

转载 作者:太空宇宙 更新时间:2023-11-04 11:10:29 27 4
gpt4 key购买 nike

我一直在解析 html 的 ol 元素并遇到了元素索引的问题。

假设我们有以下元素:

html_document = """
<ol>
<li>Test lists</li>
<li>Second option</li>
<li>Third option</li>
</ol>
"""

那么,让我们解析它:

soup = BeautifulSoup(html_document)
all_li = tuple(soup.find_all('li'))
result = [el.parent.index(el) for el in all_li]
print(result) # [1, 3, 5]

为什么是 1、3、5?或者我错过了什么?

最佳答案

index()的定义中方法,我们看到如下代码:

    def index(self, element):
"""
Find the index of a child by identity, not value. Avoids issues with
tag.contents.index(element) getting the index of equal elements.
"""
for i, child in enumerate(self.contents):
if child is element:
return i
raise ValueError("Tag.index: element not in tag")

所以你真的需要看看 .contents属性,显示以下成员(<ol> 标记的子项):

0 <class 'bs4.element.NavigableString'> 
1 <class 'bs4.element.Tag'> <li>Test lists</li>
2 <class 'bs4.element.NavigableString'>
3 <class 'bs4.element.Tag'> <li>Second option</li>
4 <class 'bs4.element.NavigableString'>
5 <class 'bs4.element.Tag'> <li>Third option</li>
6 <class 'bs4.element.NavigableString'>

换句话说,您的 <li> 的父级标签,<ol> , 还有其他子项——可导航字符串,您没有直接捕获它们,因为您只搜索了列表项 ( soup.find_all('li'))。

关于python - BeautifulSoup 。元素索引错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58340965/

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