百度做的网站/汕头seo全网营销
买股票的时候因为股份时时变动,所以卖出时机不好吃了好多亏,所以工作之余就想自己弄一个实时的接收自己想要的股份信息。
发送邮件用的smtp服务包,不多说了,直接上代码。
go_library项目的send_mail.go代码:
package gemailimport ("log""net/smtp""strings"
)//smtp服务发送邮件, mailType表示邮件格式是普通文件还是html或其他
func SendToMail(host, user, password, to, mailType, subject, body string) {hp := strings.Split(host, ":")auth := smtp.PlainAuth("", user, password, hp[0])content_type := "Content-Type: text/" + mailType + "; charset=UTF-8"msg := []byte("To: " + to + "\r\nFrom: " + user + "\r\nSubject: " + subject + "\r\n" + content_type + "\r\n\r\n" + body)send_to := strings.Split(to, ";")err := smtp.SendMail(host, auth, user, send_to, msg)if err != nil {log.Println("SendMail error: ", err)}
}
项目结构:
crawl_foundation.go代码:
package crawlimport ("go_library/gconvert""go_library/ghttp""log""math""strings""time"
)func ParseStr(hqStr string) []string {baseData := strings.Split(hqStr, "\"")base := strings.Split(baseData[1], ",")return base
}func Fetch_shsz(url string) string {client := ghttp.HttpClient(time.Second * 10)if client == nil {log.Println("get http client error")return ""}data := ghttp.HttpGet(client, url, "")base := ParseStr(data)str := gconvert.ConvertCharacterEncoding(base[0], "gb2312", "utf-8") + "\n"str += " 当前最新价:" + base[3] + " | 当前涨跌率:"agoPrice := gconvert.StringToFloat64(base[2])nowPrice := gconvert.StringToFloat64(base[3])lv := ""if agoPrice > nowPrice {lv = "-"}upDown := math.Abs(nowPrice-agoPrice) / agoPrice * 100str += lv + gconvert.Float64ToString(upDown, 2) + "%\n"str += " 今日最高价:" + base[4] + " | 今日最低价:" + base[5] + "\n"str += " 今日开盘价:" + base[1] + " | 昨日收盘价:" + base[2] + "\n\n"return str
}func Fetch_CompositeIndex(url string) string {client := ghttp.HttpClient(time.Second * 10)if client == nil {log.Println("get http client error")return ""}data := ghttp.HttpGet(client, url, "")base := ParseStr(data)str := gconvert.ConvertCharacterEncoding(base[0], "gb2312", "utf-8") + " 当前指数:" + base[1] + " | 涨跌额:" + base[2] + " | 涨跌率:" + base[3] + "%\n\n"return str
}
main.go代码:
package mainimport ("go_library/gemail""go_library/gtime""stock/crawl""time"
)type User struct {user stringpassword stringhost stringto stringmailType stringsubject stringbody string
}func NewUser() *User {return &User{user: "xxx@qq.com", //自己的邮箱password: "xxx", //这个密码是smtp服务的密码,在邮箱中打开pop3/smtp服务,设立独立密码即可host: "smtp.qq.com:587",to: "xxx@qq.com", //要发送到哪个邮箱}
}type CodeLink struct {grail []stringsingleStock []string
}func NewCodeLink() *CodeLink {task := &CodeLink{}task.grail = []string{"http://hq.sinajs.cn/list=s_sh000001","http://hq.sinajs.cn/list=s_sz399001","http://hq.sinajs.cn/list=s_sz399006",}task.singleStock = []string{"http://hq.sinajs.cn/list=sz150304","http://hq.sinajs.cn/list=sz000582","http://hq.sinajs.cn/list=sz150153","http://hq.sinajs.cn/list=sz150224","http://hq.sinajs.cn/list=sz150282","http://hq.sinajs.cn/list=sz150201","http://hq.sinajs.cn/list=sz150224","http://hq.sinajs.cn/list=sz150236","http://hq.sinajs.cn/list=sh502012","http://hq.sinajs.cn/list=sh502055",}return task
}func (c *CodeLink) Task() {u := NewUser()for _, grail := range c.grail {u.body += crawl.Fetch_CompositeIndex(grail)}for _, singleStock := range c.singleStock {u.body += crawl.Fetch_shsz(singleStock)}u.subject = "股票当前情况"u.mailType = "plain"gemail.SendToMail(u.host, u.user, u.password, u.to, u.mailType, u.subject, u.body)
}func (c *CodeLink) IsStockTime() bool {if !gtime.IsWorkDay() {return false}now := time.Now()minute := now.Hour()*60 + now.Minute()if (minute >= 570 && minute <= 690) || (minute >= 780 && minute <= 900) {return true}return false
}func main() {codeLink := NewCodeLink()ticker := time.NewTicker(time.Minute * 10)for _ = range ticker.C {if codeLink.IsStockTime() {codeLink.Task()}}
}
注:有什么编码、爬虫等私活可以联系:cugbliwei@gmail.com代做