【问题标题】:Weird Response While Scraping Data Using Python Requests Library使用 Python 请求库抓取数据时的奇怪响应
【发布时间】:2021-08-02 12:16:18
【问题描述】:

我正在尝试使用 Python 的请求库从“https://tradingtick.com/backtest/position-strategy-backtest.php”中抓取数据。

我正在使用以下代码来抓取到期列表。输入是通过检查开发者控制台的网络选项卡获得的。虽然我在开发人员的控制台中看到了响应,但我的 python 脚本产生了一个奇怪的加密(我假设)响应。

请帮助理解问题。谢谢!

代码-

    import requests

    strategy_backtest_url = "https://tradingtick.com/backtest/position-strategy-backtest.php"

strategy_backtest_header = {
    "Accept": "application/json, text/plain, */*",
    "Accept-Encoding": "gzip, deflate, br",
    "Accept-Language": "en-US,en;q=0.9,hi;q=0.8",
    "Connection": "keep-alive",
    "Content-Type": "application/json;charset=UTF-8",
    "DNT": "1",
    "Host": "tradingtick.com",
    "Origin": "https://tradingtick.com",
    "Referer": "https://tradingtick.com/backtest/position-strategy-backtest.php",
    "sec-ch-ua": "\" Not;A Brand\";v=\"99\", \"Microsoft Edge\";v=\"91\", \"Chromium\";v=\"91\"",
    "sec-ch-ua-mobile": "?0",
    "Sec-Fetch-Dest": "empty",
    "Sec-Fetch-Mode": "cors",
    "Sec-Fetch-Site": "same-origin",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.64"
    }
   underlying = "banknifty"

   option_expiries = requests.post(strategy_backtest_url, headers = strategy_backtest_header, json = {"type":"expiry", "underlying":underlying})

产生以下输出

print(option_expiries.text)

"\x03�\x00\x00D�M��7i��\x1f�%H\x04�� ���\x03�Y\x01\x06@\t'x@z\x07\x15����q���|��i�\x03�1�K:�\x02/j\x19\x1c�:48q�\x01%���\x1dА%ے�H�$�\t*�a\x00\x03"
    

【问题讨论】:

  • 上面的代码对我来说似乎执行得很好,我可以看到一个到期列表作为输出。
  • 这很奇怪。又试了一次。但是给我上面的垃圾。
  • 您使用的 python 和请求库版本是什么?

标签: python web-scraping python-requests


【解决方案1】:

在调用 r.text 之前指定您的编码(在 r.encoding 中):

import requests
r = requests.get('https://www.example.com')
r.encoding = 'utf-8'  # specify UTF-8 encoding
print(r.text)

【讨论】:

  • 提供关注。非预期数据....... b"\x03\xef\xbf\xbd\x00\x00D\xef\xbf\xbdM\xef\xbf\xbd\xef\xbf\xbd7i\xef\xbf\xbd\xef \xbf\xbd\x1f\xef\xbf\xbd%H\x04\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\x03\xef \xbf\xbdY\x01\x06@\t'x@z\x07\x15\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdq\xef\xbf\xbd\ xef\xbf\xbd\xef\xbf\xbd|\xef\xbf\xbd\xef\xbf\xbdi\xef\xbf\xbd\x03\xef\xbf\xbd1\xef\xbf\xbdK:\xef\xbf\ xbd\x02/j\x19\x1c\xef\xbf\xbd:48q\xef\xbf\xbd\x01%\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\x1d\xd0\x90 %\xdb\x92\xef\xbf\xbdH\xef\xbf\xbd$\xef\xbf\xbd\t*\xef\xbf\xbda\x00\x03"
  • 在调用 r.text 函数之前尝试指定它
【解决方案2】:

尝试删除 strategy_backtest_header

中“accept-encoding”行中的“br

发件人:

"Accept-Encoding": "gzip, deflate, br"

收件人:

"Accept-Encoding": "gzip, deflate"

如果这没有帮助,请尝试完全删除“Accept-Encoding”行以不请求压缩。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-17
    • 2017-09-04
    • 1970-01-01
    • 2020-08-13
    • 1970-01-01
    • 1970-01-01
    • 2021-01-24
    相关资源
    最近更新 更多