CSS子代选择器(无法选择所有子代)

时间:2020-02-07 20:32:31

标签: html css beautifulsoup

image

这是我要用漂亮的汤刮的图片。但是,只要我使用下面显示的代码,我就只能访问第一个孩子。我永远都无法接触所有的孩子。有人可以帮我吗?

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

2 个答案:

答案 0 :(得分:0)

可以按以下两个步骤解决问题:

  1. 上使用 select_one 来获取 ul < / strong>
  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>

答案 1 :(得分:0)

也许您的版本是错误的。可以。

from bs4 import BeautifulSoup
html = '''
<ul class="items">
  <li>1</li>
  <li>2</li>
</ul>
'''
soup = BeautifulSoup(html,features="lxml")
item = soup.select('ul.items>li')
print (len(item))

这里还有另一种解决方案

from simplified_scrapy.simplified_doc import SimplifiedDoc
html = '''
<ul class="items">
  <li>1</li>
  <li>2</li>
</ul>
'''
doc = SimplifiedDoc(html)
item = doc.selects('ul.items>li')
print(len(item))

还有更多示例here