6条回答 默认 最新
- 江天暮雪丨 2021-06-24 15:26关注
干脆别用selenium了,我找到了两个接口:
import requests from lxml import etree import json # 必须加 referer, 否则第一次请求无结果 headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) ' 'Chrome/74.0.3729.157 Safari/537.36', 'referer': "https://mall.jd.com/" } info = requests.get( 'https://module-jshop.jd.com/module/getModuleHtml.html?orderBy=99&direction=1&pageNo=1&categoryId=9061630' '&pageSize=20&pagePrototypeId=8&pageInstanceId=111774908&moduleInstanceId=258367169&prototypeId=55555&templateId' '=905542&appId=1056224&layoutInstanceId=258367169&origin=0&shopId=813953&venderId=815911&callback' '=jshop_module_render_callback', headers=headers).text info = info[29:-1] json_info = json.loads(info) # 抓取商品SKU tree = etree.HTML(json_info['moduleText']) skus = tree.xpath('//span[@class="jdNum"]/@jdprice') # 商品SKU前加上 J_ new_skus = ['J_' + sku for sku in skus] # print(new_skus) # 使用多个商品SKU 请求价格接口 skus_string = ','.join(new_skus) result = requests.get(f'https://f-mall.jd.com/prices/mgets?source=jshop&type=mgets&area=18_1482_48939_0&skuids={skus_string}&_=1624516262221').json() print(result) # result: 结果是一个json,包含所有请求商品的价格 # [{'p': '69.00', 'op': '69.00', 'm': '169.00', 'cbf': 0, 'id': 'J_69200853812'}, {'p': '179.00', # 'op': '179.00', 'm': '369.00', 'cbf': 0, 'id': 'J_66266801909'}, ... 省略
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
- ¥15 如何在scanpy上做差异基因和通路富集?
- ¥20 关于#硬件工程#的问题,请各位专家解答!
- ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
- ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
- ¥30 截图中的mathematics程序转换成matlab
- ¥15 动力学代码报错,维度不匹配
- ¥15 Power query添加列问题
- ¥50 Kubernetes&Fission&Eleasticsearch
- ¥15 報錯:Person is not mapped,如何解決?