使用axios(节点)进行刮擦可以正常工作,但会因请求而失败(python)

时间:2018-04-10 20:17:59

标签: node.js python-3.x web-scraping python-requests axios

我正在尝试从webapp中删除一些数据。 api将返回JSON。

使用Node@8.11.1和axios@0.18.0我能够抓取数据

axios.post(url,
    {'data': {'item': null, 'category': null}},
        {headers: {'Authorization': '123'}}
        )
    .then((data) => {
     }
...

但使用带有Requests@2.18.4的Python@3.5.2失败。我得到了Http错误415

session = requests.Session()
session.headers.update({'Authorization': '123'})
session.post(url, {"data": {"item": None, "category": None}})

如果我添加Content-type标头,我会收到Http错误500

session.headers.update({'Content-Type': 'application/json;charset=utf-8'})

为什么我可以使用Node和Axios,但不能使用Python和请求?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

找到解决方案。 500错误与数据本身有关。

似乎我需要在发送之前序列化我的数据 - 使用 json.dumps()并添加" Content-Type"到我的帖子标题

import json
import requests


session = requests.Session()
session.headers.update({'Authorization': '123'})
session.headers.update({'Content-Type': 'application/json;charset=utf-8'})

session.post(url, json.dumps({"data": {"item": None, "category": None}}))