1 回答
TA贡献1797条经验 获得超4个赞
小背景
有很多网站根据用户活动(例如您填写用户名和密码的登录页面)或单击按钮,使用称为表单的东西将数据发送到服务器。这里正在发生类似的事情。
我怎么知道的?
更改默认页面并转到Kraken 历史数据页面。您会看到网址已更改为https://www.investing.com/crypto/bitcoin/btc-usd-historical-data?cid=49799。
现在,右键单击页面并单击Inspect。查看刚刚打开的分屏的最上面一行。单击网络选项卡。此选项卡将显示您在浏览器中访问的任何网页的请求/响应周期。
搜索您看到的红色按钮旁边的清除按钮,然后单击它。现在,你有一个干净的石板。当您更改该页面上的日期时,您将能够看到发送到服务器的请求。
根据您的需要更改日期,然后单击Apply。您将看到一个名为HistoricalDataAjax的请求已发送到服务器(请参阅下面的附加图片以获得更清晰的信息)。单击它并在“标题”选项卡中向下滚动。您可以看到名为Form Data的部分。这是发送到服务器的额外隐藏(尚未如此隐藏)的信息。它作为POST请求发送,因为您在 url 中没有看到任何更改。
您还可以在同一标题部分看到请求 URL是https://www.investing.com/instruments/HistoricalDataAjax
现在做什么?
你需要聪明,在你的 python 代码中进行3 处更改。
将请求从GET更改为POST。
发送表单数据作为该请求的有效负载。
将 url 更改为您刚刚在“标题”选项卡中看到的那个。
url = " https://www.investing.com/instruments/HistoricalDataAjax "
payload = {'header': 'BTC/USD Kraken 历史数据', 'st_date': '12/01/2018', 'end_date': '12/01/2018', 'sort_col': 'date', 'action ':'历史数据','smlID':'145284','sort_ord':'DESC','interval_sec':'每日','curr_id':'49799'}
requests.post(url, data=payload, headers=urlheader)
进行上述更改并让代码的其他部分保持不变。你会得到你想要的结果。您也可以根据需要修改日期。
添加回答
举报