python - 如何修复停止工作的 Python 请求分页
问题描述
我使用下面的代码来发出 python 请求。我想获取查询“v”的所有产品结果。
url = 'https://www.walmart.com/store/1003-York-pa/search?query=ice%20cream'
api_url = 'https://www.walmart.com/store/electrode/api/search'
params = {
'query': 'v',
'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()
for page in range(0, 319):
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()
网站搜索显示 319 页结果。它有些停止在第 100 页返回结果。我想获得所有页面的结果。我怎样才能做到这一点?
解决方案
尝试增加offset
参数,而不是page
:
import re
import requests
url = 'https://www.walmart.com/store/1003-York-pa/search?query=ice%20cream'
api_url = 'https://www.walmart.com/store/electrode/api/search'
params = {
'query': 'ice cream',
'cat_id': 0,
'ps': 24,
'offset': 0,
'prg': 'desktop',
'stores': re.search(r'store/(\d+)', url).group(1)
}
count = 0
for params['offset'] in range(0, 319, 24):
data = requests.get(api_url, params=params).json()
for i in data.get('items', []):
print(i['title'])
count += 1
print('Total', count)
印刷:
...
Paletas Helados Mexico Rompope Premium Bolis, 5.0 fl oz, 6 count
Blue Ribbon Classics Homemade Vanilla Frozen Treat Bar
Dean's Country Fresh Fudge Bars, 30 oz
Blue Ribbon Classics Star Frozen Treat Bar
Dean Foods Deans Country Fresh Vanilla Bars, 12 ea
Blue Ribbon Classics Orange Dream Frozen Treat Bar
OUTSHINE Creamy Coconut Frozen Fruit Bars, 6 Ct. Box | Gluten Free
La Michoacana Variety Pack Paletas, 12 ct, 36 fl oz
Breyers CarbSmart Frozen Dairy Dessert Vanilla Bars 6 ct
Total 484
推荐阅读
- http - URL“/?v1 =”背后的目的是什么
- c# - C# Datatable .AsParallel() AsOrdered() 没有按顺序提供数据
- java - 如何比较java Set中的键值
- r - 使用 dplyr 一次转换不同格式的日期
- sql-server - ASP.NET Core MVC 和 Entity Framework 输出参数在调用存储过程时不返回
- javascript - Vue.js 将回调作为 prop 传递给子组件,并在单击时在父组件上执行
- testing - Testcafe 检查 DOM 元素是否不存在
- java - 试图解决一个包裹比另一个包裹更贵的情况下显示运输成本的问题(Java)
- ios - 显示和开销对 iOS 的高电池影响
- laravel - laravel 7中的表单操作中未定义路线