【问题标题】:Scraping with axios(node) works but fails with requests(python)使用 axios(node) 抓取有效,但请求失败(python)
【发布时间】:2018-04-10 20:17:59
【问题描述】:

我正在尝试从 web 应用中抓取一些数据。该 api 将返回 JSON。

将 Node@8.11.1 与 axios@0.18.0 一起使用,我可以抓取数据

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

但是将 Python@3.5.2 与 Requests@2.18.4 一起使用会失败。我收到 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 和 Requests?

感谢您的帮助

【问题讨论】:

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


    【解决方案1】:

    找到了解决办法。 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}}))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-07
      • 2020-11-26
      • 1970-01-01
      • 2020-07-08
      • 2017-10-14
      • 2020-12-15
      • 1970-01-01
      • 2020-09-27
      相关资源
      最近更新 更多