【问题标题】:beautifulsoup finding all children under certain childBeautifulsoup 查找某个孩子下的所有孩子
【发布时间】:2021-08-30 18:53:48
【问题描述】:

所以我基本上试图找到这个 ul 的子元素,但只找到子元素下的元素

所以如果我有这个 html 块

<ul>
    <li class = "list_item_1">item 1</li>
    <li class = "list_item_2">item 2</li>
    <li class = "list_item_3">item 3</li>
    <li class = "list_item_4">item 4</li>

</ul>

我想使用 find_all 抓取第二个项目下方的孩子

所以我希望 find_all 的输出是

[<li class = "list_item_3">item 3</li> , <li class = "list_item_4">item 4</li>]

【问题讨论】:

    标签: python python-3.x web-scraping beautifulsoup


    【解决方案1】:

    您可以将.find_all(recursive=False) 与列表切片一起使用:

    from bs4 import BeautifulSoup
    
    html_doc = """
    <ul>
        <li class = "list_item_1">item 1</li>
        <li class = "list_item_2">item 2</li>
        <li class = "list_item_3">item 3</li>
        <li class = "list_item_4">item 4</li>
    
    </ul>
    """
    
    soup = BeautifulSoup(html_doc, "html.parser")
    
    print(soup.ul.find_all(recursive=False)[2:])
    

    打印:

    [<li class="list_item_3">item 3</li>, <li class="list_item_4">item 4</li>]
    

    或者,如果您愿意使用 .select,您可以将 CSS 选择器与 ~ 一起使用:

    print(soup.select(".list_item_2 ~ *"))
    

    打印:

    [<li class="list_item_3">item 3</li>, <li class="list_item_4">item 4</li>]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多