跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 请教个爬虫传参的问题
未分類
18 5 月 2020

请教个爬虫传参的问题

请教个爬虫传参的问题

資深大佬 : Colorful 0

我的代码是这样写的 idsdata = {‘id’:100,’skiids’:[1,2,3,7]} headersjson={ ‘Content-Type’:’application/json’, ‘Accept’:’application/json’, ‘user-agent’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36’ }

requests.get(url=’http://XXXXX’,data=json.dumps(idsdata),headers=headersjson,)

传参之后在浏览器里面应该是这样的

id: 100 skiids[]: 1 skiids[]: 2 skiids[]: 3 skiids[]: 7

但是这行一直报错 应该是传参的格式不对,requests.get(url=’http://XXXXX’,data=json.dumps(idsdata),headers=headersjson,)

之前没写过这种,网上没找到太多相关的,看得不太明白

求教了

大佬有話說 (8)

  • 資深大佬 : ClericPy

    直接盲猜啊… 没 Python 版本, 没网址, 没报错信息… 你发个 curl 也行…
    随便回答下吧:
    如果是 Python3, data 参数要么是 dict 要么是 bytes, 所以你试试 encode 一下, 或者直接改用 json=dict 的方式, Requests 自动帮你 dumps 和 encode

  • 主 資深大佬 : Colorful

    @ClericPy 我不太知道怎么贴那块的报错信息
    python 版本是 3.7,你说的 curl 是网址?

  • 資深大佬 : littleylv

    requests.get(url=’http://XXXXX’,params=idsdata,headers=headersjson,)

    python 用的不多,盲猜一下
    get 用 params
    post 用 data
    另外不需要 json.dumps

    PS:
    遇到问题先看看手册你传参符不符合要求

  • 主 資深大佬 : Colorful

    @littleylv 好的,我去看看手册,感谢了

  • 資深大佬 : littleylv

    实测:

    Python 3.7.7 (default, Mar 10 2020, 15:43:33)
    [Clang 11.0.0 (clang-1100.0.33.17)] on darwin
    Type “help”, “copyright”, “credits” or “license” for more information.
    >>> import requests
    >>> idsdata = {‘id’:100,’skiids’:[1,2,3,7]}
    >>> res = requests.get(‘http://httpbin.org/get’, params=idsdata)
    >>> res.json()
    {‘args’: {‘id’: ‘100’, ‘skiids’: [‘1’, ‘2’, ‘3’, ‘7’]}, ‘headers’: {‘Accept’: ‘*/*’, ‘Accept-Encoding’: ‘gzip, deflate’, ‘Host’: ‘httpbin.org’, ‘User-Agent’: ‘python-requests/2.22.0’, ‘X-Amzn-Trace-Id’: ‘Root=1-5ebfb190-43a2c3f9e127ee27bad4de17’}, ‘origin’: ‘xxx’, ‘url’: ‘http://httpbin.org/get?id=100&skiids=1&skiids=2&skiids=3&skiids=7’}
    >>> res = requests.get(‘http://httpbin.org/get’, data=idsdata)
    >>> res.json()
    {‘args’: {}, ‘headers’: {‘Accept’: ‘*/*’, ‘Accept-Encoding’: ‘gzip, deflate’, ‘Content-Length’: ’42’, ‘Content-Type’: ‘application/x-www-form-urlencoded’, ‘Host’: ‘httpbin.org’, ‘User-Agent’: ‘python-requests/2.22.0’, ‘X-Amzn-Trace-Id’: ‘Root=1-5ebfb1a4-8c65a9f67209c70e1b262f85’}, ‘origin’: ‘xxx’, ‘url’: ‘http://httpbin.org/get’}

  • 主 資深大佬 : Colorful

    @littleylv 有个比较奇怪的问题
    requests.get(url=’http://XXXXX’,params=idsdata,headers=headersjson,)

    改成这样之后,确实能够请求到接口,但是返回的数据不太对

    以这个数据为例:
    idsdata = {‘id’:100,’skiids’:[1,2,3,7]}

    因为我看到浏览器里面请求是这样的
    id:100,
    skiids:1,
    skiids:2,
    skiids:3,
    skiids:7,

    正确应该是这样的
    skiids[]:1,
    skiids[]:2,
    skiids[]:3,
    skiids[]:7,

  • 主 資深大佬 : Colorful

    @littleylv 在传的时候直接这样写就可以了 skiids[],好奇怪

  • 資深大佬 : crella

    @Colorful curl 是指浏览器的开发人员工具,“网络”标签,选中请求,右键,复制为,curl(bash 形式)

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具