123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032 |
- package services
- import (
- "encoding/json"
- "eta/eta_data_analysis/models"
- "eta/eta_data_analysis/utils"
- "fmt"
- "github.com/PuerkitoBio/goquery"
- "strconv"
- "strings"
- "time"
- )
- var OilchemTaskAnalysisHandlers = map[string]func(htm []byte) (err error){
- "[产量/产能利用率]:中国甲醇产量及产能利用率": AnalysisOilchemJiaChun1,
- "库存周数据分析": AnalysisOilchemJiaChun2,
- "中国甲醇样本生产企业库存及订单待发周数据统计": AnalysisOilchemJiaChun3,
- "中国甲醇样本利润周数据统计": AnalysisOilchemJiaChun4,
- "中国甲醇产量及产能利用率": AnalysisOilchemJiaChun5,
- "中国甲醇下游样本产能利用率周数据": AnalysisOilchemJiaChun6,
- "中国甲醇样本生产企业库存及订单待发周数据分析": AnalysisOilchemJiaChun7,
- "中国尿素分原料产能利用率周数据统计": AnalysisOilchemNiaoSu1,
- "中国尿素样本生产理论利润周数据统计": AnalysisOilchemNiaoSu2,
- "中国尿素样本港口库存周数据统计": AnalysisOilchemNiaoSu3,
- "中国尿素产量周数据分析": AnalysisOilchemNiaoSu4,
- "中国尿素企业库存周数据分析": AnalysisOilchemNiaoSu5,
- "中国尿素样本港口库存周数据分析": AnalysisOilchemNiaoSu6,
- "中国尿素企业预收订单周数据分析": AnalysisOilchemNiaoSu7,
- "中国尿素样本理论利润周数据分析": AnalysisOilchemNiaoSu8,
- "中国复合肥产能利用率周数据统计": AnalysisOilchemNiaoSu9,
- "中国三聚氰胺产能利用率周数据统计": AnalysisOilchemNiaoSu10,
- "中国尿素产量分省份月数据统计": AnalysisOilchemNiaoSu11,
- "中国尿素进出口量数据总体分析": AnalysisOilchemNiaoSu12,
- "中国磷铵产能利用率周数据统计": AnalysisOilchemFuHeFei1,
- "中国钾肥样本港口库存量周数据统计": AnalysisOilchemFuHeFei2,
- "中国复合肥进出口月数据分析": AnalysisOilchemFuHeFei3,
- "中国阔叶浆样本产量周数据分析": AnalysisOilchemZhiJiang1,
- "中国化机浆样本产量周数据分析": AnalysisOilchemZhiJiang1,
- "中国纸浆主流港口样本库存周数据分析": AnalysisOilchemZhiJiang2,
- "国内独立炼厂产能利用率周数据统计": AnalysisOilchemYuanYou1,
- "国内炼厂常减压装置产能利用率月数据统计": AnalysisOilchemYuanYou2,
- "山东独立炼厂原油到港量周数据统计": AnalysisOilchemYuanYou3,
- "中国港口商业原油库存指数分析": AnalysisOilchemYuanYou4,
- "山东独立炼厂原油样本库容率周数据分析": AnalysisOilchemYuanYou5,
- "中国炼厂原油加工量月数据分析": AnalysisOilchemYuanYou6,
- "国内原油加工量简况": AnalysisOilchemYuanYou7,
- "国内原油产量表": AnalysisOilchemYuanYou8,
- "中国原油进出口量月数据统计": AnalysisOilchemYuanYou9,
- "中国原油月度进出口数据分析报告": AnalysisOilchemYuanYou10,
- "美国能源信息署最新石油库存报告": AnalysisOilchemYuanYou11,
- "美国API库存数据": AnalysisOilchemYuanYou12,
- "国际主要汇率收盘": AnalysisOilchemYuanYou13,
- }
- var JiaChunListMap = map[string]string {
- "[产量/产能利用率]:中国甲醇产量及产能利用率" : "https://list.oilchem.net/140/38266/",
- "库存周数据分析" : "https://list.oilchem.net/140/38271/",
- "中国甲醇样本生产企业库存及订单待发周数据统计" : "https://list.oilchem.net/140/1086/",
- "中国甲醇样本利润周数据统计" : "https://list.oilchem.net/140/1088/",
- "中国甲醇产量及产能利用率" : "https://list.oilchem.net/140/1087/",
- "中国甲醇下游样本产能利用率周数据" : "https://list.oilchem.net/140/38270/",
- "中国甲醇样本生产企业库存及订单待发周数据分析" : "https://list.oilchem.net/140/38271/",
- }
- func AnalysisOilchemJiaChun1(htm []byte) (err error) {
- if len(htm) == 0 {
- utils.FileLog.Info("htm empty")
- return
- }
- doc, e := goquery.NewDocumentFromReader(strings.NewReader(string(htm)))
- if e != nil {
- err = fmt.Errorf("NewDocumentFromReader err: %v", e)
- return
- }
- suffixList := make([]string, 0)
- unitList := make([]string, 0)
- doc.Find("p").Each(func(i int, selection *goquery.Selection) {
- ptext := selection.Text()
- if strings.Contains(ptext, "单位:") {
- unit := strings.Replace(ptext, "单位:", "", -1)
-
- unitList = append(unitList, unit)
- }
- if strings.Contains(ptext, "中国甲醇产量分地区") {
- suffix := ptext
-
- if strings.Contains(ptext, "利用率") {
- suffix = "产能利用率"
- } else {
- suffix = "产量"
- }
- suffixList = append(suffixList, suffix)
- }
- })
- area := ""
- title := doc.Find("h2").Text()
- fmt.Println("title:",title)
- createTimeStr := doc.Find("h2").Next().Text()
- createTimeStr = strings.TrimLeft(createTimeStr,"发布时间:")
- createTimeStrIndex := strings.Index(createTimeStr,"来源:")
- createTimeStr = createTimeStr[:createTimeStrIndex]
- createTimeStr = strings.TrimSpace(createTimeStr)
- createTime, err := time.Parse(utils.HlbFormatDateTimeNoSecond, createTimeStr)
- if err != nil {
- utils.FileLog.Error(fmt.Sprintf("time.Parse err:%v",err))
- return
- }
-
- dataTime := createTime.Format(utils.FormatDate)
-
- indexList := make([]*models.BaseFromOilchemIndex, 0)
- doc.Find("tbody").Each(func(tableIndex int, table *goquery.Selection) {
- mid := "分地区"
- table.Find("tr").First().Each(func(ii int, table2 *goquery.Selection) {
- table.Find("td").Each(func(jj int, table3 *goquery.Selection) {
- text3 := table3.Text()
- text3 = strings.Replace(text3,"\n","",-1)
- text3 = strings.Replace(text3," ","",-1)
- if text3 == "上周" || text3 == "环比" || text3 == "地区" {
- return
- }
-
-
-
-
-
-
-
-
- if utils.ContainsChinese(text3) && text3 != "本周" {
- area = text3
- return
- }
- if area == "" {
- return
- }
- if area == "工艺类型" {
- mid = "分工艺"
- return
- }
- title = "中国甲醇产量" + mid + suffixList[tableIndex]
- value := text3
- value = strings.TrimRight(value, "%")
-
-
-
-
-
-
- indexName := title + "(" + area +")"
- fmt.Println("indexName:",indexName)
- fmt.Println("valueF:",value)
- unit := unitList[tableIndex]
- item := &models.BaseFromOilchemIndex{
- IndexName: indexName,
- ClassifyId: 1,
- Unit: unit,
- Frequency: "周度",
- Describe: "",
- DataTime: dataTime,
- Value: value,
- Sort: 0,
- CreateTime: time.Now(),
- ModifyTime: time.Now(),
- IndexNameStr: title,
- MarketName: area,
- }
- indexList = append(indexList,item)
- area = ""
- })
- })
- })
-
- err = PostHandleOilchem(indexList)
- if err != nil {
- utils.FileLog.Error(fmt.Sprintf("PostHandleOilchem err:%v",err))
- fmt.Println("PostHandleOilchem err",err)
- return
- }
- return
- }
- func AnalysisOilchemJiaChun2(htm []byte) (err error) {
- if len(htm) == 0 {
- utils.FileLog.Info("htm empty")
- return
- }
- doc, e := goquery.NewDocumentFromReader(strings.NewReader(string(htm)))
- if e != nil {
- err = fmt.Errorf("NewDocumentFromReader err: %v", e)
- return
- }
- titleList := make([]string, 0)
- unitList := make([]string, 0)
- doc.Find("p").Each(func(i int, selection *goquery.Selection) {
- ptext := selection.Text()
- if strings.Contains(ptext, "趋势") {
- return
- }
- if strings.Contains(ptext, "单位:") {
- unit := strings.Replace(ptext, "单位:", "", -1)
-
- unitList = append(unitList, unit)
- }
- if strings.Contains(ptext, "中国甲醇港口样本库存周数据对比") {
- title := "中国甲醇港口库存"
-
- titleList = append(titleList, title)
- }
- })
- area := ""
- title := doc.Find("h2").Text()
- fmt.Println("title:",title)
- createTimeStr := doc.Find("h2").Next().Text()
- createTimeStr = strings.TrimLeft(createTimeStr,"发布时间:")
- createTimeStrIndex := strings.Index(createTimeStr,"来源:")
- createTimeStr = createTimeStr[:createTimeStrIndex]
- createTimeStr = strings.TrimSpace(createTimeStr)
- createTime, err := time.Parse(utils.HlbFormatDateTimeNoSecond, createTimeStr)
- if err != nil {
- utils.FileLog.Error(fmt.Sprintf("time.Parse err:%v",err))
- return
- }
-
- dataTime := createTime.Format(utils.FormatDate)
- fmt.Println("dataTime:",dataTime)
- indexList := make([]*models.BaseFromOilchemIndex, 0)
- doc.Find("tbody").Each(func(tableIndex int, table *goquery.Selection) {
- table.Find("tr").First().Each(func(ii int, table2 *goquery.Selection) {
- table.Find("td").Each(func(jj int, table3 *goquery.Selection) {
- text3 := table3.Text()
- text3 = strings.Replace(text3,"\n","",-1)
- text3 = strings.Replace(text3," ","",-1)
- if text3 == "上周" || text3 == "环比" || text3 == "地区" {
- return
- }
-
-
-
-
-
-
-
-
- if utils.ContainsChinese(text3) && text3 != "本周" {
- area = text3
- return
- }
- if area == "" {
- return
- }
- value := text3
- value = strings.TrimRight(value, "%")
-
-
-
-
-
-
- title := "中国甲醇港口库存"
- indexName := title + "(" + area +")"
- unit := "万吨"
- fmt.Println("indexName:",indexName)
- fmt.Println("valueF:",value)
- fmt.Println("unit:",unit)
- item := &models.BaseFromOilchemIndex{
- IndexName: indexName,
- ClassifyId: 1,
- Unit: unit,
- Frequency: "周度",
- Describe: "",
- DataTime: dataTime,
- Value: value,
- Sort: 0,
- CreateTime: time.Now(),
- ModifyTime: time.Now(),
- IndexNameStr: title,
- MarketName: area,
- }
- indexList = append(indexList,item)
- area = ""
- })
- })
- })
-
- err = PostHandleOilchem(indexList)
- if err != nil {
- utils.FileLog.Error(fmt.Sprintf("PostHandleOilchem err:%v",err))
- fmt.Println("PostHandleOilchem err",err)
- return
- }
- return
- }
- func AnalysisOilchemJiaChun3(htm []byte) (err error) {
- if len(htm) == 0 {
- utils.FileLog.Info("htm empty")
- return
- }
- doc, e := goquery.NewDocumentFromReader(strings.NewReader(string(htm)))
- if e != nil {
- err = fmt.Errorf("NewDocumentFromReader err: %v", e)
- return
- }
- titleList := make([]string, 0)
- unitList := make([]string, 0)
- doc.Find("p").Each(func(i int, selection *goquery.Selection) {
- ptext := selection.Text()
- if strings.Contains(ptext, "趋势") {
- return
- }
- if strings.Contains(ptext, "单位:") {
- unit := strings.Replace(ptext, "单位:", "", -1)
-
- unitList = append(unitList, unit)
- }
-
-
-
-
-
-
-
-
-
-
-
- titleList = append(titleList, "中国甲醇样本生产企业库存","中国甲醇样本生产企业订单待发")
- })
- area := ""
- title := doc.Find("h2").Text()
- fmt.Println("title:",title)
- createTimeStr := doc.Find("h2").Next().Text()
- createTimeStr = strings.TrimLeft(createTimeStr,"发布时间:")
- createTimeStrIndex := strings.Index(createTimeStr,"来源:")
- createTimeStr = createTimeStr[:createTimeStrIndex]
- createTimeStr = strings.TrimSpace(createTimeStr)
- createTime, err := time.Parse(utils.HlbFormatDateTimeNoSecond, createTimeStr)
- if err != nil {
- utils.FileLog.Error(fmt.Sprintf("time.Parse err:%v",err))
- return
- }
-
- dataTime := createTime.Format(utils.FormatDate)
- fmt.Println("dataTime:",dataTime)
- indexList := make([]*models.BaseFromOilchemIndex, 0)
- doc.Find("tbody").Each(func(tableIndex int, table *goquery.Selection) {
- table.Find("tr").First().Each(func(ii int, table2 *goquery.Selection) {
- table.Find("td").Each(func(jj int, table3 *goquery.Selection) {
- text3 := table3.Text()
- text3 = strings.Replace(text3,"\n","",-1)
- text3 = strings.Replace(text3," ","",-1)
- if text3 == "上周" || text3 == "环比" || text3 == "地区" {
- return
- }
-
-
-
-
-
-
-
-
- if utils.ContainsChinese(text3) && text3 != "本周" {
- area = text3
- return
- }
- if area == "" {
- return
- }
- value := text3
- value = strings.TrimRight(value, "%")
- valueF, e := strconv.ParseFloat(value, 64)
- if e != nil {
- err = e
- utils.FileLog.Error(fmt.Sprintf("strconv.ParseFloat err:%v",e))
- return
- }
- indexName := titleList[tableIndex] + "(" + area +")"
- unit := "万吨"
- fmt.Println("indexName:",indexName)
- fmt.Println("valueF:",valueF)
- fmt.Println("unit:",unit)
- item := &models.BaseFromOilchemIndex{
- IndexName: indexName,
- ClassifyId: 1,
- Unit: unit,
- Frequency: "周度",
- Describe: "",
- DataTime: dataTime,
- Value: value,
- Sort: 0,
- CreateTime: time.Now(),
- ModifyTime: time.Now(),
- IndexNameStr: titleList[tableIndex],
- MarketName: area,
- }
- indexList = append(indexList,item)
- area = ""
- })
- })
- })
-
- err = PostHandleOilchem(indexList)
- if err != nil {
- utils.FileLog.Error(fmt.Sprintf("PostHandleOilchem err:%v",err))
- fmt.Println("PostHandleOilchem err",err)
- return
- }
- return
- }
- func AnalysisOilchemJiaChun4(htm []byte) (err error) {
- if len(htm) == 0 {
- utils.FileLog.Info("htm empty")
- return
- }
- doc, e := goquery.NewDocumentFromReader(strings.NewReader(string(htm)))
- if e != nil {
- err = fmt.Errorf("NewDocumentFromReader err: %v", e)
- return
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- area := ""
- title := doc.Find("h2").Text()
- fmt.Println("title:",title)
- createTimeStr := doc.Find("h2").Next().Text()
- createTimeStr = strings.TrimLeft(createTimeStr,"发布时间:")
- createTimeStrIndex := strings.Index(createTimeStr,"来源:")
- createTimeStr = createTimeStr[:createTimeStrIndex]
- createTimeStr = strings.TrimSpace(createTimeStr)
- createTime, err := time.Parse(utils.HlbFormatDateTimeNoSecond, createTimeStr)
- if err != nil {
- utils.FileLog.Error(fmt.Sprintf("time.Parse err:%v",err))
- return
- }
-
- dataTime := createTime.Format(utils.FormatDate)
- fmt.Println("dataTime:",dataTime)
- indexList := make([]*models.BaseFromOilchemIndex, 0)
- doc.Find("tbody").Each(func(tableIndex int, table *goquery.Selection) {
- table.Find("tr").First().Each(func(ii int, table2 *goquery.Selection) {
- table.Find("td").Each(func(jj int, table3 *goquery.Selection) {
- text3 := table3.Text()
- text3 = strings.Replace(text3,"\n","",-1)
- text3 = strings.Replace(text3," ","",-1)
- if text3 == "上周" || text3 == "环比" || text3 == "地区" {
- return
- }
-
-
-
-
-
-
-
-
- if utils.ContainsChinese(text3) && text3 != "本周" {
- area = text3
- return
- }
- if area == "" {
- return
- }
- value := text3
- value = strings.TrimRight(value, "%")
- valueF, e := strconv.ParseFloat(value, 64)
- if e != nil {
- err = e
- utils.FileLog.Error(fmt.Sprintf("strconv.ParseFloat err:%v",e))
- return
- }
- indexName := area
- unit := "元/吨"
- fmt.Println("indexName:",indexName)
- fmt.Println("valueF:",valueF)
- fmt.Println("unit:",unit)
- item := &models.BaseFromOilchemIndex{
- IndexName: indexName,
- ClassifyId: 1,
- Unit: unit,
- Frequency: "周度",
- Describe: "",
- DataTime: dataTime,
- Value: value,
- Sort: 0,
- CreateTime: time.Now(),
- ModifyTime: time.Now(),
- IndexNameStr: indexName,
- MarketName: "",
- }
- indexList = append(indexList,item)
- area = ""
- })
- })
- })
-
- err = PostHandleOilchem(indexList)
- if err != nil {
- utils.FileLog.Error(fmt.Sprintf("PostHandleOilchem err:%v",err))
- fmt.Println("PostHandleOilchem err",err)
- return
- }
- return
- }
- func AnalysisOilchemJiaChun5(htm []byte) (err error) {
- if len(htm) == 0 {
- utils.FileLog.Info("htm empty")
- return
- }
- doc, e := goquery.NewDocumentFromReader(strings.NewReader(string(htm)))
- if e != nil {
- err = fmt.Errorf("NewDocumentFromReader err: %v", e)
- return
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- area := ""
- title := doc.Find("h2").Text()
- fmt.Println("title:",title)
- createTimeStr := doc.Find("h2").Next().Text()
- createTimeStr = strings.TrimLeft(createTimeStr,"发布时间:")
- createTimeStrIndex := strings.Index(createTimeStr,"来源:")
- createTimeStr = createTimeStr[:createTimeStrIndex]
- createTimeStr = strings.TrimSpace(createTimeStr)
- createTime, err := time.Parse(utils.HlbFormatDateTimeNoSecond, createTimeStr)
- if err != nil {
- utils.FileLog.Error(fmt.Sprintf("time.Parse err:%v",err))
- return
- }
-
- dataTime := createTime.Format(utils.FormatDate)
- fmt.Println("dataTime:",dataTime)
- indexList := make([]*models.BaseFromOilchemIndex, 0)
- doc.Find("tbody").Each(func(tableIndex int, table *goquery.Selection) {
- table.Find("tr").First().Each(func(ii int, table2 *goquery.Selection) {
- table.Find("td").Each(func(jj int, table3 *goquery.Selection) {
- text3 := table3.Text()
- text3 = strings.Replace(text3,"\n","",-1)
- text3 = strings.Replace(text3," ","",-1)
- if text3 == "上周" || text3 == "环比" || text3 == "地区" {
- return
- }
-
-
-
-
-
-
-
-
- if utils.ContainsChinese(text3) && text3 != "本周" {
- area = text3
- return
- }
- if area == "" {
- return
- }
- value := text3
- value = strings.TrimRight(value, "%")
- valueF, e := strconv.ParseFloat(value, 64)
- if e != nil {
- err = e
- utils.FileLog.Error(fmt.Sprintf("strconv.ParseFloat err:%v",e))
- return
- }
- indexName := "中国甲醇" + area
- unit := ""
- if area == "产量" {
- unit = "吨"
- } else {
- unit = "%"
- }
- fmt.Println("indexName:",indexName)
- fmt.Println("valueF:",valueF)
- fmt.Println("unit:",unit)
- item := &models.BaseFromOilchemIndex{
- IndexName: indexName,
- ClassifyId: 1,
- Unit: unit,
- Frequency: "周度",
- Describe: "",
- DataTime: dataTime,
- Value: value,
- Sort: 0,
- CreateTime: time.Now(),
- ModifyTime: time.Now(),
- IndexNameStr: indexName,
- }
- indexList = append(indexList,item)
- area = ""
- })
- })
- })
-
- err = PostHandleOilchem(indexList)
- if err != nil {
- utils.FileLog.Error(fmt.Sprintf("PostHandleOilchem err:%v",err))
- fmt.Println("PostHandleOilchem err",err)
- return
- }
- return
- }
- func AnalysisOilchemJiaChun6(htm []byte) (err error) {
- if len(htm) == 0 {
- utils.FileLog.Info("htm empty")
- return
- }
- doc, e := goquery.NewDocumentFromReader(strings.NewReader(string(htm)))
- if e != nil {
- err = fmt.Errorf("NewDocumentFromReader err: %v", e)
- return
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- area := ""
- title := doc.Find("h2").Text()
- fmt.Println("title:",title)
- createTimeStr := doc.Find("h2").Next().Text()
- createTimeStr = strings.TrimLeft(createTimeStr,"发布时间:")
- createTimeStrIndex := strings.Index(createTimeStr,"来源:")
- createTimeStr = createTimeStr[:createTimeStrIndex]
- createTimeStr = strings.TrimSpace(createTimeStr)
- createTime, err := time.Parse(utils.HlbFormatDateTimeNoSecond, createTimeStr)
- if err != nil {
- utils.FileLog.Error(fmt.Sprintf("time.Parse err:%v",err))
- return
- }
-
- dataTime := createTime.Format(utils.FormatDate)
- fmt.Println("dataTime:",dataTime)
- indexList := make([]*models.BaseFromOilchemIndex, 0)
- doc.Find("tbody").Each(func(tableIndex int, table *goquery.Selection) {
- table.Find("tr").First().Each(func(ii int, table2 *goquery.Selection) {
- table.Find("td").Each(func(jj int, table3 *goquery.Selection) {
- text3 := table3.Text()
- text3 = strings.Replace(text3,"\n","",-1)
- text3 = strings.Replace(text3," ","",-1)
- if text3 == "上周" || text3 == "环比" || text3 == "地区" {
- return
- }
-
-
-
-
-
-
-
-
- if utils.ContainsChinese(text3) || utils.ContainsEnglishLetter(text3) {
- area = text3
- return
- }
- if area == "" {
- return
- }
- value := text3
- value = strings.TrimRight(value, "%")
- valueF, e := strconv.ParseFloat(value, 64)
- if e != nil {
- err = e
- utils.FileLog.Error(fmt.Sprintf("strconv.ParseFloat err:%v",e))
- return
- }
- area = strings.Replace(area," ","",-1)
- indexName := "中国甲醇部分下游品种产能利用率" +"("+ area +")"
- unit := "%"
- fmt.Println("indexName:",indexName)
- fmt.Println("valueF:",valueF)
- fmt.Println("unit:",unit)
- item := &models.BaseFromOilchemIndex{
- BaseFromOilchemIndexId: 0,
- IndexName: indexName,
- ClassifyId: 1,
- Unit: unit,
- Frequency: "周度",
- Describe: "",
- DataTime: dataTime,
- Value: value,
- Sort: 0,
- CreateTime: createTime,
- ModifyTime: createTime,
- IndexNameStr: "中国甲醇部分下游品种产能利用率",
- MarketName: area,
- }
- indexList = append(indexList,item)
- area = ""
- })
- })
- })
-
- err = PostHandleOilchem(indexList)
- if err != nil {
- utils.FileLog.Error(fmt.Sprintf("PostHandleOilchem err:%v",err))
- fmt.Println("PostHandleOilchem err",err)
- return
- }
- return
- }
- func AnalysisOilchemJiaChun7(htm []byte) (err error) {
- if len(htm) == 0 {
- utils.FileLog.Info("htm empty")
- return
- }
- doc, e := goquery.NewDocumentFromReader(strings.NewReader(string(htm)))
- if e != nil {
- err = fmt.Errorf("NewDocumentFromReader err: %v", e)
- return
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- area := ""
- title := doc.Find("h2").Text()
- fmt.Println("title:",title)
- createTimeStr := doc.Find("h2").Next().Text()
- createTimeStr = strings.TrimLeft(createTimeStr,"发布时间:")
- createTimeStrIndex := strings.Index(createTimeStr,"来源:")
- createTimeStr = createTimeStr[:createTimeStrIndex]
- createTimeStr = strings.TrimSpace(createTimeStr)
- createTime, err := time.Parse(utils.HlbFormatDateTimeNoSecond, createTimeStr)
- if err != nil {
- utils.FileLog.Error(fmt.Sprintf("time.Parse err:%v",err))
- return
- }
-
- dataTime := createTime.Format(utils.FormatDate)
- fmt.Println("dataTime:",dataTime)
- indexList := make([]*models.BaseFromOilchemIndex, 0)
- doc.Find("tbody").Each(func(tableIndex int, table *goquery.Selection) {
- table.Find("tr").First().Each(func(ii int, table2 *goquery.Selection) {
- table.Find("td").Each(func(jj int, table3 *goquery.Selection) {
- text3 := table3.Text()
- text3 = strings.Replace(text3,"\n","",-1)
- text3 = strings.Replace(text3," ","",-1)
- if text3 == "上周" || text3 == "环比" || text3 == "地区" {
- return
- }
-
-
-
-
-
-
-
-
- if utils.ContainsChinese(text3) || utils.ContainsEnglishLetter(text3) {
- area = text3
- return
- }
- if area == "" {
- return
- }
- value := text3
- value = strings.TrimRight(value, "%")
- valueF, e := strconv.ParseFloat(value, 64)
- if e != nil {
- err = e
- utils.FileLog.Error(fmt.Sprintf("strconv.ParseFloat err:%v",e))
- return
- }
- indexName := area
- unit := "万吨"
- fmt.Println("indexName:",indexName)
- fmt.Println("valueF:",valueF)
- fmt.Println("unit:",unit)
- item := &models.BaseFromOilchemIndex{
- BaseFromOilchemIndexId: 0,
- IndexName: indexName,
- ClassifyId: 1,
- Unit: unit,
- Frequency: "周度",
- Describe: "",
- DataTime: dataTime,
- Value: value,
- Sort: 0,
- CreateTime: createTime,
- ModifyTime: createTime,
- IndexNameStr: indexName,
- MarketName: "",
- }
- indexList = append(indexList,item)
- area = ""
- })
- })
- })
-
- err = PostHandleOilchem(indexList)
- if err != nil {
- utils.FileLog.Error(fmt.Sprintf("PostHandleOilchem err:%v",err))
- fmt.Println("PostHandleOilchem err",err)
- return
- }
- return
- }
- func PostHandleOilchem(indexList []*models.BaseFromOilchemIndex) (err error) {
- params := make(map[string]interface{})
- params["List"] = indexList
- result, e := postEdbLib(params, utils.LIB_ROUTE_OILCHEM_TABLE_HANDLE)
- if e != nil {
- b, _ := json.Marshal(params)
- fmt.Printf("postEdbLib err: %v, params: %s\n", e, string(b))
- utils.FileLog.Info(fmt.Sprintf("postEdbLib err: %v, params: %s", e, string(b)))
- return
- }
- resp := new(models.BaseEdbLibResponse)
- if e = json.Unmarshal(result, &resp); e != nil {
- fmt.Printf("json.Unmarshal err: %v\n", e)
- utils.FileLog.Info(fmt.Sprintf("json.Unmarshal err: %v", e))
- return
- }
- if resp.Ret != 200 {
- fmt.Printf("Msg: %s, ErrMsg: %s\n", resp.Msg, resp.ErrMsg)
- utils.FileLog.Info(fmt.Sprintf("Msg: %s, ErrMsg: %s", resp.Msg, resp.ErrMsg))
- return
- }
- return
- }
- func JiaChunList(num int) (err error) {
- for k, v := range JiaChunListMap {
- for i := 1; i < num; i++ {
- listUrl := v + fmt.Sprintf("%d.html",i)
- fmt.Println("listUrl:",listUrl)
- htm, e := FetchPageHtml(listUrl)
- if e != nil {
- err = e
- utils.FileLog.Error(fmt.Sprintf("FetchPageHtml err:%v",err))
- fmt.Println("FetchPageHtml err",err)
- return
- }
- err = AnalysisOilchemList(htm, k)
- if err != nil {
- utils.FileLog.Error(fmt.Sprintf("AnalysisOilchemJiaChunList err:%v",err))
- fmt.Println("AnalysisOilchemJiaChunList err",err)
- return
- }
- time.Sleep(2*time.Second)
- }
- }
- return
- }
- func AnalysisOilchemList(htm []byte, classifyTitle string) (err error) {
- if len(htm) == 0 {
- utils.FileLog.Info("htm empty")
- return
- }
- doc, e := goquery.NewDocumentFromReader(strings.NewReader(string(htm)))
- if e != nil {
- err = fmt.Errorf("NewDocumentFromReader err: %v", e)
- return
- }
- title := doc.Find("h2").Text()
- fmt.Println("title:",title)
- doc.Find("div.list").Each(func(divIndex int, table *goquery.Selection) {
- table.Find("li").Each(func(divIndex2 int, table2 *goquery.Selection) {
- title := table2.Text()
- if strings.Contains(title,classifyTitle) {
- table2.Find("li.clearfix a").Each(func(i int, s *goquery.Selection) {
- href, exists := s.Attr("href")
- if exists {
- fmt.Printf("Link %d: %s\n", i, href)
- respBody, err := FetchPageHtml(href)
- if err != nil {
- utils.FileLog.Error(fmt.Sprintf("FetchPageHtml err:%v",err))
- fmt.Println("FetchPageHtml err",err)
- return
- } else {
- handler, ok := OilchemTaskAnalysisHandlers[classifyTitle]
- if !ok {
- utils.FileLog.Info(fmt.Sprintf("%s无解析函数\n", classifyTitle))
- return
- }
- err := handler(respBody)
- if err != nil {
- utils.FileLog.Error(fmt.Sprintf("OilchemTaskAnalysisHandlers err:%v",err))
- fmt.Println("OilchemTaskAnalysisHandlers err",err)
- return
- }
- }
- } else {
- fmt.Println("Link attribute does not exist")
- }
- })
- }
- })
- })
- return
- }
|