#python #python-requests
#python #python-запросы
Вопрос:
Я пытаюсь выполнить разбиение на страницы с помощью запроса python, но, похоже, я не могу получить полную страницу, а также ответ JSON не обновляется при смене страницы.
url = 'https://www.walmart.com/store/1003-York-pa/search?query=ice cream'
api_url = 'https://www.walmart.com/store/electrode/api/search'
params = {
'query': word,
'cat_id': 0,
'ps': 24,
'offset': 0,
'prg': 'desktop',
'stores': re.search(r'store/(d )', url).group(1)
}
data1 = requests.get(api_url, params=params).json()
num_pages = data1['pagination']['pages'][-1]['page']
for page in range(0, num_pages 1):
params = {
'query': word,
'cat_id': 0,
'page':page, // try to update the new page
'ps': 24,
'offset': 0,
'prg': 'desktop',
'stores': re.search(r'store/(d )', url).group(1)
}
data = requests.get(api_url, params=params).json()
Что я делаю не так, и как я могу это исправить?
Комментарии:
1. Ваш отступ в последней строке неправильный, он должен быть вложен внутрь
for
цикла. Таким образом, он проходит через цикл и только после этого выполняет один запрос для последней страницы.
Ответ №1:
Во вторых params
настройках (внутри цикла for) вам нужно удалить 'offset': 0,
, потому что он каждый раз указывает серверу извлекать самый первый результат первой страницы. Это единственная основная ошибка. После этого исправления я начал получать разные продукты для каждого запроса страницы.
Во-вторых, цикл for, вероятно, должен начинаться с 1
, поскольку страницы нумеруются с 1, как я вижу по ответу.
В-третьих, вероятно, второй requests.get
вызов должен быть внутри разбиения на страницы для цикла, или вы просто копируете вставленный код с неправильным отступом.