|
@@ -0,0 +1,981 @@
|
|
|
|
+package services
|
|
|
|
+
|
|
|
|
+import (
|
|
|
|
+ "bytes"
|
|
|
|
+ "fmt"
|
|
|
|
+ "github.com/PuerkitoBio/goquery"
|
|
|
|
+ "hongze/hongze_data_crawler/models"
|
|
|
|
+ "io/ioutil"
|
|
|
|
+ "mime/multipart"
|
|
|
|
+ "net/http"
|
|
|
|
+ "strconv"
|
|
|
|
+ "time"
|
|
|
|
+
|
|
|
|
+ //"golang.org/x/net/html"
|
|
|
|
+ "hongze/hongze_data_crawler/utils"
|
|
|
|
+ //"rdluck_tools/http"
|
|
|
|
+ "log"
|
|
|
|
+ "strings"
|
|
|
|
+)
|
|
|
|
+
|
|
|
|
+//郑州商品交易所持单排名
|
|
|
|
+func SyncRankingFromDalian() {
|
|
|
|
+ fmt.Println("start")
|
|
|
|
+ var str string
|
|
|
|
+ exitProductMap, exitContractIdMap, varietyArrMap := DoSearch(str)
|
|
|
|
+ //fmt.Println(exitProductMap)
|
|
|
|
+ //fmt.Println(exitContractIdMap)
|
|
|
|
+ //fmt.Println(varietyArrMap)
|
|
|
|
+ var varietyNum int
|
|
|
|
+ for k, v := range varietyArrMap {
|
|
|
|
+ if k < 3 {
|
|
|
|
+ if k-1 > varietyNum {
|
|
|
|
+ url := "http://www.dce.com.cn/publicweb/quotesdata/memberDealPosiQuotes.html"
|
|
|
|
+ method := "POST"
|
|
|
|
+ payload := &bytes.Buffer{}
|
|
|
|
+ writer := multipart.NewWriter(payload)
|
|
|
|
+ _ = writer.WriteField("memberDealPosiQuotes.variety", v)
|
|
|
|
+ _ = writer.WriteField("memberDealPosiQuotes.trade_type", "0")
|
|
|
|
+ _ = writer.WriteField("year", "2021")
|
|
|
|
+ _ = writer.WriteField("month", "9")
|
|
|
|
+ _ = writer.WriteField("day", "19")
|
|
|
|
+ _ = writer.WriteField("contract.variety_id", v)
|
|
|
|
+ _ = writer.WriteField("currDate", "20211019")
|
|
|
|
+ err := writer.Close()
|
|
|
|
+ if err != nil {
|
|
|
|
+ fmt.Println(err)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ client := &http.Client{}
|
|
|
|
+ req, err := http.NewRequest(method, url, payload)
|
|
|
|
+ if err != nil {
|
|
|
|
+ fmt.Println(err)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ req.Header.Add("Cookie", "JSESSIONID=36ACF02A59227A3854F9D5D5E2FB5F2E; WMONID=R5ojcAIIcx-")
|
|
|
|
+ req.Header.Set("Content-Type", writer.FormDataContentType())
|
|
|
|
+ res, err := client.Do(req)
|
|
|
|
+ if err != nil {
|
|
|
|
+ fmt.Println(err)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ defer res.Body.Close()
|
|
|
|
+ body, err := ioutil.ReadAll(res.Body)
|
|
|
|
+ if err != nil {
|
|
|
|
+ fmt.Println(err)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ _, exitContractIdMap, _ = DoSearch(string(body))
|
|
|
|
+ //fmt.Println(exitContractIdMap)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if k < -1 {
|
|
|
|
+ //fmt.Println(v)
|
|
|
|
+ for _, v2 := range exitContractIdMap {
|
|
|
|
+ //模拟form表单请求
|
|
|
|
+ url := "http://www.dce.com.cn/publicweb/quotesdata/memberDealPosiQuotes.html"
|
|
|
|
+ method := "POST"
|
|
|
|
+ payload := &bytes.Buffer{}
|
|
|
|
+ writer := multipart.NewWriter(payload)
|
|
|
|
+ _ = writer.WriteField("memberDealPosiQuotes.variety", v)
|
|
|
|
+ _ = writer.WriteField("memberDealPosiQuotes.trade_type", "0")
|
|
|
|
+ _ = writer.WriteField("year", "2021")
|
|
|
|
+ _ = writer.WriteField("month", "9")
|
|
|
|
+ _ = writer.WriteField("day", "19")
|
|
|
|
+ _ = writer.WriteField("contract.contract_id", v2)
|
|
|
|
+ _ = writer.WriteField("variety_id", v)
|
|
|
|
+ _ = writer.WriteField("currDate", "20211019")
|
|
|
|
+ err := writer.Close()
|
|
|
|
+ if err != nil {
|
|
|
|
+ fmt.Println(err)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ client := &http.Client{}
|
|
|
|
+ req, err := http.NewRequest(method, url, payload)
|
|
|
|
+ if err != nil {
|
|
|
|
+ fmt.Println(err)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ req.Header.Add("Cookie", "JSESSIONID=36ACF02A59227A3854F9D5D5E2FB5F2E; WMONID=R5ojcAIIcx-")
|
|
|
|
+ req.Header.Set("Content-Type", writer.FormDataContentType())
|
|
|
|
+ res, err := client.Do(req)
|
|
|
|
+ if err != nil {
|
|
|
|
+ fmt.Println(err)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ defer res.Body.Close()
|
|
|
|
+ body, err := ioutil.ReadAll(res.Body)
|
|
|
|
+ if err != nil {
|
|
|
|
+ fmt.Println(err)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ err = DoHtml(string(body), v2, "", exitProductMap[k], time.Now())
|
|
|
|
+ //fmt.Println(err)
|
|
|
|
+ //fmt.Println("解析:", v2, exitProductMap[k])
|
|
|
|
+ }
|
|
|
|
+ varietyNum++
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ fmt.Println("end")
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+//处理搜索条件
|
|
|
|
+func DoSearch(body string) (exitProductMaps, exitContractIdMaps, varietyArrMaps map[int]string) {
|
|
|
|
+ var str string
|
|
|
|
+ if body != "" {
|
|
|
|
+ str = body
|
|
|
|
+ } else {
|
|
|
|
+ str = `<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
|
|
+<html>
|
|
|
|
+ <head>
|
|
|
|
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
|
|
+ <meta http-equiv="X-UA-Compatible" content="IE=8" />
|
|
|
|
+ <title>大商所-行情/数据-日成交持仓排名</title>
|
|
|
|
+ <link type="text/css" href="/publicweb/css/main.css" rel="stylesheet" />
|
|
|
|
+ <link type="text/css" href="/publicweb/css/calendar.css" rel="stylesheet" />
|
|
|
|
+ <script type="text/javascript" src="/publicweb/js/jquery-1.7.2.min.js"></script>
|
|
|
|
+ <script type="text/javascript" src="/publicweb/js/calendar.js"></script>
|
|
|
|
+ <script type="text/javascript" src="/publicweb/js/staUtil.js"></script>
|
|
|
|
+ <script type="text/javascript" src="/publicweb/js/common.js"></script>
|
|
|
|
+ <script type="text/javascript">
|
|
|
|
+ // 品种赋值
|
|
|
|
+ function setVariety(variety){
|
|
|
|
+ // 设置品种
|
|
|
|
+ $("#variety").val(variety);
|
|
|
|
+ // 设置品种下的合约
|
|
|
|
+ $("#variety_id").val(variety);
|
|
|
|
+ $("#contract_id").val("all");
|
|
|
|
+ $("#memberDealPosiQuotesForm").submit();
|
|
|
|
+ }
|
|
|
|
+ // 类型赋值
|
|
|
|
+ function setTrade_type(trade_type){
|
|
|
|
+ $("#trade_type").val(trade_type);
|
|
|
|
+ $("#memberDealPosiQuotesForm").submit();
|
|
|
|
+ }
|
|
|
|
+ // 合约赋值
|
|
|
|
+ function setContract_id(contract_id){
|
|
|
|
+ $("#contract_id").val(contract_id);
|
|
|
|
+ $("#memberDealPosiQuotesForm").submit();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 导出查询结果
|
|
|
|
+ function exportData(type){
|
|
|
|
+
|
|
|
|
+ $("#exportFlag").val(type);
|
|
|
|
+ $("#exportForm").submit();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //批量导出查询结果
|
|
|
|
+ function batchExportData(type){
|
|
|
|
+
|
|
|
|
+ // 启用遮罩效果,暂时保留
|
|
|
|
+ // showBg('dialog','dialog_content');
|
|
|
|
+
|
|
|
|
+ $("#batchExportFlag").val(type);
|
|
|
|
+
|
|
|
|
+ // 批量下载提示信息
|
|
|
|
+ if(confirm("您将批量下载当日成交持仓排名数据!")){
|
|
|
|
+ $("#batchExportForm").submit();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ </script>
|
|
|
|
+ </head>
|
|
|
|
+ <body>
|
|
|
|
+ <form action="/publicweb/quotesdata/memberDealPosiQuotes.html" name="memberDealPosiQuotesForm" id="memberDealPosiQuotesForm" method="post">
|
|
|
|
+ <input type="hidden" id="variety" name="memberDealPosiQuotes.variety" value="a" />
|
|
|
|
+ <input type="hidden" id="trade_type" name="memberDealPosiQuotes.trade_type" value="0" />
|
|
|
|
+ <input type="hidden" name="year" id="year" value="2021" />
|
|
|
|
+ <input type="hidden" name="month" id="month" value="9" />
|
|
|
|
+ <input type="hidden" name="day" id="day" value="19" />
|
|
|
|
+ <input type="hidden" id="contract_id" name="contract.contract_id" value="a2111" />
|
|
|
|
+ <input type="hidden" id="variety_id" name="contract.variety_id" value="a" />
|
|
|
|
+ <input type="hidden" id="currDate" value="20211019" />
|
|
|
|
+ <div class="tradeArea">
|
|
|
|
+ <div class="tradeSel">
|
|
|
|
+ <div id="cal" class="selBox">
|
|
|
|
+ </div>
|
|
|
|
+ <!-- 品种选择区域 -->
|
|
|
|
+ <div class="selBox">
|
|
|
|
+ <div>
|
|
|
|
+ <ul class="keyWord clearfix">
|
|
|
|
+ <li class="keyWord_100"> <input type="radio" name="" value="" onclick="javascript:setVariety('a');" checked="" />豆一 </li>
|
|
|
|
+ <li class="keyWord_100"> <input type="radio" name="" value="" onclick="javascript:setVariety('b');" />豆二 </li>
|
|
|
|
+ <li class="keyWord_100"> <input type="radio" name="" value="" onclick="javascript:setVariety('m');" />豆粕 </li>
|
|
|
|
+ <li class="keyWord_100"> <input type="radio" name="" value="" onclick="javascript:setVariety('y');" />豆油 </li>
|
|
|
|
+ <li class="keyWord_100"> <input type="radio" name="" value="" onclick="javascript:setVariety('p');" />棕榈油 </li>
|
|
|
|
+ <li class="keyWord_100"> <input type="radio" name="" value="" onclick="javascript:setVariety('c');" />玉米 </li>
|
|
|
|
+ <li class="keyWord_100"> <input type="radio" name="" value="" onclick="javascript:setVariety('cs');" />玉米淀粉 </li>
|
|
|
|
+ <li class="keyWord_100"> <input type="radio" name="" value="" onclick="javascript:setVariety('jd');" />鸡蛋 </li>
|
|
|
|
+ <li class="keyWord_100"> <input type="radio" name="" value="" onclick="javascript:setVariety('rr');" />粳米 </li>
|
|
|
|
+ <li class="keyWord_100"> <input type="radio" name="" value="" onclick="javascript:setVariety('fb');" />纤维板 </li>
|
|
|
|
+ <li class="keyWord_100"> <input type="radio" name="" value="" onclick="javascript:setVariety('bb');" />胶合板 </li>
|
|
|
|
+ <li class="keyWord_100"> <input type="radio" name="" value="" onclick="javascript:setVariety('lh');" />生猪 </li>
|
|
|
|
+ </ul>
|
|
|
|
+ <ul class="keyWord_x"></ul>
|
|
|
|
+ <ul class="keyWord clearfix">
|
|
|
|
+ <li class="keyWord_100"> <input type="radio" name="" value="" onclick="javascript:setVariety('l');" />聚乙烯 </li>
|
|
|
|
+ <li class="keyWord_100"> <input type="radio" name="" value="" onclick="javascript:setVariety('v');" />聚氯乙烯 </li>
|
|
|
|
+ <li class="keyWord_100"> <input type="radio" name="" value="" onclick="javascript:setVariety('pp');" />聚丙烯 </li>
|
|
|
|
+ <li class="keyWord_100"> <input type="radio" name="" value="" onclick="javascript:setVariety('eb');" />苯乙烯 </li>
|
|
|
|
+ <li class="keyWord_100"> <input type="radio" name="" value="" onclick="javascript:setVariety('j');" />焦炭 </li>
|
|
|
|
+ <li class="keyWord_100"> <input type="radio" name="" value="" onclick="javascript:setVariety('jm');" />焦煤 </li>
|
|
|
|
+ <li class="keyWord_100"> <input type="radio" name="" value="" onclick="javascript:setVariety('i');" />铁矿石 </li>
|
|
|
|
+ <li class="keyWord_100"> <input type="radio" name="" value="" onclick="javascript:setVariety('eg');" />乙二醇 </li>
|
|
|
|
+ <li class="keyWord_100"> <input type="radio" name="" value="" onclick="javascript:setVariety('pg');" />液化石油气 </li>
|
|
|
|
+ </ul>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <!-- 合约选择区域 -->
|
|
|
|
+ <div class="selBox">
|
|
|
|
+ <div>
|
|
|
|
+ <!-- modify by wenhongxue 20190104 取消页面"全部"的选择,默认选中第一个合约 -->
|
|
|
|
+ <ul class="keyWord clearfix">
|
|
|
|
+ <li class="keyWord_65"> <input type="radio" name="contract" value="" onclick="javascript:setContract_id('a2111');" checked="" />a2111 </li>
|
|
|
|
+ <li class="keyWord_65"> <input type="radio" name="contract" value="" onclick="javascript:setContract_id('a2201');" />a2201 </li>
|
|
|
|
+ <li class="keyWord_65"> <input type="radio" name="contract" value="" onclick="javascript:setContract_id('a2203');" />a2203 </li>
|
|
|
|
+ </ul>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="selBox noBorder">
|
|
|
|
+ <div>
|
|
|
|
+ <ul class="keyWord02 clearfix">
|
|
|
|
+ <li><a href="javascript:setTrade_type('0');" class="currentKey">期货</a></li>
|
|
|
|
+ <li><a href="javascript:setTrade_type('1');javascript:setVariety('m');">期权</a></li>
|
|
|
|
+ </ul>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="tradeResult02">
|
|
|
|
+ <p>大连商品交易所 日成交持仓排名</p>
|
|
|
|
+ <p><span> 合约代码:a2111 查询日期:20211019</span></p>
|
|
|
|
+ <ul class="btns clearfix">
|
|
|
|
+ <li><a href="javascript:print();"><img src="/publicweb/images/common/pic_icon03.gif" alt="打印" />打印</a></li>
|
|
|
|
+ <li><a href="javascript:exportData('excel')"><img src="/publicweb/images/common/pic_icon02.gif" alt="导出表格" />导出表格</a></li>
|
|
|
|
+ <li><a href="javascript:exportData('txt')"><img src="/publicweb/images/common/pic_icon01.gif" alt="导出文本" />导出文本</a></li>
|
|
|
|
+ <li><a href="javascript:batchExportData('batch')"><img src="/publicweb/images/common/pic_icon03.gif" alt="批量下载" />批量下载</a></li>
|
|
|
|
+ </ul>
|
|
|
|
+ <div class="dataWrapper_member_deal_posi" id="printData">
|
|
|
|
+ <div class="dataArea">
|
|
|
|
+ <table cellpadding="0" cellspacing="0">
|
|
|
|
+ <tbody>
|
|
|
|
+ <tr>
|
|
|
|
+ <th> 会员类别</th>
|
|
|
|
+ <th> 总成交量 </th>
|
|
|
|
+ <th> 增减</th>
|
|
|
|
+ <th> 总持买单量</th>
|
|
|
|
+ <th> 增减</th>
|
|
|
|
+ <th> 总持卖单量</th>
|
|
|
|
+ <th> 增减</th>
|
|
|
|
+ </tr>
|
|
|
|
+ <!-- 汇总 -->
|
|
|
|
+ <tr>
|
|
|
|
+ <td align="center">期货公司会员</td>
|
|
|
|
+ <td class="td-right">116,526</td>
|
|
|
|
+ <td class="td-right">-28,029</td>
|
|
|
|
+ <td class="td-right">25,831</td>
|
|
|
|
+ <td class="td-right">-3,794</td>
|
|
|
|
+ <td class="td-right">27,066</td>
|
|
|
|
+ <td class="td-right">-2,978</td>
|
|
|
|
+ </tr>
|
|
|
|
+ </tbody>
|
|
|
|
+ </table>
|
|
|
|
+ <table cellpadding="0" cellspacing="0">
|
|
|
|
+ <tbody>
|
|
|
|
+ <tr>
|
|
|
|
+ <th> 名次</th>
|
|
|
|
+ <th> 会员简称 </th>
|
|
|
|
+ <th> 成交量</th>
|
|
|
|
+ <th> 增减</th>
|
|
|
|
+ <th> 名次</th>
|
|
|
|
+ <th> 会员简称</th>
|
|
|
|
+ <th> 持买单量</th>
|
|
|
|
+ <th> 增减</th>
|
|
|
|
+ <th> 名次</th>
|
|
|
|
+ <th> 会员简称</th>
|
|
|
|
+ <th> 持卖单量</th>
|
|
|
|
+ <th> 增减</th>
|
|
|
|
+ </tr>
|
|
|
|
+ <!-- 列表内容 -->
|
|
|
|
+ <tr>
|
|
|
|
+ <td>1</td>
|
|
|
|
+ <td>华泰期货</td>
|
|
|
|
+ <td class="td-right">19,087</td>
|
|
|
|
+ <td class="td-right">-5,243</td>
|
|
|
|
+ <td>1</td>
|
|
|
|
+ <td>国泰君安</td>
|
|
|
|
+ <td class="td-right">3,774</td>
|
|
|
|
+ <td class="td-right">-762</td>
|
|
|
|
+ <td>1</td>
|
|
|
|
+ <td>一德期货</td>
|
|
|
|
+ <td class="td-right">6,598</td>
|
|
|
|
+ <td class="td-right">71</td>
|
|
|
|
+ </tr>
|
|
|
|
+ <tr>
|
|
|
|
+ <td>2</td>
|
|
|
|
+ <td>中信期货</td>
|
|
|
|
+ <td class="td-right">15,920</td>
|
|
|
|
+ <td class="td-right">-3,848</td>
|
|
|
|
+ <td>2</td>
|
|
|
|
+ <td>东证期货</td>
|
|
|
|
+ <td class="td-right">3,590</td>
|
|
|
|
+ <td class="td-right">-458</td>
|
|
|
|
+ <td>2</td>
|
|
|
|
+ <td>招商期货</td>
|
|
|
|
+ <td class="td-right">3,055</td>
|
|
|
|
+ <td class="td-right">-9</td>
|
|
|
|
+ </tr>
|
|
|
|
+ <tr>
|
|
|
|
+ <td>3</td>
|
|
|
|
+ <td>东证期货</td>
|
|
|
|
+ <td class="td-right">13,487</td>
|
|
|
|
+ <td class="td-right">-6,777</td>
|
|
|
|
+ <td>3</td>
|
|
|
|
+ <td>招商期货</td>
|
|
|
|
+ <td class="td-right">3,339</td>
|
|
|
|
+ <td class="td-right">-148</td>
|
|
|
|
+ <td>3</td>
|
|
|
|
+ <td>申银万国</td>
|
|
|
|
+ <td class="td-right">2,403</td>
|
|
|
|
+ <td class="td-right">-12</td>
|
|
|
|
+ </tr>
|
|
|
|
+ <tr>
|
|
|
|
+ <td>4</td>
|
|
|
|
+ <td>国泰君安</td>
|
|
|
|
+ <td class="td-right">12,689</td>
|
|
|
|
+ <td class="td-right">1,725</td>
|
|
|
|
+ <td>4</td>
|
|
|
|
+ <td>华安期货</td>
|
|
|
|
+ <td class="td-right">2,250</td>
|
|
|
|
+ <td class="td-right">106</td>
|
|
|
|
+ <td>4</td>
|
|
|
|
+ <td>浙商期货</td>
|
|
|
|
+ <td class="td-right">2,257</td>
|
|
|
|
+ <td class="td-right">-24</td>
|
|
|
|
+ </tr>
|
|
|
|
+ <tr>
|
|
|
|
+ <td>5</td>
|
|
|
|
+ <td>国富期货</td>
|
|
|
|
+ <td class="td-right">7,395</td>
|
|
|
|
+ <td class="td-right">-2,569</td>
|
|
|
|
+ <td>5</td>
|
|
|
|
+ <td>一德期货</td>
|
|
|
|
+ <td class="td-right">1,840</td>
|
|
|
|
+ <td class="td-right">1,092</td>
|
|
|
|
+ <td>5</td>
|
|
|
|
+ <td>国富期货</td>
|
|
|
|
+ <td class="td-right">1,887</td>
|
|
|
|
+ <td class="td-right">-276</td>
|
|
|
|
+ </tr>
|
|
|
|
+ <tr>
|
|
|
|
+ <td>6</td>
|
|
|
|
+ <td>海通期货</td>
|
|
|
|
+ <td class="td-right">6,225</td>
|
|
|
|
+ <td class="td-right">-3,426</td>
|
|
|
|
+ <td>6</td>
|
|
|
|
+ <td>中信期货</td>
|
|
|
|
+ <td class="td-right">1,802</td>
|
|
|
|
+ <td class="td-right">-1,541</td>
|
|
|
|
+ <td>6</td>
|
|
|
|
+ <td>中州期货</td>
|
|
|
|
+ <td class="td-right">1,716</td>
|
|
|
|
+ <td class="td-right">-50</td>
|
|
|
|
+ </tr>
|
|
|
|
+ <tr>
|
|
|
|
+ <td>7</td>
|
|
|
|
+ <td>广发期货</td>
|
|
|
|
+ <td class="td-right">5,722</td>
|
|
|
|
+ <td class="td-right">744</td>
|
|
|
|
+ <td>7</td>
|
|
|
|
+ <td>申银万国</td>
|
|
|
|
+ <td class="td-right">1,018</td>
|
|
|
|
+ <td class="td-right">-151</td>
|
|
|
|
+ <td>7</td>
|
|
|
|
+ <td>海通期货</td>
|
|
|
|
+ <td class="td-right">1,151</td>
|
|
|
|
+ <td class="td-right">144</td>
|
|
|
|
+ </tr>
|
|
|
|
+ <tr>
|
|
|
|
+ <td>8</td>
|
|
|
|
+ <td>兴证期货</td>
|
|
|
|
+ <td class="td-right">4,647</td>
|
|
|
|
+ <td class="td-right">-3,405</td>
|
|
|
|
+ <td>8</td>
|
|
|
|
+ <td>海通期货</td>
|
|
|
|
+ <td class="td-right">1,014</td>
|
|
|
|
+ <td class="td-right">-119</td>
|
|
|
|
+ <td>8</td>
|
|
|
|
+ <td>中信期货</td>
|
|
|
|
+ <td class="td-right">1,015</td>
|
|
|
|
+ <td class="td-right">-363</td>
|
|
|
|
+ </tr>
|
|
|
|
+ <tr>
|
|
|
|
+ <td>9</td>
|
|
|
|
+ <td>光大期货</td>
|
|
|
|
+ <td class="td-right">3,714</td>
|
|
|
|
+ <td class="td-right">-804</td>
|
|
|
|
+ <td>9</td>
|
|
|
|
+ <td>永安期货</td>
|
|
|
|
+ <td class="td-right">727</td>
|
|
|
|
+ <td class="td-right">82</td>
|
|
|
|
+ <td>9</td>
|
|
|
|
+ <td>银河期货</td>
|
|
|
|
+ <td class="td-right">979</td>
|
|
|
|
+ <td class="td-right">133</td>
|
|
|
|
+ </tr>
|
|
|
|
+ <tr>
|
|
|
|
+ <td>10</td>
|
|
|
|
+ <td>华闻期货</td>
|
|
|
|
+ <td class="td-right">3,404</td>
|
|
|
|
+ <td class="td-right">503</td>
|
|
|
|
+ <td>10</td>
|
|
|
|
+ <td>光大期货</td>
|
|
|
|
+ <td class="td-right">695</td>
|
|
|
|
+ <td class="td-right">169</td>
|
|
|
|
+ <td>10</td>
|
|
|
|
+ <td>宏源期货</td>
|
|
|
|
+ <td class="td-right">785</td>
|
|
|
|
+ <td class="td-right">-323</td>
|
|
|
|
+ </tr>
|
|
|
|
+ <tr>
|
|
|
|
+ <td>11</td>
|
|
|
|
+ <td>东方财富</td>
|
|
|
|
+ <td class="td-right">2,988</td>
|
|
|
|
+ <td class="td-right">698</td>
|
|
|
|
+ <td>11</td>
|
|
|
|
+ <td>华泰期货</td>
|
|
|
|
+ <td class="td-right">691</td>
|
|
|
|
+ <td class="td-right">-550</td>
|
|
|
|
+ <td>11</td>
|
|
|
|
+ <td>新湖期货</td>
|
|
|
|
+ <td class="td-right">715</td>
|
|
|
|
+ <td class="td-right">-382</td>
|
|
|
|
+ </tr>
|
|
|
|
+ <tr>
|
|
|
|
+ <td>12</td>
|
|
|
|
+ <td>一德期货</td>
|
|
|
|
+ <td class="td-right">2,823</td>
|
|
|
|
+ <td class="td-right">-1,270</td>
|
|
|
|
+ <td>12</td>
|
|
|
|
+ <td>金元期货</td>
|
|
|
|
+ <td class="td-right">688</td>
|
|
|
|
+ <td class="td-right">-278</td>
|
|
|
|
+ <td>12</td>
|
|
|
|
+ <td>格林大华</td>
|
|
|
|
+ <td class="td-right">694</td>
|
|
|
|
+ <td class="td-right">-160</td>
|
|
|
|
+ </tr>
|
|
|
|
+ <tr>
|
|
|
|
+ <td>13</td>
|
|
|
|
+ <td>申银万国</td>
|
|
|
|
+ <td class="td-right">2,809</td>
|
|
|
|
+ <td class="td-right">-966</td>
|
|
|
|
+ <td>13</td>
|
|
|
|
+ <td>银河期货</td>
|
|
|
|
+ <td class="td-right">667</td>
|
|
|
|
+ <td class="td-right">-206</td>
|
|
|
|
+ <td>13</td>
|
|
|
|
+ <td>东证期货</td>
|
|
|
|
+ <td class="td-right">640</td>
|
|
|
|
+ <td class="td-right">-457</td>
|
|
|
|
+ </tr>
|
|
|
|
+ <tr>
|
|
|
|
+ <td>14</td>
|
|
|
|
+ <td>中原期货</td>
|
|
|
|
+ <td class="td-right">2,515</td>
|
|
|
|
+ <td class="td-right">232</td>
|
|
|
|
+ <td>14</td>
|
|
|
|
+ <td>东航期货</td>
|
|
|
|
+ <td class="td-right">663</td>
|
|
|
|
+ <td class="td-right">-31</td>
|
|
|
|
+ <td>14</td>
|
|
|
|
+ <td>国投安信</td>
|
|
|
|
+ <td class="td-right">564</td>
|
|
|
|
+ <td class="td-right">12</td>
|
|
|
|
+ </tr>
|
|
|
|
+ <tr>
|
|
|
|
+ <td>15</td>
|
|
|
|
+ <td>徽商期货</td>
|
|
|
|
+ <td class="td-right">2,503</td>
|
|
|
|
+ <td class="td-right">960</td>
|
|
|
|
+ <td>15</td>
|
|
|
|
+ <td>瑞达期货</td>
|
|
|
|
+ <td class="td-right">589</td>
|
|
|
|
+ <td class="td-right">-509</td>
|
|
|
|
+ <td>15</td>
|
|
|
|
+ <td>鲁证期货</td>
|
|
|
|
+ <td class="td-right">531</td>
|
|
|
|
+ <td class="td-right">-168</td>
|
|
|
|
+ </tr>
|
|
|
|
+ <tr>
|
|
|
|
+ <td>16</td>
|
|
|
|
+ <td>南华期货</td>
|
|
|
|
+ <td class="td-right">2,502</td>
|
|
|
|
+ <td class="td-right">-147</td>
|
|
|
|
+ <td>16</td>
|
|
|
|
+ <td>兴证期货</td>
|
|
|
|
+ <td class="td-right">583</td>
|
|
|
|
+ <td class="td-right">-650</td>
|
|
|
|
+ <td>16</td>
|
|
|
|
+ <td>瑞达期货</td>
|
|
|
|
+ <td class="td-right">527</td>
|
|
|
|
+ <td class="td-right">-487</td>
|
|
|
|
+ </tr>
|
|
|
|
+ <tr>
|
|
|
|
+ <td>17</td>
|
|
|
|
+ <td>鲁证期货</td>
|
|
|
|
+ <td class="td-right">2,275</td>
|
|
|
|
+ <td class="td-right">-2,825</td>
|
|
|
|
+ <td>17</td>
|
|
|
|
+ <td>鲁证期货</td>
|
|
|
|
+ <td class="td-right">563</td>
|
|
|
|
+ <td class="td-right">-11</td>
|
|
|
|
+ <td>17</td>
|
|
|
|
+ <td>华泰期货</td>
|
|
|
|
+ <td class="td-right">425</td>
|
|
|
|
+ <td class="td-right">3</td>
|
|
|
|
+ </tr>
|
|
|
|
+ <tr>
|
|
|
|
+ <td>18</td>
|
|
|
|
+ <td>银河期货</td>
|
|
|
|
+ <td class="td-right">2,213</td>
|
|
|
|
+ <td class="td-right">-1,701</td>
|
|
|
|
+ <td>18</td>
|
|
|
|
+ <td>中原期货</td>
|
|
|
|
+ <td class="td-right">519</td>
|
|
|
|
+ <td class="td-right">122</td>
|
|
|
|
+ <td>18</td>
|
|
|
|
+ <td>华闻期货</td>
|
|
|
|
+ <td class="td-right">398</td>
|
|
|
|
+ <td class="td-right">-114</td>
|
|
|
|
+ </tr>
|
|
|
|
+ <tr>
|
|
|
|
+ <td>19</td>
|
|
|
|
+ <td>国信期货</td>
|
|
|
|
+ <td class="td-right">1,805</td>
|
|
|
|
+ <td class="td-right">472</td>
|
|
|
|
+ <td>19</td>
|
|
|
|
+ <td>东吴期货</td>
|
|
|
|
+ <td class="td-right">410</td>
|
|
|
|
+ <td class="td-right">-7</td>
|
|
|
|
+ <td>19</td>
|
|
|
|
+ <td>中天期货</td>
|
|
|
|
+ <td class="td-right">363</td>
|
|
|
|
+ <td class="td-right">0</td>
|
|
|
|
+ </tr>
|
|
|
|
+ <tr>
|
|
|
|
+ <td>20</td>
|
|
|
|
+ <td>招金期货</td>
|
|
|
|
+ <td class="td-right">1,803</td>
|
|
|
|
+ <td class="td-right">-382</td>
|
|
|
|
+ <td>20</td>
|
|
|
|
+ <td>东方财富</td>
|
|
|
|
+ <td class="td-right">409</td>
|
|
|
|
+ <td class="td-right">56</td>
|
|
|
|
+ <td>20</td>
|
|
|
|
+ <td>南华期货</td>
|
|
|
|
+ <td class="td-right">363</td>
|
|
|
|
+ <td class="td-right">-516</td>
|
|
|
|
+ </tr>
|
|
|
|
+ <tr>
|
|
|
|
+ <td>总计</td>
|
|
|
|
+ <td> </td>
|
|
|
|
+ <td class="td-right">116,526</td>
|
|
|
|
+ <td class="td-right">-28,029</td>
|
|
|
|
+ <td>总计</td>
|
|
|
|
+ <td> </td>
|
|
|
|
+ <td class="td-right">25,831</td>
|
|
|
|
+ <td class="td-right">-3,794</td>
|
|
|
|
+ <td>总计</td>
|
|
|
|
+ <td> </td>
|
|
|
|
+ <td class="td-right">27,066</td>
|
|
|
|
+ <td class="td-right">-2,978</td>
|
|
|
|
+ </tr>
|
|
|
|
+ </tbody>
|
|
|
|
+ </table>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <ul class="infoTip">
|
|
|
|
+ <li style="font-size:14px;">说明: </li>
|
|
|
|
+ <li style="font-size:14px;">(1) 成交量、持买单量、持卖单量:手 </li>
|
|
|
|
+ <!-- <li style="font-size:14px;">(2) 根据相关规则,期货品种信息公布所有合约,期权品种信息公布活跃月份(标的期货合约双边持仓量大于、等于2万手)合约系列 。</li> -->
|
|
|
|
+ <!-- modified by wenhongxue 20190605 [双边改单边项目] start -->
|
|
|
|
+ <li style="font-size:14px;">(2) 根据相关规则,期货品种信息公布活跃月份(单边持仓量大于、等于1万手)合约,期权品种信息公布活跃月份(标的期货合约单边持仓量大于、等于1万手)合约系列 。</li>
|
|
|
|
+ <!-- modified by wenhongxue 20190605 [双边改单边项目] end -->
|
|
|
|
+ </ul>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </form>
|
|
|
|
+ <form action="/publicweb/quotesdata/exportMemberDealPosiQuotesData.html" name="exportForm" id="exportForm" method="post">
|
|
|
|
+ <input type="hidden" id="variety" name="memberDealPosiQuotes.variety" value="a" />
|
|
|
|
+ <input type="hidden" id="trade_type" name="memberDealPosiQuotes.trade_type" value="0" />
|
|
|
|
+ <input type="hidden" id="contract_id" name="contract.contract_id" value="a2111" />
|
|
|
|
+ <input type="hidden" id="variety_id" name="contract.variety_id" value="a" />
|
|
|
|
+ <input type="hidden" name="year" id="year" value="2021" />
|
|
|
|
+ <input type="hidden" name="month" id="month" value="9" />
|
|
|
|
+ <input type="hidden" name="day" id="day" value="19" />
|
|
|
|
+ <input type="hidden" name="exportFlag" id="exportFlag" />
|
|
|
|
+ </form>
|
|
|
|
+ <form action="/publicweb/quotesdata/exportMemberDealPosiQuotesBatchData.html" name="batchExportForm" id="batchExportForm" method="post">
|
|
|
|
+ <input type="hidden" id="variety" name="memberDealPosiQuotes.variety" value="a" />
|
|
|
|
+ <input type="hidden" id="trade_type" name="memberDealPosiQuotes.trade_type" value="0" />
|
|
|
|
+ <input type="hidden" id="contract_id" name="contract.contract_id" value="a2111" />
|
|
|
|
+ <input type="hidden" id="variety_id" name="contract.variety_id" value="a" />
|
|
|
|
+ <input type="hidden" name="year" id="year" value="2021" />
|
|
|
|
+ <input type="hidden" name="month" id="month" value="9" />
|
|
|
|
+ <input type="hidden" name="day" id="day" value="19" />
|
|
|
|
+ <input type="hidden" name="batchExportFlag" id="batchExportFlag" />
|
|
|
|
+ </form>
|
|
|
|
+ <input id="eprotalCurrentSiteId" value="459264" type="hidden" />
|
|
|
|
+ <input id="eprotalCurrentPageId" value="rcjccpm" type="hidden" />
|
|
|
|
+ <script type="text/javascript">
|
|
|
|
+ var currYear_='2021';
|
|
|
|
+ var nowDate = $('#currDate').val();
|
|
|
|
+ var nyear=$('#year').val();
|
|
|
|
+ var nmonth=$('#month').val();
|
|
|
|
+ var nday=$('#day').val();
|
|
|
|
+ if(nowDate){
|
|
|
|
+ nyear = nowDate.substr(0,4);
|
|
|
|
+ nmonth = nowDate.substr(4,6);
|
|
|
|
+ if(nmonth.substring(0,1)=='0'){
|
|
|
|
+ nmonth=parseInt(nmonth.substring(1,2))-1+'';
|
|
|
|
+ }else{
|
|
|
|
+ nmonth=parseInt(nmonth.substring(0,2))-1+'';
|
|
|
|
+ }
|
|
|
|
+ nday = nowDate.substr(6,8);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //参数分别是渲染日历的div的id,查询时间的年份,月份,日期,form表单id
|
|
|
|
+ setCurrYear(currYear_);
|
|
|
|
+ showCalendar(document.getElementById("cal"),nyear,nmonth,nday,'memberDealPosiQuotesForm','ch');
|
|
|
|
+</script>
|
|
|
|
+ <script type="text/javascript">
|
|
|
|
+ dataStatistic();
|
|
|
|
+</script>
|
|
|
|
+ </body>
|
|
|
|
+</html>`
|
|
|
|
+ }
|
|
|
|
+ doc, err := goquery.NewDocumentFromReader(strings.NewReader(str))
|
|
|
|
+ if err != nil {
|
|
|
|
+ log.Fatal(err)
|
|
|
|
+ }
|
|
|
|
+ exitProductMap := make(map[int]string)
|
|
|
|
+ exitContractIdMap := make(map[int]string)
|
|
|
|
+ varietyArrMap := make(map[int]string)
|
|
|
|
+ //var productName string
|
|
|
|
+ ul := doc.Find(".selBox ul")
|
|
|
|
+ var pNum int
|
|
|
|
+ var cidNum int
|
|
|
|
+ var vNum int
|
|
|
|
+ ul.Each(func(i int, s *goquery.Selection) {
|
|
|
|
+ //解析标签
|
|
|
|
+ //fmt.Println(i, s.Text())
|
|
|
|
+ ulTxt := s.Text()
|
|
|
|
+ if ulTxt != "" && (i == 0 || i == 2) {
|
|
|
|
+ ulTxtArr := strings.Split(ulTxt, " ")
|
|
|
|
+ for _, v := range ulTxtArr {
|
|
|
|
+ v = strings.Replace(v, "\n", "", -1)
|
|
|
|
+ v = strings.Replace(v, " ", "", -1)
|
|
|
|
+ if v != "" {
|
|
|
|
+ exitProductMap[pNum] = v
|
|
|
|
+ pNum++
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if ulTxt != "" && i == 3 {
|
|
|
|
+ cidTxtArr := strings.Split(ulTxt, " ")
|
|
|
|
+ for _, v := range cidTxtArr {
|
|
|
|
+ v = strings.Replace(v, "\n", "", -1)
|
|
|
|
+ v = strings.Replace(v, " ", "", -1)
|
|
|
|
+ if v != "" {
|
|
|
|
+ exitContractIdMap[cidNum] = v
|
|
|
|
+ cidNum++
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ varietyArr := strings.Split(str, "onclick=\"javascript:setVariety('")
|
|
|
|
+
|
|
|
|
+ for _, v := range varietyArr {
|
|
|
|
+ strnum := strings.Index(v, "');")
|
|
|
|
+ if strnum > 0 {
|
|
|
|
+ varietyStr := v[0:strnum]
|
|
|
|
+ if len(varietyStr) < 10 {
|
|
|
|
+ //fmt.Println(strnum, varietyStr)
|
|
|
|
+ varietyArrMap[vNum] = varietyStr
|
|
|
|
+ vNum++
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ exitProductMaps = exitProductMap
|
|
|
|
+ exitContractIdMaps = exitContractIdMap
|
|
|
|
+ varietyArrMaps = varietyArrMap
|
|
|
|
+ fmt.Println(exitProductMaps)
|
|
|
|
+ fmt.Println(exitContractIdMaps)
|
|
|
|
+ fmt.Println(varietyArrMaps)
|
|
|
|
+ return
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+//处理解析Html
|
|
|
|
+func DoHtml(body, name, carietyCode, contractId string, timeDate time.Time) (err error) {
|
|
|
|
+ str := body
|
|
|
|
+ doc, err := goquery.NewDocumentFromReader(strings.NewReader(str))
|
|
|
|
+ if err != nil {
|
|
|
|
+ log.Fatal(err)
|
|
|
|
+ }
|
|
|
|
+ table := doc.Find("table")
|
|
|
|
+ var classifyName, tradeDate string
|
|
|
|
+ var dealSuffix, dealZjSuffix1, dealZjSuffix2, dealZjSuffix3, buySuffix, sellSuffix, userName1, userName2, userName3 string
|
|
|
|
+
|
|
|
|
+ table.Find("tr").Each(func(i int, tr *goquery.Selection) {
|
|
|
|
+ tds := tr.Find("td")
|
|
|
|
+ //fmt.Println( tds.Length(),"长度:",i)
|
|
|
|
+ if tds.Length() == 0 || tds.Length() == 7 || i == 23 {
|
|
|
|
+ tdText := tds.Text()
|
|
|
|
+ utils.FileLog.Info(tdText)
|
|
|
|
+ if tdText != "" {
|
|
|
|
+ tdTextArr := strings.Split(tdText, " ")
|
|
|
|
+ for k, v := range tdTextArr {
|
|
|
|
+ //fmt.Println(k, v)
|
|
|
|
+ if k == 0 {
|
|
|
|
+ classifyName = v
|
|
|
|
+ } else {
|
|
|
|
+ tradeDate = v
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var items []*models.BaseFromTradeDalianIndexItem
|
|
|
|
+ item := new(models.BaseFromTradeDalianIndexItem)
|
|
|
|
+ item2 := new(models.BaseFromTradeDalianIndexItem)
|
|
|
|
+ item3 := new(models.BaseFromTradeDalianIndexItem)
|
|
|
|
+ tds.Each(func(tk int, td *goquery.Selection) {
|
|
|
|
+ tdText := td.Text()
|
|
|
|
+ //fmt.Println(tk,tdText)
|
|
|
|
+ if tk == 0 { //名次
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ if tk == 1 { //会员简称
|
|
|
|
+ userName1 = tdText
|
|
|
|
+ }
|
|
|
|
+ if tk == 2 { //成交量
|
|
|
|
+ //dealSuffix = tdText
|
|
|
|
+ dealSuffix = strings.Replace(tdText, ",", "", -1)
|
|
|
|
+ fmt.Println("成交量", dealSuffix, "原文本", tdText)
|
|
|
|
+ }
|
|
|
|
+ if tk == 3 { //增减
|
|
|
|
+ dealZjSuffix1 = strings.Replace(tdText, ",", "", -1)
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if tk == 5 { //会员简称
|
|
|
|
+ userName2 = tdText
|
|
|
|
+ }
|
|
|
|
+ if tk == 6 { //持买单量
|
|
|
|
+ buySuffix = strings.Replace(tdText, ",", "", -1)
|
|
|
|
+ }
|
|
|
|
+ if tk == 7 { //增减
|
|
|
|
+ dealZjSuffix2 = strings.Replace(tdText, ",", "", -1)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if tk == 9 { //会员简称
|
|
|
|
+ userName3 = tdText
|
|
|
|
+ }
|
|
|
|
+ if tk == 10 { //持买单量
|
|
|
|
+ sellSuffix = strings.Replace(tdText, ",", "", -1)
|
|
|
|
+ }
|
|
|
|
+ if tk == 11 { //增减
|
|
|
|
+ dealZjSuffix3 = strings.Replace(tdText, ",", "", -1)
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ //fmt.Println(dealSuffix, "+", "+", "")
|
|
|
|
+ item.Frequency = contractId
|
|
|
|
+ item.ClassifyName = name
|
|
|
|
+ item.ClassifyType = carietyCode
|
|
|
|
+ item.Value = dealSuffix
|
|
|
|
+ item.AddCutValue = dealZjSuffix1
|
|
|
|
+ item.CreateTime = time.Now()
|
|
|
|
+ item.ModifyTime = time.Now()
|
|
|
|
+ item.IndexName = userName1 + "_成交量_" + contractId
|
|
|
|
+ item.IndexCode = "D" + utils.GetRandString(20)
|
|
|
|
+ items = append(items, item)
|
|
|
|
+
|
|
|
|
+ item2.Frequency = contractId
|
|
|
|
+ item2.ClassifyName = name
|
|
|
|
+ item2.ClassifyType = carietyCode
|
|
|
|
+ item2.Value = buySuffix
|
|
|
|
+ item2.AddCutValue = dealZjSuffix2
|
|
|
|
+ item2.CreateTime = time.Now()
|
|
|
|
+ item2.ModifyTime = time.Now()
|
|
|
|
+ item2.IndexName = userName2 + "_持买单量_" + contractId
|
|
|
|
+ item2.IndexCode = "D" + utils.GetRandString(20)
|
|
|
|
+ items = append(items, item2)
|
|
|
|
+
|
|
|
|
+ item3.Frequency = contractId
|
|
|
|
+ item3.ClassifyName = name
|
|
|
|
+ item3.ClassifyType = carietyCode
|
|
|
|
+ item3.Value = sellSuffix
|
|
|
|
+ item3.AddCutValue = dealZjSuffix3
|
|
|
|
+ item3.CreateTime = time.Now()
|
|
|
|
+ item3.ModifyTime = time.Now()
|
|
|
|
+ item3.IndexName = userName1 + "_持卖单量_" + contractId
|
|
|
|
+ item3.IndexCode = "D" + utils.GetRandString(20)
|
|
|
|
+ items = append(items, item3)
|
|
|
|
+
|
|
|
|
+ //添加指标参数
|
|
|
|
+ for _, v := range items {
|
|
|
|
+ total, err := models.GetDalianIndexCountByIndexName(v.IndexName)
|
|
|
|
+ if err != nil {
|
|
|
|
+ fmt.Println(err)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ if total == 0 {
|
|
|
|
+ additem := new(models.BaseFromTradeDalianIndex)
|
|
|
|
+ additem.Frequency = v.Frequency
|
|
|
|
+ additem.ClassifyName = v.ClassifyName
|
|
|
|
+ additem.ClassifyType = v.ClassifyType
|
|
|
|
+ additem.CreateTime = time.Now()
|
|
|
|
+ additem.ModifyTime = time.Now()
|
|
|
|
+ additem.IndexName = v.IndexName
|
|
|
|
+ additem.IndexCode = v.IndexCode
|
|
|
|
+ newId, err := models.AddBaseFromTradeDalianIndex(additem)
|
|
|
|
+ if err != nil {
|
|
|
|
+ fmt.Println(err)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ fmt.Println("新增指标参数:", newId, v.IndexName)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //fmt.Println(i,name,carietyCode,contractId, tds.Text())
|
|
|
|
+ //if name != ""{
|
|
|
|
+ // fmt.Println(i,name,code, tds.Text())
|
|
|
|
+ //}
|
|
|
|
+ //fmt.Println("len 10:" + tds.Text())
|
|
|
|
+
|
|
|
|
+ //添加数据
|
|
|
|
+ for _, v := range items {
|
|
|
|
+ detail, err := models.GetBaseFromTradeDalianIndexInfo(v.IndexName)
|
|
|
|
+ if err != nil {
|
|
|
|
+ fmt.Println(err, "名称", v.IndexName)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ itemData := new(models.BaseFromTradeDalianData)
|
|
|
|
+ itemData.IndexCode = detail.IndexCode
|
|
|
|
+ itemData.BaseFromTradeDalianIndexId = detail.BaseFromTradeDalianIndexId
|
|
|
|
+ itemData.Value = v.Value
|
|
|
|
+ itemData.AddCutValue = v.AddCutValue
|
|
|
|
+ itemData.DataTime = timeDate
|
|
|
|
+ itemData.CreateTime = time.Now()
|
|
|
|
+ itemData.ModifyTime = time.Now()
|
|
|
|
+ itemData.DataTimestamp = strconv.FormatInt(time.Now().UnixNano()/1e6, 10)
|
|
|
|
+ //fmt.Println(itemData)
|
|
|
|
+ newId, err := models.AddBaseFromTradeDalianData(itemData)
|
|
|
|
+ if err != nil {
|
|
|
|
+ fmt.Println(err)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ fmt.Println("新增数据:", newId, v.IndexName)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ return
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+type SearchList struct {
|
|
|
|
+ VarietyName string `description:"商品名称"`
|
|
|
|
+ CarietyCode string `description:"商品名称对应的编码"`
|
|
|
|
+ List []SearchContractId
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+type SearchContractId struct {
|
|
|
|
+ ContractId string `description:"商品类型"`
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+//郑州商品交易所持单排名
|
|
|
|
+func SyncRankingFromDalian2() {
|
|
|
|
+ fmt.Println("start")
|
|
|
|
+ searchList := []SearchList{
|
|
|
|
+ SearchList{VarietyName: "豆一", CarietyCode: "a", List: []SearchContractId{SearchContractId{ContractId: "a2111"}, {ContractId: "a2201"}, {ContractId: "a2203"}}},
|
|
|
|
+ SearchList{VarietyName: "豆二", CarietyCode: "b", List: []SearchContractId{SearchContractId{ContractId: "b2112"}, {ContractId: "b2201"}}},
|
|
|
|
+ SearchList{VarietyName: "豆粕", CarietyCode: "m", List: []SearchContractId{SearchContractId{ContractId: "m2111"}, {ContractId: "m2112"}, {ContractId: "m2201"}, {ContractId: "m2203"}, {ContractId: "m2205"}, {ContractId: "m2207"}, {ContractId: "m2208"}, {ContractId: "m2209"}}},
|
|
|
|
+ SearchList{VarietyName: "豆油", CarietyCode: "y", List: []SearchContractId{SearchContractId{ContractId: "y2112"}, {ContractId: "y2201"}, {ContractId: "y2203"}, {ContractId: "y2205"}, {ContractId: "y2207"}, {ContractId: "y2208"}}},
|
|
|
|
+ SearchList{VarietyName: "棕榈油", CarietyCode: "p", List: []SearchContractId{SearchContractId{ContractId: "p2112"}, {ContractId: "p2201"}, {ContractId: "p2202"}, {ContractId: "p2203"}, {ContractId: "p2204"}, {ContractId: "p2205"}}},
|
|
|
|
+ SearchList{VarietyName: "玉米", CarietyCode: "c", List: []SearchContractId{SearchContractId{ContractId: "c2111"}, {ContractId: "c2201"}, {ContractId: "c2203"}, {ContractId: "c2205"}, {ContractId: "c2207"}}},
|
|
|
|
+ SearchList{VarietyName: "玉米淀粉", CarietyCode: "cs", List: []SearchContractId{SearchContractId{ContractId: "cs2111"}, {ContractId: "cs2201"}, {ContractId: "cs2203"}}},
|
|
|
|
+ SearchList{VarietyName: "鸡蛋", CarietyCode: "jd", List: []SearchContractId{SearchContractId{ContractId: "jd2201"}, {ContractId: "jd2202"}, {ContractId: "jd2203"}, {ContractId: "jd2204"}, {ContractId: "jd2205"}}},
|
|
|
|
+ SearchList{VarietyName: "粳米", CarietyCode: "rr", List: []SearchContractId{SearchContractId{ContractId: "rr2112"}}},
|
|
|
|
+ //SearchList{VarietyName: "纤维板", CarietyCode: "fb", List:[]SearchContractId{}}, //无数据
|
|
|
|
+ //SearchList{VarietyName: "胶合板", CarietyCode: "bb", List:[]SearchContractId{}}, //无数据
|
|
|
|
+ SearchList{VarietyName: "生猪", CarietyCode: "lh", List: []SearchContractId{SearchContractId{ContractId: "lh2201"}, {ContractId: "lh2203"}, {ContractId: "lh2205"}}},
|
|
|
|
+ SearchList{VarietyName: "聚乙烯", CarietyCode: "l", List: []SearchContractId{SearchContractId{ContractId: "l2112"}, {ContractId: "l2201"}, {ContractId: "l2202"}, {ContractId: "l2203"}, {ContractId: "l2204"}, {ContractId: "l2205"}}},
|
|
|
|
+ SearchList{VarietyName: "聚氯乙烯", CarietyCode: "v", List: []SearchContractId{SearchContractId{ContractId: "v2111"}, {ContractId: "v2112"}, {ContractId: "v2201"}, {ContractId: "v2202"}, {ContractId: "v2203"}, {ContractId: "v2204"}, {ContractId: "v2205"}}},
|
|
|
|
+ SearchList{VarietyName: "聚丙烯", CarietyCode: "pp", List: []SearchContractId{SearchContractId{ContractId: "pp2112"}, {ContractId: "pp2201"}, {ContractId: "pp2202"}, {ContractId: "pp2203"}, {ContractId: "pp2204"}, {ContractId: "pp2205"}}},
|
|
|
|
+ SearchList{VarietyName: "苯乙烯", CarietyCode: "eb", List: []SearchContractId{SearchContractId{ContractId: "eb2111"}, {ContractId: "eb2112"}, {ContractId: "eb2201"}, {ContractId: "eb2202"}}},
|
|
|
|
+ SearchList{VarietyName: "焦炭", CarietyCode: "j", List: []SearchContractId{SearchContractId{ContractId: "j2201"}, {ContractId: "j2205"}}},
|
|
|
|
+ SearchList{VarietyName: "焦煤", CarietyCode: "jm", List: []SearchContractId{SearchContractId{ContractId: "jm2201"}, {ContractId: "jm2205"}}},
|
|
|
|
+ SearchList{VarietyName: "铁矿石", CarietyCode: "i", List: []SearchContractId{SearchContractId{ContractId: "i2112"}, {ContractId: "i2201"}, {ContractId: "i2202"}, {ContractId: "i2203"}, {ContractId: "i2204"}, {ContractId: "i2205"}, {ContractId: "i2206"}, {ContractId: "i2207"}, {ContractId: "i2208"}, {ContractId: "i2209"}}},
|
|
|
|
+ SearchList{VarietyName: "乙二醇", CarietyCode: "eg", List: []SearchContractId{SearchContractId{ContractId: "eg2112"}, {ContractId: "eg2201"}, {ContractId: "eg2202"}, {ContractId: "eg2203"}, {ContractId: "eg2205"}}},
|
|
|
|
+ SearchList{VarietyName: "液化石油气", CarietyCode: "pg", List: []SearchContractId{SearchContractId{ContractId: "pg2111"}, {ContractId: "pg2112"}, {ContractId: "pg2201"}, {ContractId: "pg2202"}}},
|
|
|
|
+ }
|
|
|
|
+ //定义爬取时间
|
|
|
|
+ endDate := time.Now().AddDate(0, 0, -1).Format(utils.FormatDateTime)
|
|
|
|
+ //endDate := time.Now().Format(utils.FormatDateTime)
|
|
|
|
+ timeDate := utils.StrTimeToTime(endDate)
|
|
|
|
+ currDate := timeDate.Format(utils.FormatDateUnSpace)
|
|
|
|
+ year := timeDate.Year()
|
|
|
|
+ month := timeDate.Format("01")
|
|
|
|
+ var dayStr string
|
|
|
|
+ day := timeDate.Day()
|
|
|
|
+ if day < 10 {
|
|
|
|
+ dayStr = "0" + strconv.Itoa(day)
|
|
|
|
+ } else {
|
|
|
|
+ dayStr = strconv.Itoa(day)
|
|
|
|
+ }
|
|
|
|
+ monthNum, _ := strconv.Atoi(month)
|
|
|
|
+ fmt.Println(currDate)
|
|
|
|
+ month = strconv.Itoa(monthNum - 1) //获取时月份需要减一
|
|
|
|
+ for _, v := range searchList {
|
|
|
|
+ for _, v2 := range v.List {
|
|
|
|
+ //模拟form表单请求
|
|
|
|
+ url := "http://www.dce.com.cn/publicweb/quotesdata/memberDealPosiQuotes.html"
|
|
|
|
+ method := "POST"
|
|
|
|
+ payload := &bytes.Buffer{}
|
|
|
|
+ writer := multipart.NewWriter(payload)
|
|
|
|
+ _ = writer.WriteField("memberDealPosiQuotes.variety", v.CarietyCode)
|
|
|
|
+ _ = writer.WriteField("memberDealPosiQuotes.trade_type", "0")
|
|
|
|
+ _ = writer.WriteField("year", strconv.Itoa(year))
|
|
|
|
+ _ = writer.WriteField("month", month)
|
|
|
|
+ _ = writer.WriteField("day", dayStr)
|
|
|
|
+ _ = writer.WriteField("contract.contract_id", v2.ContractId)
|
|
|
|
+ _ = writer.WriteField("variety_id", v.CarietyCode)
|
|
|
|
+ _ = writer.WriteField("currDate", currDate)
|
|
|
|
+ err := writer.Close()
|
|
|
|
+ if err != nil {
|
|
|
|
+ fmt.Println(err)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ client := &http.Client{}
|
|
|
|
+ req, err := http.NewRequest(method, url, payload)
|
|
|
|
+ if err != nil {
|
|
|
|
+ fmt.Println(err)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ req.Header.Add("Cookie", "JSESSIONID=36ACF02A59227A3854F9D5D5E2FB5F2E; WMONID=R5ojcAIIcx-")
|
|
|
|
+ req.Header.Set("Content-Type", writer.FormDataContentType())
|
|
|
|
+ res, err := client.Do(req)
|
|
|
|
+ if err != nil {
|
|
|
|
+ fmt.Println(err)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ defer res.Body.Close()
|
|
|
|
+ body, err := ioutil.ReadAll(res.Body)
|
|
|
|
+ if err != nil {
|
|
|
|
+ fmt.Println(err)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ err = DoHtml(string(body), v.VarietyName, v.CarietyCode, v2.ContractId, timeDate)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|