|
@@ -7,64 +7,156 @@ import (
|
|
"io/ioutil"
|
|
"io/ioutil"
|
|
"log"
|
|
"log"
|
|
"net/http"
|
|
"net/http"
|
|
|
|
+
|
|
|
|
+ util "qfw/util"
|
|
|
|
+ "time"
|
|
)
|
|
)
|
|
|
|
|
|
var client *http.Client
|
|
var client *http.Client
|
|
var urlPrefix string
|
|
var urlPrefix string
|
|
|
|
+var headMap map[string]string
|
|
|
|
+var config map[string]interface{} //配置文件
|
|
|
|
+var currentpage, maxpage, timesleep, count int //当前页、最大页、延时、计数器
|
|
|
|
|
|
-func main() {
|
|
|
|
|
|
+func init() {
|
|
tr := &http.Transport{
|
|
tr := &http.Transport{
|
|
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
|
|
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
|
|
}
|
|
}
|
|
client = &http.Client{Transport: tr}
|
|
client = &http.Client{Transport: tr}
|
|
|
|
+ headMap = make(map[string]string)
|
|
|
|
+ util.ReadConfig(&config)
|
|
|
|
+ urlPrefix = config["urlPrefix"].(string)
|
|
|
|
+ currentpage = int(config["currentpage"].(float64))
|
|
|
|
+ maxpage = int(config["maxpage"].(float64))
|
|
|
|
+ timesleep = int(config["timesleep"].(float64))
|
|
|
|
+ headMap["AreaCode"] = config["AreaCode"].(string)
|
|
|
|
+}
|
|
|
|
+func main() {
|
|
|
|
+ //异常名录
|
|
|
|
+ for i := currentpage; i < maxpage; i++ {
|
|
|
|
+ log.Println(headMap["AreaCode"], "正在下载第"+fmt.Sprint(i)+"页数据")
|
|
|
|
+ GetRegSession() //设备注册
|
|
|
|
|
|
- //查询企业
|
|
|
|
- urlPrefix = "https://120.52.121.75:8443"
|
|
|
|
- headMap := make(map[string]string)
|
|
|
|
- headMap["AreaCode"] = "410000"
|
|
|
|
- headMap["Url"] = urlPrefix + "/QuerySummary?AreaCode=" + headMap["AreaCode"] + "&Page=1&Limit=50&Q=郑州赛驰计算机"
|
|
|
|
- headMap["Cookie"] = "352284048787547"
|
|
|
|
- headMap["User-Agent"] = "Mozilla/5.0 (Android;4.0.1;MANUFACTURER;Pro5);Version/ErrorVersion;ISN_GSXT"
|
|
|
|
- body := SetHeader(headMap)
|
|
|
|
-
|
|
|
|
- result1 := make(map[string]interface{})
|
|
|
|
- json.Unmarshal(body, &result1)
|
|
|
|
- //fmt.Println(result1["RESULT"])
|
|
|
|
- infolist := result1["RESULT"].([]interface{})
|
|
|
|
|
|
+ headMap["Url"] = urlPrefix + "/QueryAbn?AreaCode=" + headMap["AreaCode"] + "&Q=&Page=" + fmt.Sprint(i) + "&Limit=20&Item=1"
|
|
|
|
+ body := DownContent(headMap)
|
|
|
|
+ result := make(map[string]interface{})
|
|
|
|
+ json.Unmarshal(body, &result)
|
|
|
|
+ log.Println("异常名录", result)
|
|
|
|
+ list := result["RESULT"].([]interface{})
|
|
|
|
+ for _, v := range list {
|
|
|
|
+ tmp := v.(map[string]interface{})
|
|
|
|
+ if tmp["REGNO"] != nil {
|
|
|
|
+ DownloadInfo(fmt.Sprint(tmp["REGNO"]))
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ currentpage = i
|
|
|
|
+ if i == maxpage {
|
|
|
|
+ i = 1
|
|
|
|
+ currentpage = 1
|
|
|
|
+ }
|
|
|
|
+ config["currentpage"] = currentpage
|
|
|
|
+ util.WriteSysConfig(&config)
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func DownloadInfo(qstr string) {
|
|
|
|
+ //查询结果--名录
|
|
|
|
+ headMap["Url"] = urlPrefix + "/QuerySummary?AreaCode=" + headMap["AreaCode"] + "&Page=1&Limit=50&Q=" + qstr
|
|
|
|
+ body := DownContent(headMap)
|
|
|
|
+ //log.Println("body", headMap["Url"], string(body))
|
|
|
|
+ result := make(map[string]interface{})
|
|
|
|
+ json.Unmarshal(body, &result)
|
|
|
|
+ log.Println("查询结果--名录", result)
|
|
|
|
+
|
|
|
|
+ infolist := result["RESULT"].([]interface{})
|
|
var ID, REGNO string
|
|
var ID, REGNO string
|
|
- for _, v := range infolist {
|
|
|
|
|
|
+ for _, v := range infolist { //取第一条有效数据
|
|
ID = fmt.Sprint((v.(map[string]interface{}))["ID"])
|
|
ID = fmt.Sprint((v.(map[string]interface{}))["ID"])
|
|
REGNO = fmt.Sprint((v.(map[string]interface{}))["REGNO"])
|
|
REGNO = fmt.Sprint((v.(map[string]interface{}))["REGNO"])
|
|
|
|
+ if ID != "" {
|
|
|
|
+ break
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
+ GSGSDownload(ID, REGNO) //工商公示
|
|
|
|
+ QYGSDownload(ID, REGNO) //企业公示
|
|
|
|
+}
|
|
|
|
|
|
- //下载工商公示信息
|
|
|
|
|
|
+//下载工商公示信息
|
|
|
|
+func GSGSDownload(ID, REGNO string) {
|
|
headMap["Url"] = urlPrefix + "/QueryGSInfo?AreaCode=" + headMap["AreaCode"] + "&EntId=" + ID + "&EntNo=" + REGNO + "&Info=All"
|
|
headMap["Url"] = urlPrefix + "/QueryGSInfo?AreaCode=" + headMap["AreaCode"] + "&EntId=" + ID + "&EntNo=" + REGNO + "&Info=All"
|
|
- body = SetHeader(headMap)
|
|
|
|
-
|
|
|
|
- fmt.Println("工商公示", string(body))
|
|
|
|
- tmp1 := make(map[string]interface{})
|
|
|
|
- json.Unmarshal(body, &tmp1)
|
|
|
|
- baseInfo := tmp1["RESULT"].(map[string]interface{})
|
|
|
|
- REGINFO := baseInfo["REGINFO"].(map[string]interface{})
|
|
|
|
- LEGINFO := REGINFO["LEGINFO"].([]interface{})
|
|
|
|
- fmt.Println("股东列表", LEGINFO)
|
|
|
|
|
|
+ body := DownContent(headMap)
|
|
|
|
+ log.Println("查询结果--工商公示", string(body))
|
|
|
|
+
|
|
|
|
+ tmp := make(map[string]interface{})
|
|
|
|
+ json.Unmarshal(body, &tmp)
|
|
|
|
+ baseInfo, b := tmp["RESULT"].(map[string]interface{})
|
|
|
|
+ if !b {
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ /****************登记信息*************/
|
|
|
|
+ //登记信息(REGINFO) 基本信息、股东列表、变更信息
|
|
|
|
+ djxx := baseInfo["REGINFO"].(map[string]interface{})
|
|
|
|
+ //基本信息
|
|
|
|
+ BaseMap := djxx["BASEINFO"].(map[string]interface{})
|
|
|
|
+ //股东列表
|
|
|
|
+ LEGINFO := djxx["LEGINFO"].([]interface{})
|
|
|
|
+ gdList := []interface{}{}
|
|
//股东详情
|
|
//股东详情
|
|
for k, v := range LEGINFO {
|
|
for k, v := range LEGINFO {
|
|
gd := v.(map[string]interface{})
|
|
gd := v.(map[string]interface{})
|
|
headMap["Url"] = urlPrefix + "/QueryGSDetail?Id=" + fmt.Sprint(gd["ID"]) + "&AreaCode=" + headMap["AreaCode"] + "&EntId=" + ID + "&EntNo=" + REGNO + "&Item=LegDetail"
|
|
headMap["Url"] = urlPrefix + "/QueryGSDetail?Id=" + fmt.Sprint(gd["ID"]) + "&AreaCode=" + headMap["AreaCode"] + "&EntId=" + ID + "&EntNo=" + REGNO + "&Item=LegDetail"
|
|
- body = SetHeader(headMap)
|
|
|
|
- fmt.Println(k, string(body))
|
|
|
|
|
|
+ body = DownContent(headMap)
|
|
|
|
+ log.Println("查询结果--股东", k, string(body))
|
|
|
|
+ tmp := make(map[string]interface{})
|
|
|
|
+ json.Unmarshal(body, &tmp)
|
|
|
|
+ gdList = append(gdList, tmp)
|
|
}
|
|
}
|
|
|
|
+ BaseMap["investors"] = gdList
|
|
|
|
+ //变更信息
|
|
|
|
+ bgxxs := djxx["CHGINFO"].([]interface{})
|
|
|
|
+ BaseMap["alterInfos"] = bgxxs
|
|
|
|
+ /****************登记信息结束*************/
|
|
|
|
|
|
- //下载企业公示信息
|
|
|
|
- headMap["Url"] = urlPrefix + "/QueryQY?AreaCode=" + headMap["AreaCode"] + "&EntId=" + ID + "&EntNo=" + REGNO + "&Info=All"
|
|
|
|
- body = SetHeader(headMap)
|
|
|
|
|
|
+ //经营异常
|
|
|
|
+ BaseMap["excDirects"] = baseInfo["EXCEINFO"].([]interface{})
|
|
|
|
+ //动产抵押
|
|
|
|
+ BaseMap["mortInfos"] = baseInfo["MORTINFO"].([]interface{})
|
|
|
|
+ //抽查检查
|
|
|
|
+ BaseMap["spotChecks"] = baseInfo["CHECKINFO"].([]interface{})
|
|
|
|
+ //行政处罚
|
|
|
|
+ BaseMap["punishInfos"] = baseInfo["PUNINFO"].([]interface{})
|
|
|
|
+
|
|
|
|
+ /****************备案信息*************/
|
|
|
|
+ //备案信息(RECINFO) 主要人员、分支机构、清算组
|
|
|
|
+ baxx := baseInfo["RECINFO"].(map[string]interface{})
|
|
|
|
+ //主要人员
|
|
|
|
+ BaseMap["staffinfos"] = baxx["PERINFO"].([]interface{})
|
|
|
|
+ //分支机构
|
|
|
|
+ BaseMap["childents"] = baxx["BRANINFO"].([]interface{})
|
|
|
|
+ //清算组
|
|
|
|
+ BaseMap["liquidationo"] = baxx["LIQINFO"].(map[string]interface{})
|
|
|
|
+ /****************备案信息结束*************/
|
|
|
|
+
|
|
|
|
+ //严重违法
|
|
|
|
+ BaseMap["serIllInfo"] = baseInfo["LAWINFO"].([]interface{})
|
|
|
|
+ //股权出质
|
|
|
|
+ BaseMap["pledgeInfos"] = baseInfo["EQUINFO"].([]interface{})
|
|
|
|
+
|
|
|
|
+ //log.Println("BaseMap", BaseMap)
|
|
|
|
+}
|
|
|
|
|
|
|
|
+//下载企业公示信息
|
|
|
|
+func QYGSDownload(ID, REGNO string) {
|
|
|
|
+ headMap["Url"] = urlPrefix + "/QueryQY?AreaCode=" + headMap["AreaCode"] + "&EntId=" + ID + "&EntNo=" + REGNO + "&Info=All"
|
|
|
|
+ body := DownContent(headMap)
|
|
//企业年报信息
|
|
//企业年报信息
|
|
- result2 := make(map[string]interface{})
|
|
|
|
- json.Unmarshal(body, &result2)
|
|
|
|
- tmp2 := result2["RESULT"].(map[string]interface{})
|
|
|
|
- nblist := tmp2["REPORTINFO"].([]interface{})
|
|
|
|
|
|
+ result := make(map[string]interface{})
|
|
|
|
+ json.Unmarshal(body, &result)
|
|
|
|
+ tmp, b := result["RESULT"].(map[string]interface{})
|
|
|
|
+ if !b {
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ nblist := tmp["REPORTINFO"].([]interface{})
|
|
nb := make(map[string]interface{})
|
|
nb := make(map[string]interface{})
|
|
for _, v := range nblist {
|
|
for _, v := range nblist {
|
|
nb = v.(map[string]interface{})
|
|
nb = v.(map[string]interface{})
|
|
@@ -72,13 +164,14 @@ func main() {
|
|
break
|
|
break
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- //fmt.Println(nb)
|
|
|
|
nbId := fmt.Sprint(nb["ID"])
|
|
nbId := fmt.Sprint(nb["ID"])
|
|
headMap["Url"] = urlPrefix + "/QueryQYReport?Id=" + nbId + "&AreaCode=" + headMap["AreaCode"] + "&EntId=" + ID + "&EntNo=" + REGNO + "&Info=All"
|
|
headMap["Url"] = urlPrefix + "/QueryQYReport?Id=" + nbId + "&AreaCode=" + headMap["AreaCode"] + "&EntId=" + ID + "&EntNo=" + REGNO + "&Info=All"
|
|
- body = SetHeader(headMap)
|
|
|
|
- fmt.Println("年报", string(body))
|
|
|
|
|
|
+ body = DownContent(headMap)
|
|
|
|
+ fmt.Println("查询结果--年报", string(body))
|
|
}
|
|
}
|
|
-func SetHeader(headMap map[string]string) []byte {
|
|
|
|
|
|
+
|
|
|
|
+//下载内容
|
|
|
|
+func DownContent(headMap map[string]string) []byte {
|
|
req, _ := http.NewRequest("GET", headMap["Url"], nil)
|
|
req, _ := http.NewRequest("GET", headMap["Url"], nil)
|
|
//req, _ := http.NewRequest("GET", "https://120.52.121.75:8443/QueryAutoName?AreaCode=410000&Q=计算机&Size=5", nil)
|
|
//req, _ := http.NewRequest("GET", "https://120.52.121.75:8443/QueryAutoName?AreaCode=410000&Q=计算机&Size=5", nil)
|
|
req.Header.Add("User-Agent", headMap["User-Agent"])
|
|
req.Header.Add("User-Agent", headMap["User-Agent"])
|
|
@@ -90,6 +183,7 @@ func SetHeader(headMap map[string]string) []byte {
|
|
log.Println(err.Error())
|
|
log.Println(err.Error())
|
|
return nil
|
|
return nil
|
|
}
|
|
}
|
|
|
|
+ time.Sleep(time.Duration(timesleep) * time.Second)
|
|
defer resp.Body.Close()
|
|
defer resp.Body.Close()
|
|
body, err := ioutil.ReadAll(resp.Body)
|
|
body, err := ioutil.ReadAll(resp.Body)
|
|
if err != nil {
|
|
if err != nil {
|
|
@@ -98,3 +192,14 @@ func SetHeader(headMap map[string]string) []byte {
|
|
}
|
|
}
|
|
return body
|
|
return body
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+//设备注册
|
|
|
|
+func GetRegSession() (imei, modal string) {
|
|
|
|
+ imei = IMEI()
|
|
|
|
+ modal = Modal()
|
|
|
|
+ headMap["Cookie"] = imei
|
|
|
|
+ headMap["User-Agent"] = "Mozilla/5.0 (Android;4.4.4;" + modal + ");Version/ErrorVersion;ISN_GSXT"
|
|
|
|
+ headMap["Url"] = urlPrefix + "/QuerySite?OS=Android;" + modal + "&IMEI=" + imei
|
|
|
|
+ DownContent(headMap)
|
|
|
|
+ return imei, modal
|
|
|
|
+}
|