【问题标题】:Using Python to Collect Historical 30yr Treasury Bond Prices使用 Python 收集历史 30 年国债价格
【发布时间】:2013-07-08 19:43:07
【问题描述】:

我正在使用网站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

【问题讨论】:

  • 欢迎来到 Stack Overflow!看起来您希望我们为您编写一些代码。虽然许多用户愿意为陷入困境的编码人员编写代码,但他们通常只有在发布者已经尝试自己解决问题时才会提供帮助。展示这项工作的一个好方法是包含您迄今为止编写的代码、示例输入(如果有的话)、预期输出和您实际获得的输出(控制台输出、堆栈跟踪、编译器错误 - 不管是什么适用的)。您提供的详细信息越多,您可能收到的答案就越多。
  • 我刚投了,请不要投反对票...
  • 我在您的帖子中没有看到任何代码。我没有看到错误消息,也没有看到您的输出或输入。
  • 我用文字解释了,现在我已经包含了我的代码
  • 真实浏览器也发送submit=Show+Pricescookiesuser-agent。也许服务器检查 cookie 和/或用户代理并发送不同的结果。

标签: python post input web


【解决方案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"

【讨论】:

  • 你太棒了。非常感谢,我会在完成后发布我的代码。
  • 我在这里发布了另一个问题 - stackoverflow.com/questions/17550235/… 你能帮我解决这个问题吗?好像有关系
  • 不客气。我(有时)使用 urllib 和 pyquery 进行网络抓取。我使用 curl 和 firebug(在 Firefox 中)来提供帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-13
  • 2017-01-08
  • 2011-03-23
  • 1970-01-01
  • 2016-06-30
  • 2017-08-19
  • 1970-01-01
相关资源
最近更新 更多