好久没有听音乐了

应该说好久没有用电脑听音乐了,记得以前是音乐常伴音乐的,但现在电视机给老爸霸着,所以N久没看电视了,收音机也N久没打开了,电脑上更加没听音乐的习惯,由今天开始,打开kugou听音乐,其实还有其它目的,因为现在出去卡拉ok, 新歌已经不会唱了,现在改变下习惯,加上确实听音乐能刺激头脑的,音乐能带来灵感…罗嗦完毕.

发表在 一般生活 | 留下评论

go语言获取网页连接

使用go语言的版本是1.0.3,golang那个goquery模块需要使用的exp/html死活装不上,后来装上了code.google.com/p/go.net/html,goquery使用还是出错,可能就是exp/html模块版本不对吧,

反正后来找到的exp/html不是那个pkg的位置,以下是go语言获取网页链接的源码:

安装code.google.com/p/go.net/html: go get code.google.com/p/go.net/html

如果说连接time out, 就在机器的hosts文件加上: 74.125.128.138 code.google.com

package main
 
import (
	"fmt"
	"log"
	"strings"
        "time"
	"net/http"
	"io/ioutil"
	"code.google.com/p/go.net/html"
)



func getwangye(url string) string {
    for h:=1;h<4;h++{    
        r, err := http.Get(url)
       if err != nil {
          fmt.Printf("%v\n", err)
            time.Sleep(time.Second * 4)
            continue            
       }
     
       defer r.Body.Close()
 
       body, err:= ioutil.ReadAll(r.Body)
            
       return string(body)
         
     } 
     return "nonono"

}


func getlink(s string) []string{
        var b []string
	
	doc, err := html.Parse(strings.NewReader(s))
	if err != nil {
		log.Fatal(err)
	}
	var f func(*html.Node)
	f = func(n *html.Node) {
		if n.Type == html.ElementNode && n.Data == "a" {
			for _, a := range n.Attr {
				if a.Key == "href" {
					//fmt.Println(a.Val)
                                         b=append(b,a.Val)
					break
				}
			}
		}
		for c := n.FirstChild; c != nil; c = c.NextSibling {
			f(c)
		}
	}
	f(doc)
	// Output:
	// foo
	// /bar/baz
        return b
}



func main() {
    s := getwangye("https://www.lpfrx.com")
    
    d:=getlink(s)
    cc:=len(d)
    for h:=1;h<cc;h++{ 
      fmt.Println(d[h])
      //break
    }
    
    
}

还是那句,go语言的中文资料貌似很少,搞这个go语言获取网页连接,另我头痛了很久呢

在树莓派下的linux环境和windows 7 64位环境通过,还有的就是,原来pkg可以复制过去就可以用了,

因为windows 7下使用: go get code.google.com/p/go.net/html, 要装很多东西,我在linux环境下把它复制到windows去就可以用了.

发表在 技术生活 | 留下评论

go语言的goquery包还是装不好

go语言的goquery包还是装不好, 这个golang的html解释模块这么难搞,其实就是那个exp/html装不上,到现在还搞不定,烦,就是想搞个捉取url而已,就想用正则搞定就算了,现在还尝试中,烦啊…
golang语言资料比较少呢,相反java的资料就比较多了,看来先在搞个java的蜘蛛后再搞go语言的.

发表在 技术生活 | 留下评论

python读股票列表资料

有可用的数据接口了,就要有股票列表资料,搜索网上资料后,原来可以用python读股票列表资料, 我的广发证据系统【T0002\hq_cache】目录下的szex.tnf和shex.tnf.

代码摘自网上,及修改了.

以下数据库
ticker.sql

CREATE TABLE IF NOT EXISTS `ticker` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `stockid` char(6) CHARACTER SET latin1 NOT NULL,
  `name` char(20) DEFAULT NULL,
  `market` enum('sz','sh','hk') CHARACTER SET latin1 DEFAULT NULL,
  `code` char(12) CHARACTER SET latin1 DEFAULT NULL,
  `kind` enum('stock','index','option','futures') CHARACTER SET latin1 DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

getstockdata.py

#-*- encoding: utf-8 -*-
import struct

class TStock:
    def getListSz(self):
       """读取列表数据"""
       f = open('szex.tnf','rb')
       f.seek(50)
       datacode = []
       ss = f.read(250)
       #print ss
       while ss<>'':
            datacode.append((ss,ss,ss))
            ss = f.read(250)
       f.close()
       return datacode


    def getListSh(self):
       """读取列表数据"""
       f = open('shex.tnf','rb')
       f.seek(50)
       datacode = []
       ss = f.read(250)
       #print ss
       while ss<>'':
            datacode.append((ss,ss,ss))
            ss = f.read(250)
       f.close()
       return datacode

stocklist2db.py

#-*- encoding: utf-8 -*-
import sys,re
import MySQLdb
from getstockdata import TStock
reload(sys)
sys.setdefaultencoding('gbk')

def strip(str):
   pat = re.compile('\x00*([^\x00].*[^\x00])\x00*')
   a = pat.search(str)
   if a: return a.groups()
   else: return '-'


dClass = TStock()
dataSz = dClass.getListSz()
dataSh = dClass.getListSh()

try:
    conn = MySQLdb.connect (host ="localhost",user="root",passwd="123456789",db="stock")
except MySQLdb.Error, e:
    print str(e)
    sys.exit(1)
try:
    cursor = conn.cursor()
    cursor.execute("SET NAMES 'utf8'; ")

    for code in dataSz:
        ss=code
        xaa=ss[0][0:6]
	xbb=ss[0][24:32]
	xbb=xbb.decode('cp936').encode('utf8')
	xcc=ss[0][241:245]
	#xcc=strip(xcc)
	isql="INSERT INTO ticker SET stockid = "+ xaa +", name ='"+ xbb +"', market ='sz',code ='"+ xcc+ "'"
	print isql
	cursor.execute(isql)

    for code in dataSh:
        ss=code
        xaa=ss[0][0:6]
	xbb=ss[0][24:32]
	xbb=xbb.decode('cp936').encode('utf8')
	xcc=ss[0][241:245]
	#xcc=strip(xcc)
	isql="INSERT INTO ticker SET stockid = "+ xaa +", name ='"+ xbb +"', market ='sh',code ='"+ xcc+ "'"
	print isql
	cursor.execute(isql)
	
    cursor.close()
except MySQLdb.Error, e:
    print str(e)
    sys.exit(1)

conn.commit()
conn.close()

现在得到列表了,等下就是看看怎样整合了.

发表在 python | 留下评论

获取股票实时数据的接口

记录下获取股票实时数据的接口,记录下.

以基金兴和500018为例
******************************
新浪的接口: http://hq.sinajs.cn/list=sh500018

雅酷财经的: http://finance.yahoo.com/d/quotes.csv?s=500018.ss&f=snd1l1yr

网易的接口: http://api.money.126.net/data/feed/500018,money.api

CHINAstock的web-service: http://www.webxml.com.cn/WebServices/ChinaStockWebService.asmx/getStockInfoByCode?theStockCode=sh500018

还有其它,不过暂时看好这几个,获取股票实时数据后可以用python分析,这样可以搞搞自己的交易系统,在配合邮件通知,爽啊

其实google都有股票接口api的: http://finance.google.com/finance/info?client=ig&q=SHA:601398 ,但我找不到500018怎样搞进去,还是没有这个基金的代码呢.

发表在 技术生活 | 留下评论

今天更换模板为twentyten

一直想换博客模板很久,今天更换模板为twentyten,鉴于自己的美工能力超差,所以还是用系统的算了,不过还是修改了一些代码,不过还是蛮不惯的,现在清爽到死,慢慢再加广告上去,反正流量少得很.

发表在 一般生活 | 留下评论