Python 如何使用BeautifulSoup从多个兄弟姐妹处收集信息?

Python 如何使用BeautifulSoup从多个兄弟姐妹处收集信息?,python,beautifulsoup,Python,Beautifulsoup,以下是我正在使用的html: <a 'data' = 'ubr_app'>List</a> <ul> <li> 'a' </li> <li> 'b' </li> <li> 'c' </li> <ul&g

以下是我正在使用的html:

<a 'data' = 'ubr_app'>List</a>
    <ul>
        <li>
            'a'
        </li>
        <li>
            'b'
        </li>
        <li>
            'c'
        </li>
    <ul>
        <li>
            1
        </li>
        <li>
            2
        </li>
        <li>
            3
        </li>
列表
  • “a”
  • “b”
  • “c”
    • 1.
    • 2.
    • 3.
我想将这些列表中的所有信息存储在单独的数组中。我在python中所做的工作如下:

def getItems(soup):
    item1_list = []
    item2_list = []
    appliance = soup.find('a', {'data-lid' : 'ubr_app'})
    appliance_ul = appliance.parent.find_next_sibling() # go to 1st <ul> sibling
    for item in appliance_ul.find_all('li'):
        item1_list.append(item.text)

    appliance_ul = appliance_ul.find_next_sibling() # go to 2nd <ul> sibling
    for item in appliance_ul.find_all('li'):
        item2_list.append(item.text)
    return item1_list, item2_list
def getItems(汤):
项目1_列表=[]
项目2_列表=[]
appliance=soup.find('a',{'data-lid':'ubr_app'})
appliance_ul=appliance.parent.find_next_sibling()#转到第一个
    同级 对于设备中的项目,查找所有(“li”): item1_list.append(item.text) appliance_ul=appliance_ul.查找下一个兄弟姐妹()#转到第二个兄弟姐妹 对于设备中的项目,查找所有(“li”): item2_list.append(item.text) 返回项目1\u列表、项目2\u列表
这给了我['a','b','c',和[1,2,3]。
这就是我想要做的,但它是非常静态的,看起来像丑陋的代码。是否有一种方法可以搜索所有现有的“ul”同级,以便我可以在每个嵌套列表中保存信息?

而不是使用
。查找下一个同级()
,使用并为其提供一个筛选器:

def getItems(soup):
    items = []
    appliance = soup.select('a[data-lid="ubr_app"]')[0]
    for appliance_ul in appliance.parent.find_next_siblings('ul'):
        items.append([i.text for i in appliance_ul.find_all('li')])
    return items
.find\u next\u同胞('ul')
调用返回所有
同胞标记的列表