Python将参数传递给URL

时间:2017-09-14 01:52:36

标签: python url python-requests

我必须使用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'是不对的。那我怎么能传递这个参数呢?

1 个答案:

答案 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内)'},
    ...