save
This commit is contained in:
		
							parent
							
								
									48b62576c4
								
							
						
					
					
						commit
						4c5abd04e4
					
				
							
								
								
									
										66
									
								
								main.go
									
									
									
									
									
								
							
							
						
						
									
										66
									
								
								main.go
									
									
									
									
									
								
							| @ -29,23 +29,23 @@ import ( | ||||
| ) | ||||
| 
 | ||||
| type Stock struct { | ||||
| 	Date                   string  `json:"日期" bson:"日期"` | ||||
| 	CodeStr                string  `json:"股票代码" bson:"股票代码"` | ||||
| 	Name                   string  `json:"名称" bson:"名称"` | ||||
| 	ClosingPrice           float64 `json:"收盘价" bson:"收盘价"` | ||||
| 	MaxPrice               float64 `json:"最高价" bson:"最高价"` | ||||
| 	MinPrice               float64 `json:"最低价" bson:"最低价"` | ||||
| 	OpeningPrice           float64 `json:"开盘价" bson:"开盘价"` | ||||
| 	PreviousClosingPrice   float64 `json:"前收盘" bson:"前收盘"` | ||||
| 	UpsDowns               float64 `json:"涨跌额" bson:"涨跌额"` | ||||
| 	UpsDownsRatio          float64 `json:"涨跌幅" bson:"涨跌幅"` | ||||
| 	TurnoverRate           float64 `json:"换手率" bson:"换手率"` | ||||
| 	Volume                 float64 `json:"成交量" bson:"成交量"` | ||||
| 	Turnover               float64 `json:"成交金额" bson:"成交金额"` | ||||
| 	MarketValue            float64 `json:"总市值" bson:"总市值"` | ||||
| 	CirculatingMarketValue float64 `json:"流通市值" bson:"流通市值"` | ||||
| 	Date                   string  `json:"Date" bson:"Date"`                                     // 日期 | ||||
| 	CodeStr                string  `json:"CodeStr" bson:"CodeStr"`                               // 股票代码 | ||||
| 	Name                   string  `json:"Name" bson:"Name"`                                     // 名称 | ||||
| 	ClosingPrice           float64 `json:"ClosingPrice" bson:"ClosingPrice"`                     // 收盘价 | ||||
| 	MaxPrice               float64 `json:"MaxPrice" bson:"MaxPrice"`                             // 最高价 | ||||
| 	MinPrice               float64 `json:"MinPrice" bson:"MinPrice"`                             // 最低价 | ||||
| 	OpeningPrice           float64 `json:"OpeningPrice" bson:"OpeningPrice"`                     // 开盘价 | ||||
| 	PreviousClosingPrice   float64 `json:"PreviousClosingPrice" bson:"PreviousClosingPrice"`     // 前收盘 | ||||
| 	UpsDowns               float64 `json:"UpsDowns" bson:"UpsDowns"`                             // 涨跌额 | ||||
| 	UpsDownsRatio          float64 `json:"UpsDownsRatio" bson:"UpsDownsRatio"`                   // 涨跌幅 | ||||
| 	TurnoverRate           float64 `json:"TurnoverRate" bson:"TurnoverRate"`                     // 换手率 | ||||
| 	Volume                 float64 `json:"Volume" bson:"Volume"`                                 // 成交量 | ||||
| 	Turnover               float64 `json:"Turnover" bson:"Turnover"`                             // 成交金额 | ||||
| 	MarketValue            float64 `json:"MarketValue" bson:"MarketValue"`                       // 总市值 | ||||
| 	CirculatingMarketValue float64 `json:"CirculatingMarketValue" bson:"CirculatingMarketValue"` // 流通市值 | ||||
| 
 | ||||
| 	Code int `json:"股票数字代码" bson:"股票数字代码"` | ||||
| 	Code string `json:"Code" bson:"Code"` // 股票数字代码 | ||||
| } | ||||
| 
 | ||||
| type StockBase struct { | ||||
| @ -234,6 +234,8 @@ func DownloadDataFromCode(client *mongo.Client, code *StockBase) { | ||||
| 
 | ||||
| 	// http://quotes.money.163.com/0601988.html | ||||
| 
 | ||||
| 	cstock := client.Database("money").Collection("stock") | ||||
| 
 | ||||
| 	page := GetDefaultPage() | ||||
| 	stockurl := fmt.Sprintf("http://quotes.money.163.com/%s.html", code.CODE) | ||||
| 	log.Println(stockurl) | ||||
| @ -255,14 +257,19 @@ func DownloadDataFromCode(client *mongo.Client, code *StockBase) { | ||||
| 		if err != nil { | ||||
| 			panic(err) | ||||
| 		} | ||||
| 		page.MustNavigate("http://quotes.money.163.com" + urlpath) | ||||
| 		page.Navigate("http://quotes.money.163.com" + urlpath) | ||||
| 		ahref := page.MustElementX("//a[@id='downloadData']") | ||||
| 		log.Println("wait downloadData") | ||||
| 		ahref.WaitEnabled() | ||||
| 
 | ||||
| 		time.Sleep(time.Millisecond * 500) | ||||
| 		ahref.Click(proto.InputMouseButtonLeft) | ||||
| 		e := page.MustElementX("//a[@class='blue_btn submit']") | ||||
| 		e.WaitEnabled() | ||||
| 
 | ||||
| 		e := page.MustElementX("//a[@class='blue_btn submit']") | ||||
| 		log.Println("wait blue_btn submit") | ||||
| 
 | ||||
| 		e.WaitEnabled() | ||||
| 		time.Sleep(time.Millisecond * 500) | ||||
| 		w := page.Browser().MustWaitDownload() | ||||
| 		e.Click(proto.InputMouseButtonLeft) | ||||
| 		downloaddata := w() | ||||
| @ -291,7 +298,7 @@ func DownloadDataFromCode(client *mongo.Client, code *StockBase) { | ||||
| 
 | ||||
| 		re, _ := regexp.Compile(`\d+`) | ||||
| 
 | ||||
| 		var stocks []mongo.WriteModel | ||||
| 		// var stocks []mongo.WriteModel | ||||
| 		for _, line := range alls[1:] { | ||||
| 
 | ||||
| 			var fields []string | ||||
| @ -301,12 +308,9 @@ func DownloadDataFromCode(client *mongo.Client, code *StockBase) { | ||||
| 
 | ||||
| 			} | ||||
| 
 | ||||
| 			code, err := strconv.Atoi(re.FindString(fields[1])) | ||||
| 			if err != nil { | ||||
| 				panic(err) | ||||
| 			} | ||||
| 			code := re.FindString(fields[1]) | ||||
| 
 | ||||
| 			s := &Stock{ | ||||
| 			s := Stock{ | ||||
| 				Date:                   fields[0], | ||||
| 				CodeStr:                fields[1], | ||||
| 				Name:                   fields[2], | ||||
| @ -325,16 +329,12 @@ func DownloadDataFromCode(client *mongo.Client, code *StockBase) { | ||||
| 
 | ||||
| 				Code: code, | ||||
| 			} | ||||
| 			stocks = append(stocks, &mongo.InsertOneModel{Document: s}) | ||||
| 
 | ||||
| 			cstock.InsertOne(context.TODO(), mongo.InsertOneModel{Document: s}) | ||||
| 		} | ||||
| 
 | ||||
| 		cstock := client.Database("money").Collection("stock") | ||||
| 		r, err := cstock.BulkWrite(context.TODO(), stocks) | ||||
| 		if err != nil { | ||||
| 
 | ||||
| 		} | ||||
| 		log.Println(code.CODE, r) | ||||
| 		time.Sleep(time.Second * 2) | ||||
| 		log.Println(code.SYMBOL) | ||||
| 		time.Sleep(time.Second * 1) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user