在python请求中发布数据时出错

问题描述 投票:1回答:1

在尝试使用python请求发布数据时,错误会从浏览器检查控制台引发实际表单数据:

 {"params":"query=&hitsPerPage=1000&facetFilters=%5B%5B%22catalogs%3A000buyvallencom%22%5D%2C%22active%3Atrue%22%2C%22slug%3A3m-05710-superbuff-pad-adapter-p8hg1vv3b6b2%22%2C%22active%3Atrue%22%5D"}

我曾尝试过以下方法:

session=requests.session()
    data={
        "params":"query=&hitsPerPage=1000&facetFilters=%5B%5B%22catalogs%3A000buyvallencom%22%5D%2C%22active%3Atrue%22%2C%22slug%3A3m-05710-superbuff-pad-adapter-p8hg1vv3b6b2%22%2C%22active%3Atrue%22%5D"
         }
    response = session.post('https://lcz09p4p1r-dsn.algolia.net/1/indexes/ecomm_production_products/query?x-algolia-agent=Algolia%20for%20AngularJS%203.32.0&x-algolia-application-id=LCZ09P4P1R&x-algolia-api-key=2d74cf84e190a2f9cd8f4fe6d32613cc',data=data)
    print(response.text)

但在发布时,收到错误

{"message":"lexical error: invalid char in json text. Around 'params=que' near line:1 column:1","status":400}
python-3.x web-scraping python-requests
1个回答
1
投票

API接受JSON编码的POST数据。在您的帖子请求中将data=data更改为json=data

从文档中

您也可以使用json参数(在版本2.4.2中添加)直接传递它而不是自己编码dict,它将自动编码:

>>> url = 'https://api.github.com/some/endpoint'
>>> payload = {'some': 'data'}

>>> r = requests.post(url, json=payload)

注意,如果传递了数据或文件,则忽略json参数。

在请求中使用json参数会将标头中的Content-Type更改为application / json。

import requests
session=requests.session()
url='https://lcz09p4p1r-dsn.algolia.net/1/indexes/ecomm_production_products/query?x-algolia-agent=Algolia%20for%20AngularJS%203.32.0&x-algolia-application-id=LCZ09P4P1R&x-algolia-api-key=2d74cf84e190a2f9cd8f4fe6d32613cc'
data={
"params":"query=&hitsPerPage=1000&facetFilters=%5B%5B%22catalogs%3A000buyvallencom%22%5D%2C%22active%3Atrue%22%2C%22slug%3A3m-05710-superbuff-pad-adapter-p8hg1vv3b6b2%22%2C%22active%3Atrue%22%5D"
}
response = session.post(url,json=data)
print(response.text)

产量

{"hits":[{"active":true,"heading":"05710 Superbuff Pad Adapter","heading_reversed":"Adapter Pad Superbuff 05710","subheading":"","features":"Our 3M™ Adaptors for Polishers are designed for saving time and hassle in collision repair jobs requiring double-sided screw-on compounding and polishing pads. It is part of a fast, effective assembly that incorporates our 3M™ Perfect-It™ Backup Pad and wool polishing pads, allowing users to quickly attach them without removing the adaptor. This durable adaptor is used with all polishers.<br>• Part of a complete assembly for compounding and polishing<br>• Designed to attach buffing pads or backup pads to machine polishers<br>• Helps reduce wear and vibration<br>• Users can change screw-on pads without removing the adaptor, saving time<br>• Provides hassle-free centering with 3M double-sided wool compounding and polishing pads","product_id":"P8HG1VV3B6B2","product_number":"IDG05114405710","brand":"","keywords":"sanding, polishing, buffing","image":"G8HI043XOD5X.jpg","image_type":"illustration","unspsc":"31191505","system":"sxe","cost":9.0039,"catalogs":["000BuyVallenCom"],"vendor":{"name":"3M","slug":"3m","vendor_id":"VACF1JS0AAP0","image":"G8HIP6V1J7UJ.jpg"},"taxonomy":{"department":{"name":"Paint, Marking & Tape","slug":"paint-marking-tape"},"category":{"name":"Filling, Polishing, Buffing","slug":"filling-polishing-buffing"},"style":{"name":"Adapters","slug":"adapters"},"type":{"name":"Pads","slug":"pads"},"vendor":{"name":"3M","slug":"3m"}},"slug":"3m-05710-superbuff-pad-adapter-p8hg1vv3b6b2","color":null,"material":null,"model":null,"model_number":null,"shape":null,"size":null,"display_brand":null,"style":null,"purpose":null,"product_type":null,"specifications":[],"item_specifications":[],"batch_id":"000BuyVallenCom-1551410144451","status":"Stk","erp":"05114405710","iref":null,"cpn":null,"gtin":"00051144057108","description":"05710 ADAPTOR 5/8 SHAFT SUPERBUFF","sequence":10,"item_id":"I8HG1VV6JL3B","vpn":"05710","uom":"Ea","specification_values":[],"objectID":"000BuyVallenCom-P8HG1VV3B6B2-I8HG1VV6JL3B","_highlightResult":{"heading_reversed":{"value":"Adapter Pad Superbuff 05710","matchLevel":"none","matchedWords":[]},"subheading":{"value":"","matchLevel":"none","matchedWords":[]},"brand":{"value":"","matchLevel":"none","matchedWords":[]},"taxonomy":{"style":{"name":{"value":"Adapters","matchLevel":"none","matchedWords":[]}}}}}],"nbHits":1,"page":0,"nbPages":1,"hitsPerPage":1000,"processingTimeMS":1,"exhaustiveNbHits":true,"query":"","params":"query=&hitsPerPage=1000&facetFilters=%5B%5B%22catalogs%3A000buyvallencom%22%5D%2C%22active%3Atrue%22%2C%22slug%3A3m-05710-superbuff-pad-adapter-p8hg1vv3b6b2%22%2C%22active%3Atrue%22%5D"}

文档

More complicated POST requests

Algolia API

© www.soinside.com 2019 - 2024. All rights reserved.