【问题标题】:How to get the ID of an element with class name with BS4如何使用 BS4 获取具有类名的元素的 ID
【发布时间】:2022-12-03 03:01:47
【问题描述】:
我有一个站点,其中有多个 li 元素,我需要它们的 ID,但我只有类名。我还需要将 ID 放入列表中
的HTML:
<ul class="price-list">
<li class="price-box" id="200"></li>
<li class="price-box" id="300"></li>
<li class="price-box" id="400"></li>
</ul>
我尝试了以下但无济于事
list = []
div = soup.find("ul", {"class": "price-list"})
for size in div:
id = soup.find_all("li", {"class": "price-box"})['id']
list.append(id)
【问题讨论】:
标签:
python
beautifulsoup
python-requests
【解决方案1】:
要获取类名为 price-box 的 li 元素的 ID,您可以使用 BeautifulSoup 中的 find_all 方法来查找具有该类的所有元素,然后使用列表理解从这些元素中提取 ID。
这是一个例子:
from bs4 import BeautifulSoup
html = """
<ul class="price-list">
<li class="price-box" id="200"></li>
<li class="price-box" id="70000"></li>
<li class="price-box" id="400"></li>
</ul>
"""
soup = BeautifulSoup(html, 'html.parser')
# Find all elements with class name "price-box"
price_boxes = soup.find_all("li", {"class": "price-box"})
# Use a list comprehension to extract the "id" attribute from each element
ids = [price_box['id'] for price_box in price_boxes]
print(ids) # prints ["200", "300", "400"]
希望这可以帮助!
【解决方案2】:
import requests
import bs4
result = requests.get("url")
soup = bs4.BeautifulSoup(result.text,"html.parser")
class_name = "the class name"
divs = soup.find_all("div", {'class':class_name})
# this will give you a list of divs with the class name
# if you want to find the first div the soup find or you are looking for a unique class name
div = soup.find("div", {"class": class_name})
# also you can do it like this
div = soup.find("div", class_= class_name)