我必须使用requests.Session.get
从URL获取JSON。
我需要传递一个obj作为参数。
网址是:
http://c0.3.cn/stock?skuId=5217606&area=1_72_2799_0&venderId=1000000140&cat=670,671,672&buyNum=1&choseSuitSkuIds=&extraParam={%22originid%22:%221%22}
我创造了一些:
obj ={
'skuId': _data_pid,
'venderId': _venderid,
'cat': _astr,
'area': tl,
'buyNum': 1,
'extraParam': '%7B%22originid%22:%221%22%7D'
}
requests.Session.get('http://c0.3.cn/stock', params=obj)`
一切都很好,但参数extraParam,我使用{"originid"="1"}
或"{"originid"="1"}"
或'%7B%22originid%22:%221%22%7D'
是不对的。那我怎么能传递这个参数呢?
答案 0 :(得分:0)
您可以使用json
构造字符串,例如:
In []:
import json
obj = {
...
'extraParam': json.dumps({'originid':'1'}, separators=(',', ':'))
}
resp = requests.get('http://c0.3.cn/stock', params=obj)
resp.json()
Out[]:
{'choseSuit': [],
'stock': {'ArrivalDate': '',
'Dc': None,
'Dti': None,
'Ext': 'isdangergoods:0,SoldOversea:1,isOverseaPurchase:0,storeProperty:0,is7ToReturn:1',
'IsPurchase': True,
'PopType': 0,
'StockState': 33,
'StockStateName': '现货',
'afsCode': 0,
'area': {'cityName': '朝阳区', 'countyName': '三环以内', 'provinceName': '北京', 'success': True, 'townName': ''},
'channel': 1,
'cla': [{'id': 28, 'name': '抢大额优惠神券', 'url': '//sale.jd.com/act/F5ZurL6zbcN.html'}],
'code': 1,
'dcashDesc': '',
'eir': [{'helpLink': '//help.jd.com/user/issue/103-983.html',
'iconCode': 'free_delivery_zhong',
'iconSrc': '99元免基础运费(20kg内)',
'iconTip': '所选地址自营订单满99元免基础运费(20kg内),不足金额订单收取6元/单基础运费,超出重量加收1元/kg续重运费。',
'iconType': 0,
'picUrl': '//static.360buyimg.com/item/assets/picon/mianyunfei.png',
'resultCode': 1,
'showName': '99元免基础运费(20kg内)'},
...