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