xingzai 3 years ago
parent
commit
511d60b431
4 changed files with 1554 additions and 3 deletions
  1. 3 1
      models/db.go
  2. 981 0
      services/commodity_trade_dalian.go
  3. 2 2
      services/task.go
  4. 568 0
      static/dalian.html

+ 3 - 1
models/db.go

@@ -28,5 +28,7 @@ func init() {
 	//注册对象
 	orm.RegisterModel(
 		new(BaseFromTradeZhengzhouIndex),
-		)
+		new(BaseFromTradeDalianIndex),
+		new(BaseFromTradeDalianData),
+	)
 }

+ 981 - 0
services/commodity_trade_dalian.go

@@ -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 &nbsp;&nbsp;&nbsp;&nbsp;查询日期: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>&nbsp;</td> 
+          <td class="td-right">116,526</td> 
+          <td class="td-right">-28,029</td> 
+          <td>总计</td> 
+          <td>&nbsp;</td> 
+          <td class="td-right">25,831</td> 
+          <td class="td-right">-3,794</td> 
+          <td>总计</td> 
+          <td>&nbsp;</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)
+		}
+	}
+}

+ 2 - 2
services/task.go

@@ -7,8 +7,8 @@ import (
 func Task() {
 	fmt.Println("start crawler")
 	//同步郑州商品交易所排名
-	SyncRankingFromZhenzhou()
-
+	//SyncRankingFromZhenzhou()
+	SyncRankingFromDalian2()
 
 	//str:=`品种:苹果AP    日期:2021-10-15`
 	//str=strings.ReplaceAll(str,"    ","#")

+ 568 - 0
static/dalian.html

@@ -0,0 +1,568 @@
+<!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 &nbsp;&nbsp;&nbsp;&nbsp;查询日期: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>&nbsp;</td>
+                            <td class="td-right">116,526</td>
+                            <td class="td-right">-28,029</td>
+                            <td>总计</td>
+                            <td>&nbsp;</td>
+                            <td class="td-right">25,831</td>
+                            <td class="td-right">-3,794</td>
+                            <td>总计</td>
+                            <td>&nbsp;</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>
+
+
+
+
+//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"}}},
+//	SearchList{VarietyName: "棕榈油", CarietyCode: "p", List:[]SearchContractId{SearchContractId{ContractId:"a2111"},{ContractId:"a2201"},{ContractId:"a2203"}}},
+//	SearchList{VarietyName: "玉米", CarietyCode: "c", List:[]SearchContractId{SearchContractId{ContractId:"a2111"},{ContractId:"a2201"},{ContractId:"a2203"}}},
+//	SearchList{VarietyName: "玉米淀粉", CarietyCode: "cs", List:[]SearchContractId{SearchContractId{ContractId:"a2111"},{ContractId:"a2201"},{ContractId:"a2203"}}},
+//	SearchList{VarietyName: "鸡蛋", CarietyCode: "jd", List:[]SearchContractId{SearchContractId{ContractId:"a2111"},{ContractId:"a2201"},{ContractId:"a2203"}}},
+//	SearchList{VarietyName: "粳米", CarietyCode: "rr", List:[]SearchContractId{SearchContractId{ContractId:"a2111"},{ContractId:"a2201"},{ContractId:"a2203"}}},
+//	SearchList{VarietyName: "纤维板", CarietyCode: "fb", List:[]SearchContractId{SearchContractId{ContractId:"a2111"},{ContractId:"a2201"},{ContractId:"a2203"}}},
+//	SearchList{VarietyName: "胶合板", CarietyCode: "bb", List:[]SearchContractId{SearchContractId{ContractId:"a2111"},{ContractId:"a2201"},{ContractId:"a2203"}}},
+//	SearchList{VarietyName: "生猪", CarietyCode: "lh", List:[]SearchContractId{SearchContractId{ContractId:"a2111"},{ContractId:"a2201"},{ContractId:"a2203"}}},
+//	SearchList{VarietyName: "聚乙烯", CarietyCode: "l", List:[]SearchContractId{SearchContractId{ContractId:"a2111"},{ContractId:"a2201"},{ContractId:"a2203"}}},
+//	SearchList{VarietyName: "聚氯乙烯", CarietyCode: "v", List:[]SearchContractId{SearchContractId{ContractId:"a2111"},{ContractId:"a2201"},{ContractId:"a2203"}}},
+//	SearchList{VarietyName: "聚丙烯", CarietyCode: "pp", List:[]SearchContractId{SearchContractId{ContractId:"a2111"},{ContractId:"a2201"},{ContractId:"a2203"}}},
+//	SearchList{VarietyName: "苯乙烯", CarietyCode: "eb", List:[]SearchContractId{SearchContractId{ContractId:"a2111"},{ContractId:"a2201"},{ContractId:"a2203"}}},
+//	SearchList{VarietyName: "焦炭", CarietyCode: "j", List:[]SearchContractId{SearchContractId{ContractId:"a2111"},{ContractId:"a2201"},{ContractId:"a2203"}}},
+//	SearchList{VarietyName: "焦煤", CarietyCode: "jm", List:[]SearchContractId{SearchContractId{ContractId:"a2111"},{ContractId:"a2201"},{ContractId:"a2203"}}},
+//	SearchList{VarietyName: "铁矿石", CarietyCode: "i", List:[]SearchContractId{SearchContractId{ContractId:"a2111"},{ContractId:"a2201"},{ContractId:"a2203"}}},
+//	SearchList{VarietyName: "乙二醇", CarietyCode: "eg", List:[]SearchContractId{SearchContractId{ContractId:"a2111"},{ContractId:"a2201"},{ContractId:"a2203"}}},
+//	SearchList{VarietyName: "液化石油气", CarietyCode: "pg", List:[]SearchContractId{SearchContractId{ContractId:"a2111"},{ContractId:"a2201"},{ContractId:"a2203"}}},
+//}
+
+
+
+type SearchList struct {
+VarietyName         string `description:"商品名称"`
+CarietyCode   string `description:"商品名称对应的编码"`
+List []SearchContractId
+}
+
+type SearchContractId struct {
+ContractId         string `description:"商品类型"`
+}