[英]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.