#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
с помощью anhref
? Вы, вероятно, хотитеa
, чтобы внутри adiv
было этоhref
— или, возможно, вы хотитеdiv
, чтобыa
внутри него было этоhref
?2. Я перепробовал все, включая. Цена по-прежнему не указана.
3. Ваш код выдает вам первый
div
элемент с ahref
, который имеет указанное значение. Поскольку nodiv
имеет ahref
, вы получаете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. Спасибо, Мендельг. Потрясающе.