如何使用发布方法从Fundsupermart获取债券数据?

时间:2019-07-02 09:48:05

标签: python-requests http-post x-xsrf-token

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

我检查了页面,可以在Network-XHR中找到数据,名称为XS1415758991。名称是债券ISIN代码。然后,我找到了名称后面的链接。 “ https://secure.fundsupermart.com/fsm/rest/bond-info/get-bond-factsheet-data/XS1415758991”。在标题中,我还找到了“ x-xsrf令牌: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

我尝试了以下代码,但回答:“'找不到预期的CSRF令牌。您的会话是否已过期?'”。我希望在“,” bondPriceJsonHashmap”-“ THREE_YEAR”中获取数据

1 个答案:

答案 0 :(得分:0)

我自己解决了这个问题。解决方案很简单。 1)在Cookie中找到令牌 2)发布到网址。

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