Пайтон парсинг HTML-документ с несколькими одинаковыми тегами
Всем привет, не могу понять как правильно обратиться к тегу span который мне нужен, чтобы он брал только одну оригинальную цену на чай в карточках товара. Нашел способ обратиться по индексу тега, но span может быть больше 100 на сайте...
import requests
from bs4 import BeautifulSoup
import pandas as pd
from time import sleep
import random
from fake_useragent import UserAgent
ua=UserAgent()
exel=pd.DataFrame()
domen="https://online.metro-cc.ru"
n,p,u,x,s,l,k=[],[],[],[],[],[],[]
for count in range(1,2):
sleep(3)
link=f"https://online.metro-cc.ru/category/chaj-kofe-kakao/chay?page={count}"
headers={"User-Agent": ua.chrome}
response=requests.get(link,headers=headers).text
bs=BeautifulSoup(response,"lxml")
name_chai=bs.find_all("span", class_="product-card-name__text")
price_chai=bs.find_all("span",class_="product-price__sum-rubles") #ЦЕНА ЧАЯ
card_url=bs.find_all("a",class_="product-card-photo__link reset-link")
for name,price,url in zip(name_chai,price_chai,card_url):
n.append(name.getText())
p.append(price.getText())
u.append(domen+url.get("href"))
print(price.getText()) # Выводит всё подряд включая скидки...
#print(name.getText())
#print(domen + url.get("href"))
for xarakteristika in u:
headers={"User-Agent": ua.chrome}
responce = requests.get(xarakteristika, headers=headers).text
bs = BeautifulSoup(responce, 'lxml')
xarakteristika_chai=bs.find("ul",class_="product-attributes__list style--product-page-full-list")
x.append(xarakteristika_chai.get_text())
#print(xarakteristika_chai.getText())
for opisanie in u:
headers={"User-Agent": ua.chrome}
responce = requests.get(opisanie, headers=headers).text
bs = BeautifulSoup(responce, 'lxml')
opisanie_chai=bs.find("span",class_="product-text-description__content-text")
s.append(opisanie_chai.get_text())
#print(opisanie_chai)
exel["Название"]=n
exel["Цена"]=p
exel["Сылка товара"]=u
exel["Характеристика"]=x
exel["Описание"]=s
exel.to_excel("./Парсинг_Метро.xlsx", index=False)
Ответы (1 шт):
Автор решения: Сергей Ш
→ Ссылка
import requests
from bs4 import BeautifulSoup
import pandas as pd
link = "https://online.metro-cc.ru/category/chaj-kofe-kakao/chay"
response = requests.get(link)
bs = BeautifulSoup(response.text, "lxml")
products = bs.find_all(class_="catalog-2-level-product-card")
product_data = []
for product in products:
name = product.find(class_="product-card-name__text").text.strip()
price = product.find(class_="product-price__sum-rubles").text.strip()
url = product.find(class_="reset-link").get("href")
product_data.append({'Название': name,
'Цена': price,
'Ссылка товара': 'https://online.metro-cc.ru' + url})
df = pd.DataFrame(product_data)
df.to_excel("Парсинг_Метро.xlsx", index=False)
