Найти только один элемент на HTML-странице с помощью soup

#python #beautifulsoup

#python #beautifulsoup

Вопрос:

Возможно ли найти с помощью soup только один элемент на странице html или он предназначен для постоянного поиска всех элементов с одинаковыми атрибутами? У меня есть этот код ниже, и снова я выбираю ebay, потому что это удобно. Я просто хочу напечатать первую цену на странице, отображаемую в виде целого числа в консоли. Я не получаю никаких ответов. Я перепробовал все возможные комбинации для функции поиска с помощью soup.

 import requests
from bs4 import BeautifulSoup
import lxml


url = "https://www.ebay.com/sch/i.html?_from=R40amp;_trksid=p2380057.m570.l1312amp;_nkw=Ryzen 9 3950xamp;_sacat=0"

page = requests.get(url)
soup = BeautifulSoup(page.content, "lxml")
page.close()

price = soup.find("div",href_="https://www.ebay.com/p/10035392721?iid=313304858607#UserReviews", class_= "s-item__price").get_text(strip=True)

print(price)
  

Пожалуйста, покажите мне, как мне напечатать одну цену с помощью soup. Спасибо.

Комментарии:

1. Вы пытаетесь найти a div с помощью an href ? Вы, вероятно, хотите a , чтобы внутри a div было это href — или, возможно, вы хотите div , чтобы a внутри него было это href ?

2. Я перепробовал все, включая. Цена по-прежнему не указана.

3. Ваш код выдает вам первый div элемент с a href , который имеет указанное значение. Поскольку no div имеет a href , вы получаете None . Что вы ожидали получить? Первый div , a в котором есть это href ? Что вы пытались сделать, чтобы получить это?

4. покажите мне, как вы это сделаете. Спасибо

5. Вам нужно знать основы HTML, если вы хотите иметь возможность очищать веб-страницы.

Ответ №1:

Чтобы получить первую цену, смотрите Следующий пример с использованием селектора CSS:

 import requests
from bs4 import BeautifulSoup


url = "https://www.ebay.com/sch/i.html?_from=R40amp;_trksid=p2380057.m570.l1312amp;_nkw=Ryzen 9 3950xamp;_sacat=0"

soup = BeautifulSoup(requests.get(url).content, "lxml")

print(soup.select_one("li:nth-of-type(n 2) span.s-item__price").text)
  

Вывод:

 $575.00
  

Чтобы получить все теги, используйте:

 for tag in soup.select("li:nth-of-type(n 2) span.s-item__price"):
    print(tag.text)
  

Комментарии:

1. Спасибо, Мендельг. Потрясающе.