用Python收集历史30年期国债价格

时间:2013-07-08 19:43:08

标签: python post input web

我正在使用网站https://www.treasurydirect.gov/GA-FI/FedInvest/selectSecurityPriceDate.htm

通过本网站,我可以根据债券的CUSIP数量获取历史债券价格。我正在尝试构建一个图表来显示特定债券的历史价格,但该网站不支持此功能。相反,它允许用户查找特定日期。

我很好奇是否有一种方法在Python中输入我想要查找的日期,然后将这些日期“发布”到网站并阅读生成的网页以搜索我的特定CUSIP并构建日期和价格的字典为了以图形方式显示和解释这些数据。

如果输入日期会将您带到可以在地址中操作的网站的特定目录,这将是一项简单的任务,但不幸的是,网站的设置方式似乎是一个显示相应的内置程序每天的图表。如果有人能帮助我,我会非常感激!

我尝试使用urllib2和Request函数发送带有priceData.day,month和year参数的dict,但它没有打开正确的网页。

import urllib2
def URLRequest(url, params, method="GET"):
    if method == "POST":
        return urllib2.Request(url, data=urllib.urlencode(params))
    else:
        return urllib2.Request(url + "?" + urllib.urlencode(params))
data = URLRequest("https://www.treasurydirect.gov/GA-FI/FedInvest/selectSecurityPriceDate.htm",{"priceData.month":"7","priceData.day":"8","priceData.year":"2013"}, method="POST")
response = urllib2.urlopen(data)
response.read()
[Out]: The source file of the website without displaying the information I need

1 个答案:

答案 0 :(得分:1)

POST数据中需要submit=Show+Prices页。

我在linux上用curl测试了它。

如果没有submit=Show+Prices,这会给我正常的页面:

curl -k https://www.treasurydirect.gov/GA-FI/FedInvest/selectSecurityPriceDate.htm -d "priceDate.month=7&priceDate.day=8&priceDate.year=2013"

使用submit=Show+Prices,这会为我提供数据页面:

curl -k https://www.treasurydirect.gov/GA-FI/FedInvest/selectSecurityPriceDate.htm -d "priceDate.month=7&priceDate.day=8&priceDate.year=2013&submit=Show+Prices"