Skip to main content
 首页 » 编程设计

python之使用 BeautifulSoup 解析 HTML

2025年05月04日9softidea

我想使用 python 中的 BeautifulSoup 模块读取网页上的列表。 HTML代码如下:

... 
<ul id="sidebarmenu1"> 
<li><a href="Business">Business</a></li> 
<li><a href="Warfare">Chinese</a></li> 
</ul> 
... 

我使用 BeautifulSoup 解析文档。现在我想遍历列表的元素。所以我使用 next_siblings 属性如下:

first_element = soup.ul.li 
for items in soup.ul.li.next_siblings : 
    <statements> 

但是,这会产生以下错误:

TypeError: 'NoneType' object is not iterable 

谁能告诉我如何阅读下一个 li 标签。由于显然在同一级别还有另一个 li 标签,因此它应该在 next_siblings 列表中。

有没有办法访问同一级别的所有 li 标签。 findAll 给出嵌套在给定结构中的所有标签。

请您参考如下方法:

借用@elssar 的回答,我使用了这段代码:

main_list= soup.find('ul', attrs= {'id': 'sidebarmenu1'} 
for li in main_list.findAll('li',attrs={},recursive=False): 
    ul = li.find('ul') 
    if ul == None : 
        #do something 
    else: 
        navigate(ul) 

其中 navigate(item) 是递归函数:

def navigate(item): 
    for con in item.findAll('li',attrs={},recursive=False): 
            ul = con.find('ul') 
            if (ul == None): 
                #do something 
            else: 
                navigate(ul)