[python-chinese] 献给买基金的朋友.

shily escape jelly1982在gmail.com
星期四 八月 2 16:58:59 HKT 2007


ºÇºÇ, ÒòΪǰÌì¿´µ½sqlalchemy,ÕýºÃÊÔÒ»ÏÂ. ¾Íдµ½Êý¾Ý¿âÀïÁË.

ÔÚ07-8-2£¬Zoom. Quiet <zoom.quiet在gmail.com> дµÀ£º
>
> º¹!¶¼ÊÇÓÐÇ®Íæ»ù½ðµÄÄÄ!!ÏÛĽһÏÂ!
> ÊÕ¼ÔÚ "΢ÏîÄ¿"ÖÐÁË!!
> http://wiki.woodpecker.org.cn/moin/MicroProj/2007-08-02
>
> ¸Ðл·ÖÏí! ²»¹ýºóÒ»¸öµ¼ÈëDB µÄ»°,²»Èçµ¼ÈëÎı¾Îļþ,»òÊǶÔÏóÐòÁл¯Îı¾
>
> On 8/2/07, shily escape <jelly1982在gmail.com> wrote:
> > ºÇºÇ, ÇÉÁË. ÎÒÕâÁ½ÌìҲдÁËÒ»¸ö. ²»¹ýûÓÐËãÀûÈóµÄÕâЩ¶«Î÷
> > python°æ :
> > #!/usr/bin/env python
> > # -*- coding: utf-8 -*-
> >
> > import re
> > import urllib
> > import time
> > from sqlalchemy import *
> >
> > class Fund:
> >     def __init__(self, code):
> >         self.code = code
> >         self.attributes = {}
> >     def __setitem__(self, key, value):
> >         self.attributes[key] = value
> >     def __getitem__(self, key):
> >         return self.attributes[key]
> >
> >  fund_all = {}
> >
> > fund_url = 'http://my.fund.163.com/stock/rankkfs.htm'
> >
> > u_sock = urllib.urlopen(fund_url)
> >
> > fund_str = u_sock.read().decode('gb2312')
> >
> > fund_str = fund_str.encode('utf-8')
> >
> > print fund_str
> >
> > u_sock.close()
> >
> > r_item_pattern = re.compile(r'<tr align="center"
> bgcolor="(#EFEFEF|#E7F3FE)"
> > class="bzi">(.*?)</tr>', re.DOTALL)
> >
> > r_anchor_pattern = re.compile(r'<td><a href=.*?>(.*?)</a></td>')
> >
> > r_normal_pattern = re.compile(r'<td>([-0-9]*\.*\d*)</td>')
> >
> > fund_list = r_item_pattern.findall(fund_str)
> >
> > file_name = time.strftime('%Y%m%d') + '.html'
> >
> > f = open( file_name, 'w')
> >
> > db = BoundMetaData("mysql://root:clhclh@localhost
> /testcase?charset=utf8",
> > echo=True)
> >
> > funds = Table('funds', db, autoload=True)
> >
> > for item in fund_list:
> >     i = funds.insert()
> >     s = item[1]
> >     f.write(s)
> >     anchor_tuple = r_anchor_pattern.findall(s)
> >     fund = Fund(anchor_tuple[0])
> >     fund['name'] = anchor_tuple[1]
> >     fund['company'] = anchor_tuple[2]
> >     normal_tuple = r_normal_pattern.findall(s)
> >     fund['date'] = normal_tuple[0]
> >     fund['util'] = normal_tuple[1]
> >     fund['total'] = normal_tuple[2]
> >     fund['rate'] = normal_tuple[3]
> >
> > funds.insert().execute({'name':fund['name'],'code':fund.code
> ,'date':fund['date'],'util':fund['util'],'total':fund['total'],'rate':fund['rate'],'company':fund['company']})
> > #    sql = "insert into funds(name, code, `date`, util, total, rate,
> > company) values('%s', '%s', '%s', '%s', '%s', '%s', '%s')" \
> > #          % (fund['name'], fund.code, fund['date'], fund['util'],
> > fund['total'], fund['rate'], fund['company'])
> >  #   try:
> >   #      print sql
> >    #     cursor.execute(sql)
> > #    except Exception, e:
> >  g #       print e
> >   #  fund_all[fund.code] = fund
> >    # f.write(s)
> > #conn.commit()
> > #cursor.close()
> > #conn.close()
> > f.close()
> >
> > ruby°æ:
> > #!/usr/bin/env ruby
> > # Time-stamp: <2007-08-02[ÐÇÆÚËÄ] 14:15:47 dongsheng>
> > require 'net/http'
> > require 'iconv'
> >
> > url = URI.parse('http://my.fund.163.com/stock/rankkfs.htm')
> >
> > req = Net::HTTP::Get.new (url.path)
> >
> > res = Net::HTTP.start(url.host, url.port) do |http|
> >   http.request(req)
> > end
> >
> > content = res.body
> >
> > #content = Iconv.iconv('utf-8', 'gb2312', content)
> >
> > #puts content
> >
> > re_items = /\<tr align="center" bgcolor="(#EFEFEF|#E7F3FE)"
> > class="bzi">(.*?)\<\/tr\>/im
> >
> > re_anchor = /\<td\>\<a href=.*?\>(.*?)\<\/a\>\<\/td\>/im
> >
> > re_normal = /\<td\>([0-9-]*\.*\d*)\<\/td\>/im
> >
> > content.scan(re_items) do |x,y|
> >   anchors = y.scan(re_anchor)
> >   puts "code: #{Iconv.iconv('utf-8', 'gb2312', anchors[0].to_s)}"
> >   puts "name: #{Iconv.iconv('utf-8', 'gb2312', anchors[1].to_s)}"
> >   puts "company: #{Iconv.iconv('utf-8', 'gb2312', anchors[2].to_s)}"
> >   normal = y.scan(re_normal)
> >   puts "date: #{normal[0]}"
> >   puts "util: #{normal[1]}"
> >   puts "total: #{normal[2]}"
> >   puts "rate: #{normal[3]}"
> > end
> >
> >
> > ÔÚ07-8-2£¬ Jun Tsai <jun.tsai在gmail.com> дµÀ£º
> > >
> > >
> > ½ñÌìÓÃpythonдµÄÒ»¸ö½Å±¾£¬À´×Ô¶¯×¥È¡½ñÈÕ»ù½ðµÄÊÕÒæÇé¿ö(ÀÁµÃÈ¥ÍøÕ¾¿´),¸Õѧϰpython,´íÎóµÄµØ·½¶àÖ¸Õý.
> > >
> > > # -*- coding: UTF-8 -*-
> > > import httplib, urllib,re
> > > import datetime
> > >
> > > FUND_CODE = "161706"
> > > SALE_DATE="2007-06-22"
> > > SALE_MONEY = 5000.0
> > > TODAY_DATE=datetime.date.today()
> > >
> > > PANEL = "biz.finance.sina.com.cn"
> > > USERAGENT = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:
> 1.8.0.1)
> > Gecko/20060111 Firefox/1.5.0.1'
> > > PATH="/fundinfo/open/lsjz.php?fund_code="
> > >
> > > """
> > > ÓÃÀ´×Ô¶¯×¥È¡»ù½ðµÄÖµ£¬»ñÈ¡¶ÔÓ¦µÄÀûÈóÇé¿ö.
> > > author:jun tsai
> > > revision:$Revision: 3191 $
> > > since:0.1
> > > """
> > > def get_found_value(fund_code,sale_date,sale_money):
> > >     """×Ô¶¯×¥È¡»ù½ð¾»ÖµµÄ½Å±¾³ÌÐò,ͨ¹ý¸ø¶¨µÄ»ù½ð´úÂ룬Âò»ù½ðµÄÈÕÆÚ£¬ÒÔ¼°Í¶ÈëʹÓõÄÇ®,
> > >     À´×Ô¶¯×¥È¡»ù½ðµÄ¾»Öµ£¬ÒÔ¼°ÀûÈó
> > >     """
> > >
> > >     params =
> > urllib.urlencode({"startdate1":sale_date,"enddate1":TODAY_DATE})
> > >     headers = {"Content-type":
> > "application/x-www-form-urlencoded", "Accept":
> > "text/plain",
> > >                'Referer'
> > :'https://'+PANEL+PATH+fund_code, 'User-Agent':USERAGENT
> > >                }
> > >     conn = httplib.HTTPConnection(PANEL)
> > >     conn.request("POST", PATH+fund_code, params, headers)
> > >     response = conn.getresponse()
> > >     data = response.read()
> > >     data=data.decode ("gb2312")
> > >     conn.close();
> > >     pattern = '<title>(.+)\('+fund_code+'\)'
> > >     all_matches = re.findall(pattern,data);
> > >
> > >     fund_name =  all_matches[0].encode("utf-8")
> > > #    print all_matches[0]
> > >
> > >     pattern='<a
> > href=\'./lsjz_dwjz.php\?jzrq=(.*)\'[\s]+target=_blank>(.*)</a>'
> > >     all_matches=re.findall(pattern,data);
> > >
> > >     today_value =  float(all_matches[0][1])
> > >     sale_value =
> > float(all_matches[len(all_matches)-1][1])
> > >     sale_count = sale_money/sale_value
> > >     value=(today_value-sale_value)*sale_count
> > >     print
> >
> "|"+construct_block(10,fund_code)+"|"+construct_head_block(20,fund_name)+"|"
> > +construct_block(10,sale_value.__str__())+"|"
> > +construct_block(20,sale_count.__str__())+"|"
> > +construct_block(10,today_value.__str__())+"|"
> > +construct_block(20,value.__str__())+"|"
> > > def construct_block(length,str):
> > >     r=' '+str
> > >     while(length>len(r)):
> > >         r+=' '
> > >     return r
> > >
> > > def construct_head_block(length,str):
> > >     r=' '+str
> > >     head_str_len=len( str.decode("utf-8"))
> > >     while(length>(len(r)-head_str_len)):
> > >         r+=' '
> > >     return r
> > >
> > > print
> >
> "+-----------------------------------------------------------------------------------------------+"
> > > print
> >
> "|"+construct_head_block(10,"´úÂë")+"|"+construct_head_block(20,"Ãû³Æ")+"|"+construct_head_block(10,"¹ºÂò¾»Öµ")+"|"+construct_head_block(20,"¹ºÂòÊý")+"|"+construct_head_block(10,"½ñÈÕ¾»Öµ")+"|"+construct_head_block(20,"ÀûÈó")+"|"
> > > print
> >
> "+-----------------------------------------------------------------------------------------------+"
> > > get_found_value("161706","2007-06-22",5000.0)
> > > get_found_value("260110","2007-06-10", 5000.0)
> > > get_found_value("070011","2007-06-23",5000.0)
> > > print
> >
> "+-----------------------------------------------------------------------------------------------+"
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > > --
> > > Welcome to China Java Users Group(CNJUG).
> > > http://cnjug.dev.java.net
> > > _______________________________________________
> > > python-chinese
> > > Post: send python-chinese在lists.python.cn
> > > Subscribe: send subscribe to
> > python-chinese-request在lists.python.cn
> > > Unsubscribe: send unsubscribe to
> > python-chinese-request在lists.python.cn
> > > Detail Info:
> > http://python.cn/mailman/listinfo/python-chinese
> > >
> >
> >
> > _______________________________________________
> > python-chinese
> > Post: send python-chinese在lists.python.cn
> > Subscribe: send subscribe to
> > python-chinese-request在lists.python.cn
> > Unsubscribe: send unsubscribe to
> > python-chinese-request在lists.python.cn
> > Detail Info:
> > http://python.cn/mailman/listinfo/python-chinese
> >
>
>
> --
> '''Time is unimportant, only life important!
> ¹ý³Ì¸Ä½øµÄÄ¿±ê²»ÊÇ¸ßÆ·ÖʲúÆ·£¬¶øÊÇ´ÙÉú¿¿Æ×µÄÈ˵Ä×éÖ¯!
> '''
> http://zoomquiet.org
> blog在http://blog.zoomquiet.org/pyblosxom/
> wiki在http://wiki.woodpecker.org.cn/moin/ZoomQuiet
> or http://202.108.44.62/moin/ZoomQuiet
> scrap在http://floss.zoomquiet.org
> douban在http://www.douban.com/people/zoomq/
> ____________________________________
> Pls. use OpenOffice.org to replace M$ Office.
>      http://zh.openoffice.org
> Pls. use 7-zip to replace WinRAR/WinZip.
>      http://7-zip.org/zh-cn/
> You can get the truely Freedom 4 software.
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
-------------- 下一部分 --------------
Ò»¸öHTML¸½¼þ±»ÒƳý...
URL: http://python.cn/pipermail/python-chinese/attachments/20070802/a654c213/attachment-0001.html 


关于邮件列表 python-chinese 的更多信息