|
@@ -0,0 +1,1605 @@
|
|
|
+package services
|
|
|
+
|
|
|
+import (
|
|
|
+ "eta/eta_data_analysis/models"
|
|
|
+ "eta/eta_data_analysis/utils"
|
|
|
+ "fmt"
|
|
|
+ "github.com/PuerkitoBio/goquery"
|
|
|
+ "strings"
|
|
|
+ "time"
|
|
|
+)
|
|
|
+
|
|
|
+var YuanYouListMap = map[string]string{
|
|
|
+ "国内独立炼厂产能利用率周数据统计" : "https://list.oilchem.net/5158/43854/",
|
|
|
+ "国内炼厂常减压装置产能利用率月数据统计": "https://list.oilchem.net/5158/43854/",
|
|
|
+ "山东独立炼厂原油到港量周数据统计": "https://list.oilchem.net/5158/43856/",
|
|
|
+ "中国港口商业原油库存指数分析": "https://list.oilchem.net/5158/43857/",
|
|
|
+ "山东独立炼厂原油样本库容率周数据分析": "https://list.oilchem.net/5158/43859/",
|
|
|
+ "中国炼厂原油加工量月数据分析": "https://list.oilchem.net/5158/43858/",
|
|
|
+ "国内原油加工量简况": "https://list.oilchem.net/5158/37164/",
|
|
|
+ "国内原油产量表": "https://list.oilchem.net/5158/37164/",
|
|
|
+ //"中国原油进出口量月数据统计": "https://list.oilchem.net/5158/37160/",
|
|
|
+ "中国原油月度进出口数据分析报告": "https://list.oilchem.net/5158/37160/",
|
|
|
+ //"美国能源信息署最新石油库存报告": "https://list.oilchem.net/5158/37147/",
|
|
|
+ "美国API库存数据": "https://list.oilchem.net/5158/37147/",
|
|
|
+ "国际主要汇率收盘": "https://list.oilchem.net/5158/37156/",
|
|
|
+}
|
|
|
+
|
|
|
+func YuanYouList(num int) (err error) {
|
|
|
+ for k, v := range YuanYouListMap {
|
|
|
+ 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("AnalysisOilchemList err:%v", err))
|
|
|
+ fmt.Println("AnalysisOilchemList err", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ time.Sleep(2 * time.Second)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// 国内独立炼厂产能利用率周数据
|
|
|
+func AnalysisOilchemYuanYou1(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, "单位:") {
|
|
|
+ unit := strings.Replace(ptext, "单位:", "", -1)
|
|
|
+ //fmt.Println("unit:",unit)
|
|
|
+ unitList = append(unitList, unit)
|
|
|
+ }
|
|
|
+ if strings.Contains(ptext, "国内独立炼厂产能利用率周数据") {
|
|
|
+ title := ptext
|
|
|
+ //fmt.Println("title:",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
|
|
|
+ }
|
|
|
+ //fmt.Println("createTime:",createTime)
|
|
|
+ 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
|
|
|
+ }
|
|
|
+ //fmt.Println("table3:",text3)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("table3:%s",text3))
|
|
|
+ //fmt.Println("ii:",ii)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("ii:%d",ii))
|
|
|
+ //fmt.Println("jj:",jj)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("jj:%d",jj))
|
|
|
+ //fmt.Println("tableIndex:",tableIndex)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("tableIndex:%d",tableIndex))
|
|
|
+
|
|
|
+ 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 := "中国炼厂常减压装置产能利用率"
|
|
|
+ fmt.Println("indexName:", indexName)
|
|
|
+ fmt.Println("valueF:", value)
|
|
|
+ unit := ""
|
|
|
+ if strings.Contains(area, "产量") {
|
|
|
+ unit = "万吨"
|
|
|
+ } else {
|
|
|
+ unit = "%"
|
|
|
+ }
|
|
|
+
|
|
|
+ item := &models.BaseFromOilchemIndex{
|
|
|
+ IndexName: indexName,
|
|
|
+ ClassifyId: 5,
|
|
|
+ Unit: unit,
|
|
|
+ Frequency: "周度",
|
|
|
+ Describe: "",
|
|
|
+ DataTime: dataTime,
|
|
|
+ Value: value,
|
|
|
+ Sort: 0,
|
|
|
+ CreateTime: time.Now(),
|
|
|
+ ModifyTime: time.Now(),
|
|
|
+ IndexNameStr: "中国炼厂常减压装置产能利用率",
|
|
|
+ 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 AnalysisOilchemYuanYou2(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, "单位:") {
|
|
|
+ unit := strings.Replace(ptext, "单位:", "", -1)
|
|
|
+ //fmt.Println("unit:",unit)
|
|
|
+ unitList = append(unitList, unit)
|
|
|
+ }
|
|
|
+ if strings.Contains(ptext, "国内独立炼厂产能利用率周数据") {
|
|
|
+ title := ptext
|
|
|
+ //fmt.Println("title:",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
|
|
|
+ }
|
|
|
+ //fmt.Println("createTime:",createTime)
|
|
|
+ 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
|
|
|
+ }
|
|
|
+ //fmt.Println("table3:",text3)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("table3:%s",text3))
|
|
|
+ //fmt.Println("ii:",ii)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("ii:%d",ii))
|
|
|
+ //fmt.Println("jj:",jj)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("jj:%d",jj))
|
|
|
+ //fmt.Println("tableIndex:",tableIndex)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("tableIndex:%d",tableIndex))
|
|
|
+
|
|
|
+ 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 + ")"
|
|
|
+ fmt.Println("indexName:", indexName)
|
|
|
+ fmt.Println("valueF:", value)
|
|
|
+ unit := ""
|
|
|
+ if strings.Contains(area, "产量") {
|
|
|
+ unit = "万吨"
|
|
|
+ } else {
|
|
|
+ unit = "%"
|
|
|
+ }
|
|
|
+
|
|
|
+ item := &models.BaseFromOilchemIndex{
|
|
|
+ IndexName: indexName,
|
|
|
+ ClassifyId: 5,
|
|
|
+ Unit: unit,
|
|
|
+ Frequency: "周度",
|
|
|
+ Describe: "",
|
|
|
+ DataTime: dataTime,
|
|
|
+ Value: value,
|
|
|
+ Sort: 0,
|
|
|
+ CreateTime: time.Now(),
|
|
|
+ ModifyTime: time.Now(),
|
|
|
+ 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 AnalysisOilchemYuanYou3(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, "单位:") {
|
|
|
+ unit := strings.Replace(ptext, "单位:", "", -1)
|
|
|
+ //fmt.Println("unit:",unit)
|
|
|
+ unitList = append(unitList, unit)
|
|
|
+ }
|
|
|
+ //if strings.Contains(ptext, "国内独立炼厂产能利用率周数据") {
|
|
|
+ // title := ptext
|
|
|
+ // //fmt.Println("title:",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
|
|
|
+ }
|
|
|
+ //fmt.Println("createTime:",createTime)
|
|
|
+ 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:not(.firstRow)").Each(func(ii int, table2 *goquery.Selection) {
|
|
|
+ table2.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
|
|
|
+ }
|
|
|
+ //fmt.Println("table3:",text3)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("table3:%s",text3))
|
|
|
+ //fmt.Println("ii:",ii)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("ii:%d",ii))
|
|
|
+ //fmt.Println("jj:",jj)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("jj:%d",jj))
|
|
|
+ //fmt.Println("tableIndex:",tableIndex)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("tableIndex:%d",tableIndex))
|
|
|
+
|
|
|
+ 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 := "山东独立炼厂原油到港量"
|
|
|
+ fmt.Println("indexName:", indexName)
|
|
|
+ fmt.Println("valueF:", value)
|
|
|
+ //unit := ""
|
|
|
+ //if strings.Contains(area, "产量") {
|
|
|
+ // unit = "万吨"
|
|
|
+ //} else {
|
|
|
+ // unit = "%"
|
|
|
+ //}
|
|
|
+
|
|
|
+ item := &models.BaseFromOilchemIndex{
|
|
|
+ IndexName: indexName,
|
|
|
+ ClassifyId: 5,
|
|
|
+ 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 AnalysisOilchemYuanYou4(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, "单位:") {
|
|
|
+ unit := strings.Replace(ptext, "单位:", "", -1)
|
|
|
+ //fmt.Println("unit:",unit)
|
|
|
+ unitList = append(unitList, unit)
|
|
|
+ }
|
|
|
+ //if strings.Contains(ptext, "国内独立炼厂产能利用率周数据") {
|
|
|
+ // title := ptext
|
|
|
+ // //fmt.Println("title:",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
|
|
|
+ }
|
|
|
+ //fmt.Println("createTime:",createTime)
|
|
|
+ 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("p").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
|
|
|
+ }
|
|
|
+ //fmt.Println("table3:",text3)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("table3:%s",text3))
|
|
|
+ //fmt.Println("ii:",ii)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("ii:%d",ii))
|
|
|
+ //fmt.Println("jj:",jj)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("jj:%d",jj))
|
|
|
+ //fmt.Println("tableIndex:",tableIndex)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("tableIndex:%d",tableIndex))
|
|
|
+
|
|
|
+ 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 + ")"
|
|
|
+ fmt.Println("indexName:", indexName)
|
|
|
+ fmt.Println("valueF:", value)
|
|
|
+ //unit := ""
|
|
|
+ //if strings.Contains(area, "产量") {
|
|
|
+ // unit = "万吨"
|
|
|
+ //} else {
|
|
|
+ // unit = "%"
|
|
|
+ //}
|
|
|
+
|
|
|
+ item := &models.BaseFromOilchemIndex{
|
|
|
+ IndexName: indexName,
|
|
|
+ ClassifyId: 5,
|
|
|
+ Unit: "%",
|
|
|
+ Frequency: "周度",
|
|
|
+ Describe: "",
|
|
|
+ DataTime: dataTime,
|
|
|
+ Value: value,
|
|
|
+ Sort: 0,
|
|
|
+ CreateTime: time.Now(),
|
|
|
+ ModifyTime: time.Now(),
|
|
|
+ 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 AnalysisOilchemYuanYou5(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, "单位:") {
|
|
|
+ unit := strings.Replace(ptext, "单位:", "", -1)
|
|
|
+ //fmt.Println("unit:",unit)
|
|
|
+ unitList = append(unitList, unit)
|
|
|
+ }
|
|
|
+ //if strings.Contains(ptext, "国内独立炼厂产能利用率周数据") {
|
|
|
+ // title := ptext
|
|
|
+ // //fmt.Println("title:",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
|
|
|
+ }
|
|
|
+ //fmt.Println("createTime:",createTime)
|
|
|
+ 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:not(.firstRow)").Each(func(ii int, table2 *goquery.Selection) {
|
|
|
+ table2.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
|
|
|
+ }
|
|
|
+ //fmt.Println("table3:",text3)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("table3:%s",text3))
|
|
|
+ //fmt.Println("ii:",ii)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("ii:%d",ii))
|
|
|
+ //fmt.Println("jj:",jj)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("jj:%d",jj))
|
|
|
+ //fmt.Println("tableIndex:",tableIndex)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("tableIndex:%d",tableIndex))
|
|
|
+
|
|
|
+ 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 := "山东独立炼厂原油样本库容率"
|
|
|
+ fmt.Println("indexName:", indexName)
|
|
|
+ fmt.Println("valueF:", value)
|
|
|
+ //unit := ""
|
|
|
+ //if strings.Contains(area, "产量") {
|
|
|
+ // unit = "万吨"
|
|
|
+ //} else {
|
|
|
+ // unit = "%"
|
|
|
+ //}
|
|
|
+
|
|
|
+ item := &models.BaseFromOilchemIndex{
|
|
|
+ IndexName: indexName,
|
|
|
+ ClassifyId: 5,
|
|
|
+ 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 AnalysisOilchemYuanYou6(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, "单位:") {
|
|
|
+ unit := strings.Replace(ptext, "单位:", "", -1)
|
|
|
+ //fmt.Println("unit:",unit)
|
|
|
+ unitList = append(unitList, unit)
|
|
|
+ }
|
|
|
+ //if strings.Contains(ptext, "国内独立炼厂产能利用率周数据") {
|
|
|
+ // title := ptext
|
|
|
+ // //fmt.Println("title:",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
|
|
|
+ }
|
|
|
+ //fmt.Println("createTime:",createTime)
|
|
|
+ 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:not(.firstRow)").Each(func(ii int, table2 *goquery.Selection) {
|
|
|
+ table2.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
|
|
|
+ }
|
|
|
+ //fmt.Println("table3:",text3)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("table3:%s",text3))
|
|
|
+ //fmt.Println("ii:",ii)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("ii:%d",ii))
|
|
|
+ //fmt.Println("jj:",jj)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("jj:%d",jj))
|
|
|
+ //fmt.Println("tableIndex:",tableIndex)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("tableIndex:%d",tableIndex))
|
|
|
+
|
|
|
+ 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 := "中国炼厂原油加工量"
|
|
|
+ fmt.Println("indexName:", indexName)
|
|
|
+ fmt.Println("valueF:", value)
|
|
|
+ //unit := ""
|
|
|
+ //if strings.Contains(area, "产量") {
|
|
|
+ // unit = "万吨"
|
|
|
+ //} else {
|
|
|
+ // unit = "%"
|
|
|
+ //}
|
|
|
+
|
|
|
+ item := &models.BaseFromOilchemIndex{
|
|
|
+ IndexName: indexName,
|
|
|
+ ClassifyId: 5,
|
|
|
+ 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 AnalysisOilchemYuanYou7(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, "单位:") {
|
|
|
+ unit := strings.Replace(ptext, "单位:", "", -1)
|
|
|
+ //fmt.Println("unit:",unit)
|
|
|
+ unitList = append(unitList, unit)
|
|
|
+ }
|
|
|
+ //if strings.Contains(ptext, "国内独立炼厂产能利用率周数据") {
|
|
|
+ // title := ptext
|
|
|
+ // //fmt.Println("title:",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
|
|
|
+ }
|
|
|
+ //fmt.Println("createTime:",createTime)
|
|
|
+ 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:not(.firstRow)").Each(func(ii int, table2 *goquery.Selection) {
|
|
|
+ table2.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
|
|
|
+ }
|
|
|
+ //fmt.Println("table3:",text3)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("table3:%s",text3))
|
|
|
+ //fmt.Println("ii:",ii)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("ii:%d",ii))
|
|
|
+ //fmt.Println("jj:",jj)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("jj:%d",jj))
|
|
|
+ //fmt.Println("tableIndex:",tableIndex)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("tableIndex:%d",tableIndex))
|
|
|
+
|
|
|
+ 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 := "国内原油加工量"
|
|
|
+ fmt.Println("indexName:", indexName)
|
|
|
+ fmt.Println("valueF:", value)
|
|
|
+ //unit := ""
|
|
|
+ //if strings.Contains(area, "产量") {
|
|
|
+ // unit = "万吨"
|
|
|
+ //} else {
|
|
|
+ // unit = "%"
|
|
|
+ //}
|
|
|
+
|
|
|
+ item := &models.BaseFromOilchemIndex{
|
|
|
+ IndexName: indexName,
|
|
|
+ ClassifyId: 5,
|
|
|
+ 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 AnalysisOilchemYuanYou8(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, "单位:") {
|
|
|
+ unit := strings.Replace(ptext, "单位:", "", -1)
|
|
|
+ //fmt.Println("unit:",unit)
|
|
|
+ unitList = append(unitList, unit)
|
|
|
+ }
|
|
|
+ //if strings.Contains(ptext, "国内独立炼厂产能利用率周数据") {
|
|
|
+ // title := ptext
|
|
|
+ // //fmt.Println("title:",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
|
|
|
+ }
|
|
|
+ //fmt.Println("createTime:",createTime)
|
|
|
+ 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:not(.firstRow)").Each(func(ii int, table2 *goquery.Selection) {
|
|
|
+ table2.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
|
|
|
+ }
|
|
|
+ //fmt.Println("table3:",text3)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("table3:%s",text3))
|
|
|
+ //fmt.Println("ii:",ii)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("ii:%d",ii))
|
|
|
+ //fmt.Println("jj:",jj)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("jj:%d",jj))
|
|
|
+ //fmt.Println("tableIndex:",tableIndex)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("tableIndex:%d",tableIndex))
|
|
|
+
|
|
|
+ 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 := "国内原油产量表"
|
|
|
+ fmt.Println("indexName:", indexName)
|
|
|
+ fmt.Println("valueF:", value)
|
|
|
+ //unit := ""
|
|
|
+ //if strings.Contains(area, "产量") {
|
|
|
+ // unit = "万吨"
|
|
|
+ //} else {
|
|
|
+ // unit = "%"
|
|
|
+ //}
|
|
|
+
|
|
|
+ item := &models.BaseFromOilchemIndex{
|
|
|
+ IndexName: indexName,
|
|
|
+ ClassifyId: 5,
|
|
|
+ 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
|
|
|
+}
|
|
|
+
|
|
|
+// 中国原油进出口量月数据统计 todo
|
|
|
+func AnalysisOilchemYuanYou9(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, "单位:") {
|
|
|
+ unit := strings.Replace(ptext, "单位:", "", -1)
|
|
|
+ //fmt.Println("unit:",unit)
|
|
|
+ unitList = append(unitList, unit)
|
|
|
+ }
|
|
|
+ //if strings.Contains(ptext, "国内独立炼厂产能利用率周数据") {
|
|
|
+ // title := ptext
|
|
|
+ // //fmt.Println("title:",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
|
|
|
+ }
|
|
|
+ //fmt.Println("createTime:",createTime)
|
|
|
+ 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:not(.firstRow)").Each(func(ii int, table2 *goquery.Selection) {
|
|
|
+ table2.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
|
|
|
+ }
|
|
|
+ //fmt.Println("table3:",text3)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("table3:%s",text3))
|
|
|
+ //fmt.Println("ii:",ii)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("ii:%d",ii))
|
|
|
+ //fmt.Println("jj:",jj)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("jj:%d",jj))
|
|
|
+ //fmt.Println("tableIndex:",tableIndex)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("tableIndex:%d",tableIndex))
|
|
|
+
|
|
|
+ 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 := "国内原油产量表"
|
|
|
+ fmt.Println("indexName:", indexName)
|
|
|
+ fmt.Println("valueF:", value)
|
|
|
+ //unit := ""
|
|
|
+ //if strings.Contains(area, "产量") {
|
|
|
+ // unit = "万吨"
|
|
|
+ //} else {
|
|
|
+ // unit = "%"
|
|
|
+ //}
|
|
|
+
|
|
|
+ item := &models.BaseFromOilchemIndex{
|
|
|
+ IndexName: indexName,
|
|
|
+ ClassifyId: 5,
|
|
|
+ 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 AnalysisOilchemYuanYou10(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, "单位:") {
|
|
|
+ unit := strings.Replace(ptext, "单位:", "", -1)
|
|
|
+ //fmt.Println("unit:",unit)
|
|
|
+ unitList = append(unitList, unit)
|
|
|
+ }
|
|
|
+ //if strings.Contains(ptext, "国内独立炼厂产能利用率周数据") {
|
|
|
+ // title := ptext
|
|
|
+ // //fmt.Println("title:",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
|
|
|
+ }
|
|
|
+ //fmt.Println("createTime:",createTime)
|
|
|
+ dataTime := createTime.Format(utils.FormatDate)
|
|
|
+ //fmt.Println("dataTime:",dataTime)
|
|
|
+
|
|
|
+ indexList := make([]*models.BaseFromOilchemIndex, 0)
|
|
|
+ doc.Find("tbody").Each(func(tableIndex int, table *goquery.Selection) {
|
|
|
+ if tableIndex != 1 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ table.Find("tr:not(.firstRow)").Each(func(ii int, table2 *goquery.Selection) {
|
|
|
+ table2.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
|
|
|
+ }
|
|
|
+ //fmt.Println("table3:",text3)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("table3:%s",text3))
|
|
|
+ //fmt.Println("ii:",ii)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("ii:%d",ii))
|
|
|
+ //fmt.Println("jj:",jj)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("jj:%d",jj))
|
|
|
+ //fmt.Println("tableIndex:",tableIndex)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("tableIndex:%d",tableIndex))
|
|
|
+
|
|
|
+ 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 +")"
|
|
|
+ fmt.Println("indexName:", indexName)
|
|
|
+ fmt.Println("valueF:", value)
|
|
|
+ //unit := ""
|
|
|
+ //if strings.Contains(area, "产量") {
|
|
|
+ // unit = "万吨"
|
|
|
+ //} else {
|
|
|
+ // unit = "%"
|
|
|
+ //}
|
|
|
+
|
|
|
+ item := &models.BaseFromOilchemIndex{
|
|
|
+ IndexName: indexName,
|
|
|
+ ClassifyId: 5,
|
|
|
+ Unit: "万吨",
|
|
|
+ Frequency: "月度",
|
|
|
+ Describe: "",
|
|
|
+ DataTime: dataTime,
|
|
|
+ Value: value,
|
|
|
+ Sort: 0,
|
|
|
+ CreateTime: time.Now(),
|
|
|
+ ModifyTime: time.Now(),
|
|
|
+ IndexNameStr: indexName,
|
|
|
+ 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
|
|
|
+}
|
|
|
+
|
|
|
+// 美国能源信息署最新石油库存报告 todo
|
|
|
+func AnalysisOilchemYuanYou11(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, "单位:") {
|
|
|
+ unit := strings.Replace(ptext, "单位:", "", -1)
|
|
|
+ //fmt.Println("unit:",unit)
|
|
|
+ unitList = append(unitList, unit)
|
|
|
+ }
|
|
|
+ //if strings.Contains(ptext, "国内独立炼厂产能利用率周数据") {
|
|
|
+ // title := ptext
|
|
|
+ // //fmt.Println("title:",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
|
|
|
+ }
|
|
|
+ //fmt.Println("createTime:",createTime)
|
|
|
+ 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:not(.firstRow)").Each(func(ii int, table2 *goquery.Selection) {
|
|
|
+ table2.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
|
|
|
+ }
|
|
|
+ //fmt.Println("table3:",text3)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("table3:%s",text3))
|
|
|
+ //fmt.Println("ii:",ii)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("ii:%d",ii))
|
|
|
+ //fmt.Println("jj:",jj)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("jj:%d",jj))
|
|
|
+ //fmt.Println("tableIndex:",tableIndex)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("tableIndex:%d",tableIndex))
|
|
|
+
|
|
|
+ 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 +")"
|
|
|
+ fmt.Println("indexName:", indexName)
|
|
|
+ fmt.Println("valueF:", value)
|
|
|
+ //unit := ""
|
|
|
+ //if strings.Contains(area, "产量") {
|
|
|
+ // unit = "万吨"
|
|
|
+ //} else {
|
|
|
+ // unit = "%"
|
|
|
+ //}
|
|
|
+
|
|
|
+ item := &models.BaseFromOilchemIndex{
|
|
|
+ IndexName: indexName,
|
|
|
+ ClassifyId: 5,
|
|
|
+ Unit: "万吨",
|
|
|
+ Frequency: "月度",
|
|
|
+ Describe: "",
|
|
|
+ DataTime: dataTime,
|
|
|
+ Value: value,
|
|
|
+ Sort: 0,
|
|
|
+ CreateTime: time.Now(),
|
|
|
+ ModifyTime: time.Now(),
|
|
|
+ IndexNameStr: indexName,
|
|
|
+ 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
|
|
|
+}
|
|
|
+
|
|
|
+// 美国API库存数据
|
|
|
+func AnalysisOilchemYuanYou12(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, "单位:") {
|
|
|
+ unit := strings.Replace(ptext, "单位:", "", -1)
|
|
|
+ //fmt.Println("unit:",unit)
|
|
|
+ unitList = append(unitList, unit)
|
|
|
+ }
|
|
|
+ //if strings.Contains(ptext, "国内独立炼厂产能利用率周数据") {
|
|
|
+ // title := ptext
|
|
|
+ // //fmt.Println("title:",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
|
|
|
+ }
|
|
|
+ //fmt.Println("createTime:",createTime)
|
|
|
+ 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:not(.firstRow)").Each(func(ii int, table2 *goquery.Selection) {
|
|
|
+ table2.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
|
|
|
+ }
|
|
|
+ //fmt.Println("table3:",text3)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("table3:%s",text3))
|
|
|
+ //fmt.Println("ii:",ii)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("ii:%d",ii))
|
|
|
+ //fmt.Println("jj:",jj)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("jj:%d",jj))
|
|
|
+ //fmt.Println("tableIndex:",tableIndex)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("tableIndex:%d",tableIndex))
|
|
|
+
|
|
|
+ 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
|
|
|
+ //}
|
|
|
+
|
|
|
+ if area == "与上周增长比" {
|
|
|
+ area = ""
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ indexName := "美国API原油库存数据"
|
|
|
+ fmt.Println("indexName:", indexName)
|
|
|
+ fmt.Println("valueF:", value)
|
|
|
+ //unit := ""
|
|
|
+ //if strings.Contains(area, "产量") {
|
|
|
+ // unit = "万吨"
|
|
|
+ //} else {
|
|
|
+ // unit = "%"
|
|
|
+ //}
|
|
|
+
|
|
|
+ item := &models.BaseFromOilchemIndex{
|
|
|
+ IndexName: indexName,
|
|
|
+ ClassifyId: 5,
|
|
|
+ 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 AnalysisOilchemYuanYou13(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, "单位:") {
|
|
|
+ unit := strings.Replace(ptext, "单位:", "", -1)
|
|
|
+ //fmt.Println("unit:",unit)
|
|
|
+ unitList = append(unitList, unit)
|
|
|
+ }
|
|
|
+ //if strings.Contains(ptext, "国内独立炼厂产能利用率周数据") {
|
|
|
+ // title := ptext
|
|
|
+ // //fmt.Println("title:",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
|
|
|
+ }
|
|
|
+ //fmt.Println("createTime:",createTime)
|
|
|
+ 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:not(.firstRow)").Each(func(ii int, table2 *goquery.Selection) {
|
|
|
+ table2.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
|
|
|
+ }
|
|
|
+ //fmt.Println("table3:",text3)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("table3:%s",text3))
|
|
|
+ //fmt.Println("ii:",ii)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("ii:%d",ii))
|
|
|
+ //fmt.Println("jj:",jj)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("jj:%d",jj))
|
|
|
+ //fmt.Println("tableIndex:",tableIndex)
|
|
|
+ //utils.FileLog.Info(fmt.Sprintf("tableIndex:%d",tableIndex))
|
|
|
+
|
|
|
+ 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+")"
|
|
|
+ fmt.Println("indexName:", indexName)
|
|
|
+ fmt.Println("valueF:", value)
|
|
|
+ //unit := ""
|
|
|
+ //if strings.Contains(area, "产量") {
|
|
|
+ // unit = "万吨"
|
|
|
+ //} else {
|
|
|
+ // unit = "%"
|
|
|
+ //}
|
|
|
+
|
|
|
+ item := &models.BaseFromOilchemIndex{
|
|
|
+ IndexName: indexName,
|
|
|
+ ClassifyId: 5,
|
|
|
+ Unit: "无",
|
|
|
+ Frequency: "月度",
|
|
|
+ Describe: "",
|
|
|
+ DataTime: dataTime,
|
|
|
+ Value: value,
|
|
|
+ Sort: 0,
|
|
|
+ CreateTime: time.Now(),
|
|
|
+ ModifyTime: time.Now(),
|
|
|
+ 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
|
|
|
+}
|