// 深圳证券交易所上市公司 func (m China) shenzhenCompanies() ([]Company, error) { urls := [...]string{ "http://www.szse.cn/szseWeb/ShowReport.szse?SHOWTYPE=EXCEL&CATALOGID=1110&tab1PAGENUM=1&ENCODE=1&TABKEY=tab1", } var list []Company for _, url := range urls { // 尝试从网络获取实时上市公司列表 html, err := net.DownloadStringRetry(url, retryTimes, retryIntervalSeconds) if err != nil { return nil, err } // 深圳证券交易所的查询结果是GBK编码的,需要转成UTF8 html, err, _, _ = gogb2312.ConvertGB2312String(html) if err != nil { return nil, err } // 解析Html companies, err := m.parseShenzhenHTML(html) if err != nil { return nil, err } list = append(list, companies...) } return list, nil }
// 深圳证券交易所上市公司 func (m China) shenzhenCompanies() ([]Company, error) { urls := [...]string{ "http://www.szse.cn/szseWeb/FrontController.szse?ACTIONID=8&CATALOGID=1110&tab1PAGENUM=1&ENCODE=1&TABKEY=tab1", } list := make([]Company, 0) for _, url := range urls { // 尝试从网络获取实时上市公司列表 html, err := io.DownloadStringRetry(url, retryTimes, retryIntervalSeconds) if err != nil { return nil, err } // 深圳证券交易所的查询结果是GBK编码的,需要转成UTF8 html, err, _, _ = gogb2312.ConvertGB2312String(html) if err != nil { return nil, err } // 解析Html companies, err := m.parseShenzhenHtml(html) if err != nil { return nil, err } list = append(list, companies...) } return list, nil }
// parseShanghaiJSON 解析上海证券交易所上市公司 func (m China) parseShanghaiJSON(text string) ([]Company, error) { // 深圳证券交易所的查询结果是GBK编码的,需要转成UTF8 text, err, _, _ := gogb2312.ConvertGB2312String(text) if err != nil { return nil, err } // 使用正则分析json regex := regexp.MustCompile(`(\d{6}) (\S+) \d{6} \S+`) group := regex.FindAllStringSubmatch(text, -1) var companies []Company for _, section := range group { companies = append(companies, Company{Code: section[1], Name: section[2]}) } if len(companies) == 0 { return nil, fmt.Errorf("错误的上海证券交易所上市公司列表内容:%s", text) } return companies, nil }
func ConvToGB(str string) (res_str string) { conv_str, _, _, _ := gogb2312.ConvertGB2312String(str) return conv_str }