如何使用 post 方法从 fundsupermart 获取债券数据?

How to get bond data from fundsupermart using post method?

我正在尝试从此页面“https://secure.fundsupermart.com/fsm/bonds/factsheet/XS1415758991/DEGREE-7-250-03Jun2021-Corp-USD”获取债券数据。

我查看了页面,数据可以在Network-XHR中找到,名称是XS1415758991。名称是债券的 ISIN 代码。然后我找到了名字后面的link。 “https://secure.fundsupermart.com/fsm/rest/bond-info/get-bond-factsheet-data/XS1415758991”。在Headers中,我也找到了"x-xsrf-token: 38ccccd8-6cae-46a9-b916-2e80e607e107"。

import requests
url_bond = r'https://secure.fundsupermart.com/fsm/rest/bond-info/get-bond-factsheet-data/XS1415758991'
headers = {'Accept-Encoding': 'gzip', }
data = {"x-xsrf-token":'38ccccd8-6cae-46a9-b916-2e80e607e107'}
r = requests.post(url_bond,headers=headers, data = data)
r.text

我尝试了以下代码,但回复“'Expected CSRF token not found. Has your session expired?'”。我希望得到 ","bondPriceJsonHashmap"--"THREE_YEAR"

中的数据

我自己解决了这个问题。解决方法很简单。 1)在cookies中找到token 2) post 到 url。

URL = 'https://secure.fundsupermart.com/fsm/rest/bond-info/get-bond-factsheet-data/JK8897874'
client = requests.session()
client.get(URL)  # sets cookie
csrftoken = client.cookies['XSRF-TOKEN']
headers = {'x-xsrf-token':csrftoken}
r = client.post(URL, headers= headers)
r.content