/// <summary> /// 取得sii 法人持股 /// </summary> /// <param name="url"></param> /// <returns></returns> public List <ForeignOwnViewModel> GetSiiForeignOwnInfo(string url) { var list = new List <ForeignOwnViewModel>(); using (WebClient wc = new WebClient()) { wc.Encoding = Encoding.UTF8; var json = wc.DownloadString(url); if (json.Contains("很抱歉")) { return(null); } var ssi = JsonConvert.DeserializeObject <sii3BigModel>(json); foreach (var item in ssi.data) { if (item[0].Length != 4) { continue; } var temp = new ForeignOwnViewModel(item, "sii"); list.Add(temp); } } return(list); }
/// <summary> /// 取得otc 法人持股 /// </summary> /// <param name="url"></param> /// <returns></returns> public List <ForeignOwnViewModel> GetOtcForeignOwnInfo(string url, DateTime date) { //params : years, months, days, step var list = new List <ForeignOwnViewModel>(); var doc = new HtmlAgilityPack.HtmlDocument(); //下載html using (var myWebClient = new WebClient()) { byte[] response = myWebClient.UploadValues(url, new NameValueCollection() { { "years", date.Year.ToString() }, { "months", date.Month.ToString("00") }, { "days", date.Day.ToString("00") }, { "step", "2" } }); string page = System.Text.Encoding.GetEncoding("Big5").GetString(response); doc.LoadHtml(page); } //解析html string xpathTemplate = "/html/body/center/table[1]/tr[{0}]/td"; try { for (int i = 3; i < 900; i++) { HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes(string.Format(xpathTemplate, i)); if (nodes != null) { var temp = new ForeignOwnViewModel() { Code = int.Parse(nodes[0].InnerText.Trim()), //Code A_Own = (long)float.Parse(nodes[4].InnerText.Trim()), //持股數 A_OwnP = double.Parse(nodes[6].InnerText.Trim().Replace(" ", "")) //持股比 }; list.Add(temp); } } } catch (Exception ex) { throw ex; } return(list); }