Вы можете получить необходимые данные о ценах, позвонив в api:
import requests
url = 'https://www.autozone.com/rest/bean/autozone/diy/commerce/pricing/PricingServices/retrievePriceAndAvailability?atg-rest-depth=2'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0'}
data = {'arg1': 6997, 'arg2':'', 'arg3': '663653,663636,663650,5531,663637,663639,644036,663658,663641,835241,663645,663642', 'arg4': ''}
response = requests.post(url, headers=headers, data=data).json()
for item in response['atgResponse']:
print(item['retailPrice'])
Выход:
8.99
8.99
10.99
8.99
8.99
8.99
8.99
8.99
8.99
8.99
8.99
8.99
Для создания data
dict вам нужно передать номер магазина как arg1
и список каждого элемента с идентификатором как arg3
...
Вы можете получить значение arg1
один раз, но arg3
следует извлечь на каждой странице
page_url = 'https://www.autozone.com/external-engine/oil-filter?pageNumber=1'
r = requests.get(page_url, headers=headers)
source = bs(r.text)
arg1 = source.find('div',{'id' : 'myStoreNum'}).text
arg3 = ",".join([_id['id'].strip('azid') for _id in source.find_all('div',{'class' : 'categorizedShelfItem'})])
, теперь вы можете определить data
без жестких значений:
data = {'arg1': arg1, 'arg2':'', 'arg3': arg3, 'arg4': ''}
Чтобы получить значения со следующей страницы, просто измените pageNumber=1
на pageNumber=2
в page_url
- остальной код остается прежним ...