1、雪球网数据接口使用说明:
https://xueqiu.com/stock/forchartk/stocklist.json?symbol=代码&period=1day&type=复权还是不复权&begin=开始时间时间戳&end=结束时间时间戳&_=结束时间时间戳
地址参数:上海股票在编号前加SH,深圳股票,在编号前加SZ,period代表的时间间隔,复权不复权使用after和before表示,开始时间和结束时间要用时间戳表示。
注意访问下面的网址前要先点击https://xueqiu.com/,进入一次官网,然后在http头中才能记录你的数据,然后才能通过下面的网址获取数据。
2、网址例子、https://xueqiu.com/stock/forchartk/stocklist.json?symbol=SH600756&period=1day&type=before&begin=1478620800000&end=1510126200000&_=1510126200000
3、要求:使用C#完成获取雪球网json数据,需要给出测试结果,demo给出的结果只要symbol(股票代码)volume、open即可
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
using System.Web.Script.Serialization;
namespace Q695687
{
[Serializable]
class MyStock
{
public string symbol { get; set; }
}
[Serializable]
class MyItem
{
public string volume { get; set; }
public string open { get; set; }
}
[Serializable]
class MyJson
{
public MyStock stock { get; set; }
public string success { get; set; }
public List<MyItem> chartlist { get; set; }
}
class Program
{
static void Main(string[] args)
{
WebRequest req = HttpWebRequest.Create("https://xueqiu.com/stock/forchartk/stocklist.json?symbol=SH600756&period=1day&type=before&begin=1478620800000&end=1510126200000&_=1510126200000");
req.Method = "GET";
req.Headers.Add("Cookie: aliyungf_tc=AQAAAHToHii4UgkA+PHteUhWTRZyq+2m; xq_a_token=aef774c17d4993658170397fcd0faedde488bd20; xq_a_token.sig=F7BSXzJfXY0HFj9lqXif9IuyZhw; xq_r_token=d694856665e58d9a55450ab404f5a0144c4c978e; xq_r_token.sig=Ozg4Sbvgl2PbngzIgexouOmvqt0; Hm_lvt_1db88642e346389874251b5a1eded6e3=1532446045; Hm_lpvt_1db88642e346389874251b5a1eded6e3=1532446045; u=941532446046068; device_id=ed69614fd948813e0ee1aab73abcdd13");
var r = req.GetResponse();
var stream = r.GetResponseStream();
var reader = new StreamReader(stream, Encoding.UTF8);
string json = reader.ReadToEnd();
JavaScriptSerializer jss = new JavaScriptSerializer();
MyJson result = jss.Deserialize<MyJson>(json);
Console.WriteLine(result.stock.symbol);
for (int i = 0; i < 10; i++)
{
Console.WriteLine("\t" + result.chartlist[i].volume + " " + result.chartlist[i].open);
}
Console.WriteLine("\t" + "...");
}
}
}
作为演示,这里cookie获取我是写死的,你要看到运行效果,需要自己去抓cookie,方法如下:
用程序获取cookie这个你可以自己搜索下,如果搞不定的话,采纳本回答,我可以详细写给你。另外还可以给你写一个时间/时间戳数字的转换的代码。
完整代码:https://download.csdn.net/download/caozhy/10562078
时间戳的方便的话也发一下吧,谢谢
不好意思,才看到
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
using System.Web.Script.Serialization;
namespace Q695687
{
[Serializable]
class MyStock
{
public string symbol { get; set; }
}
[Serializable]
class MyItem
{
public string volume { get; set; }
public string open { get; set; }
}
[Serializable]
class MyJson
{
public MyStock stock { get; set; }
public string success { get; set; }
public List<MyItem> chartlist { get; set; }
}
class Program
{
static void Main(string[] args)
{
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("https://xueqiu.com/");
req.Method = "GET";
CookieContainer cc = new CookieContainer();
req.CookieContainer = cc;
var rs1 = req.GetResponse().GetResponseStream();
string cookiestr = req.CookieContainer.GetCookieHeader(req.RequestUri);
req = (HttpWebRequest)HttpWebRequest.Create("https://xueqiu.com/stock/forchartk/stocklist.json?symbol=SH600756&period=1day&type=before&begin=1478620800000&end=1510126200000&_=1510126200000");
req.Method = "GET";
req.Headers.Add("Cookie: " + cookiestr);
//req.Headers.Add("Cookie: aliyungf_tc=AQAAAHToHii4UgkA+PHteUhWTRZyq+2m; xq_a_token=aef774c17d4993658170397fcd0faedde488bd20; xq_a_token.sig=F7BSXzJfXY0HFj9lqXif9IuyZhw; xq_r_token=d694856665e58d9a55450ab404f5a0144c4c978e; xq_r_token.sig=Ozg4Sbvgl2PbngzIgexouOmvqt0; Hm_lvt_1db88642e346389874251b5a1eded6e3=1532446045; Hm_lpvt_1db88642e346389874251b5a1eded6e3=1532446045; u=941532446046068; device_id=ed69614fd948813e0ee1aab73abcdd13");
var r = req.GetResponse();
var stream = r.GetResponseStream();
var reader = new StreamReader(stream, Encoding.UTF8);
string json = reader.ReadToEnd();
JavaScriptSerializer jss = new JavaScriptSerializer();
MyJson result = jss.Deserialize<MyJson>(json);
Console.WriteLine(result.stock.symbol);
for (int i = 0; i < 20; i++)
{
Console.WriteLine("\t" + result.chartlist[i].volume + " " + result.chartlist[i].open);
}
Console.WriteLine("\t" + "...");
}
}
}
另外给你一个计算时间戳的代码:
static long gettimestamp(DateTime dt)
{
var span = new TimeSpan(dt.Ticks - new DateTime(1970, 1, 1).Ticks);
return (long)span.TotalMilliseconds;
}
使用例子:
Console.WriteLine(gettimestamp(DateTime.Now));
结果
1532593564270
你可以代入你的begin end的参数
begin=1478620800000&end=1510126200000