Вы можете найти цену непосредственно по атрибуту itemprop
на целевом интервале. Для куртки, где есть 2 цены, я использую метод find
, поэтому требуется только первый найденный промежуток, поэтому цена без скидки
Вы можете сделать что-то вроде этого:
from bs4 import BeautifulSoup
import requests
import pandas as pd
import json
page = requests.get("https://www.patagonia.ca/shop/mens-hard-shell-jackets-vests")
soup = BeautifulSoup(page.content, 'html.parser')
div_price = []
# Loop on elements
for jacket in soup.find_all('div', {'class':'product-tile__content'}):
span_price = jacket.find('span', {'itemprop': 'price'})
if span_price:
div_price.append(span_price.get('content'))
print(div_price)
РЕЗУЛЬТАТЫ:
['189', '189', '189', '189', '189', '189', '189', '189', '189', '189', '435', '499.00', '435.00', '189', '879.00', '249', '499', '999.00', '799.00', '249', '749', '499', '159', '879', '685', '499', '315', '625', '169', '625', '475', '435', '599', '375', '315', '625', '499', '315']