在Python中创建POST请求
对于Python来说,这是一个全新的概念,我正试图陷入其中,但我在处理请求。我为一个小型加密货币项目运行了一个节点,并试图创建一个python脚本,它可以刮取我的钱包值并每天给我发一次电报,我管理了电报机器人,我还与BeautifulSoup一起练习从源代码中提取值。很好,只是得到了一个包含我的余额的响应,这让我很沮丧 以下是我的余额所在的URL: 该值显然发生了变化,因此我不认为我可以对上面的页面执行get请求并将其解析为beautiful soup,因此我加载了开发人员工具并看到有一个post请求: 方法:发布在Python中创建POST请求,python,json,python-3.x,post,python-requests,Python,Json,Python 3.x,Post,Python Requests,对于Python来说,这是一个全新的概念,我正试图陷入其中,但我在处理请求。我为一个小型加密货币项目运行了一个节点,并试图创建一个python脚本,它可以刮取我的钱包值并每天给我发一次电报,我管理了电报机器人,我还与BeautifulSoup一起练习从源代码中提取值。很好,只是得到了一个包含我的余额的响应,这让我很沮丧 以下是我的余额所在的URL: 该值显然发生了变化,因此我不认为我可以对上面的页面执行get请求并将其解析为beautiful soup,因此我加载了开发人员工具并看到有一个pos
网址: 请求头:
主持人: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-request-With:XMLHttpRequest
内容类型:application/json;字符集=utf-8
内容长度:46
DNT:1
连接:保持活动状态
推荐人:
Pragma:没有缓存
缓存控制:无缓存
请求正文: [“0x7EC332476FCA4BCD20176EE06F16960B5D4933E”] 响应(至少在浏览器中)是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。下面是您的最终代码:
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)
标题应该是字典
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(json.loads(data))
最后一位将从浏览器获得的响应转换为python字典,以便您可以继续在代码中使用它。尝试将标题更改为
dict
。请阅读