【发布时间】:2019-09-22 20:46:52
【问题描述】:
对 Python 完全陌生,我正试图陷入困境,但我在处理请求时遇到了困难。我为一个小型加密货币项目运行一个节点,并尝试创建一个 python 脚本,该脚本可以抓取我的钱包值并将其电报给我一天一次,我已经管理了电报机器人,并且我已经使用 BeautifulSoup 练习了提取值从一个来源很好,它只是得到一个包含我的平衡的响应,这让我感到沮丧。
这是我余额所在的 URL:https://www.hpbscan.org/address/0x7EC332476fCA4Bcd20176eE06F16960b5D49333e/
值明显发生了变化,所以我认为我不能只对上面的页面做一个 get 请求并将其解析为漂亮的汤,所以我加载了开发者工具并看到有一个 post 请求:
方法: POST
网址: https://www.hpbscan.org/HpbScan/addrs/getAddressDetailInfo
请求标头:
主持人:www.hpbscan.org
用户代理:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0
接受:/
接受语言:en-GB,en;q=0.5
接受编码:gzip、deflate、br
X-Requested-With: XMLHttpRequest
内容类型:application/json;charset=utf-8
内容长度:46
DNT:1
连接:保持活动
推荐人:https://www.hpbscan.org/address/0x7EC332476fCA4Bcd20176eE06F16960b5D49333e/
编译指示:无缓存
缓存控制:无缓存
请求正文: [“0x7EC332476fCA4Bcd20176eE06F16960b5D49333e”]
响应(至少在浏览器中)是 JSON 格式的数据,确实包含我需要的余额。
到目前为止,我在这里尝试重新创建上述请求:
import requests
import json
url = "https://www.hpbscan.org/HpbScan/addrs/getAddressDetailInfo"
payload = '["0x7EC332476fCA4Bcd20176eE06F16960b5D49333e"]'
headers = """
'Host': 'www.hpbscan.org'
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0'
'Accept': '*/*'
'Accept-Language': 'en-GB,en;q=0.5'
'Accept-Encoding': 'gzip, deflate, br'
'X-Requested-With': 'XMLHttpRequest'
'Content-Type': 'application/json;charset=utf-8'
'Content-Length': '46'
'DNT': '1'
'Connection': 'keep-alive'
'Referer': 'https://www.hpbscan.org/address/0x7EC332476fCA4Bcd20176eE06F16960b5D49333e/'
'Pragma': 'no-cache'
'Cache-Control': 'no-cache'
"""
data = requests.post(url, data=payload, headers=headers)
print(data.text)
我以前从未使用过请求,所以我有点不知所措,我尝试过根据我可以看到其他人所做的事情来摆弄东西,但这没有用,目前我收到“AttributeError:' str' 对象没有属性 'items'。
我想这可能是因为我没有正确指定请求标头和正文,或者可能是因为响应是我的代码无法理解的 json 格式?
任何帮助将不胜感激:)
【问题讨论】:
-
尝试将标题更改为
dict。
标签: python json python-3.x post python-requests