繁体   English   中英

使用BeautifulSoup解析HTML

[英]parsing HTML using BeautifulSoup

我想使用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)

其中navigation(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)

请参阅此解决方案 它对嵌套元素使用findAll()。

不知道这是否完全是您想要的,但这可能只是一个开始。

你做这样的事情-

main_list= soup.find('ul', attrs= {'id': 'sidebarmenu1'}
elements= main_list.findAll('li')
for link in elements:
    #do something

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM