How to get the ID of an element with class name with BS4

Question:

I have a site where there are multiple li elements whos ID I need but I only have the class name. I also need the IDs to be put into a list

The 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>

I have tried the following but to no avail

list = []
div = soup.find("ul", {"class": "price-list"})
    for size in div:
        id = soup.find_all("li", {"class": "price-box"})['id']
        list.append(id)
Asked By: drag6ter

||

Answers:

To get the IDs of the li elements with class name price-box, you can use the find_all method from BeautifulSoup to find all elements with that class, and then use a list comprehension to extract the IDs from those elements.

Here’s an example:

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"]

Hope this helps!

Answered By: A-poc
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)
Answered By: D P