首页 > 解决方案 > CSS子选择器(不能选择所有子)

问题描述

图片

这是我试图用漂亮的汤刮的图像。但是每当我使用下面显示的代码时,我只能访问第一个孩子。我永远无法接触到所有的孩子。有人可以帮我弄这个吗?

item = soup.select("ul.items > li")
print(len(item))

标签: htmlcssbeautifulsoup

解决方案


该问题可以通过以下 2 个步骤解决:

  1. 上使用select_one来获取ul
  2. 使用ul上的find_all来获取所有li项目。

工作解决方案:

# File name: soup-demo.py

inputHTML = """
<ul class="items">
<li class="class1">item 1</li>
<li class="class1">item 3</li>
<li class="class1">item 3</li>
</ul>
"""
from bs4 import BeautifulSoup
soup = BeautifulSoup(inputHTML, 'html.parser')
itemList = soup.select_one("ul", class_="items")

items = itemList.find_all("li")
print("Found ", len(items), " items")
for item in items:
    print(item)

输出:

$ python3 soup-demo.py 
Found  3  items
<li class="class1">item 1</li>
<li class="class1">item 3</li>
<li class="class1">item 3</li>

推荐阅读