1. # -*- coding: utf-8 -*-
  2. """
  3. 获取实时汇率
  4. Created on Fri Oct 18 13:11:40 2013
  5.  
  6. @author: alala
  7. """
  8.  
  9. import httplib
  10. import re
  11. import MySQLdb
  12. import datetime
  13.  
  14. URL = 'fx.cmbchina.com' #网站名
  15. PATH = '/hq/' #页面路径
  16. HOST = 'localhost' #数据库地址(ip)
  17. DB = "money" #数据库名称
  18. USER = 'root' #数据库用户名
  19. PSWD = 'sheet' #数据库密码
  20.  
  21. httpClient = None
  22.  
  23. try:
  24. #抓去网页内容
  25. httpClient = httplib.HTTPConnection(URL, 80, timeout=30)
  26. httpClient.request('GET', '/hq/')
  27. response = httpClient.getresponse()
  28. html = response.read()
  29. #print html
  30.  
  31. #用正则表达式抓去汇率数据
  32. reg = re.compile(r"""
  33. <tr>\s*<td\s+class="fontbold">\s*(?P<name>\S+)\s*</td>\s* #交易币
  34. <td\s+align="center">\s*(?P<unit>\d+)\s*</td>\s* #交易币单位
  35. <td\s+align="center"\s+class="fontbold">\s*(?P<base>\S+)\s*</td>\s* #基本币
  36. <td\s*class="numberright">\s*(?P<midPrice>\d+\.\d+)\s*</td>\s* #中间价
  37. <td\s*class="numberright">\s*(?P<sellPrice>\d+\.\d+)\s*</td>\s* #卖出价
  38. <td\s*class="numberright">\s*(?P<buyPrice1>\d+\.\d+)\s*</td>\s* #现汇买入价
  39. <td\s*class="numberright">\s*(?P<buyPrice2>\d+\.\d+)\s*</td>\s* #现钞买入价
  40. <td\s*align="center">\s*(?P<time>\d+:\d+:\d+)\s*</td>\s* #时间
  41. """, re.MULTILINE | re.X)
  42. rows = reg.findall(html)
  43. #打印汇率数据
  44. for r in rows:
  45. print ','.join(map(str,r)), '\n'
  46.  
  47. #数据库操作
  48. #确保mysqldb已经安装,可以用下面的命令安装
  49. #pip install MySQL-python
  50.  
  51. #建立和数据库系统的连接
  52. conn = MySQLdb.connect(host=HOST, user=USER,passwd=PSWD)
  53.  
  54. #获取操作游标
  55. cursor = conn.cursor()
  56. #执行SQL,创建一个数据库.
  57. cursor.execute("CREATE DATABASE IF NOT EXISTS " + DB)
  58.  
  59. #选择数据库
  60. conn.select_db(DB);
  61. #执行SQL,创建一个数据表.
  62. cursor.execute("""CREATE TABLE IF NOT EXISTS exchange_rate(
  63. name VARCHAR(50) COMMENT '交易币' PRIMARY KEY,
  64. unit INT COMMENT '交易币单位',
  65. base VARCHAR(50) COMMENT '基本币',
  66. midPrice FLOAT COMMENT '中间价',
  67. sellPrice FLOAT COMMENT '卖出价',
  68. buyPrice1 FLOAT COMMENT '现汇买入价',
  69. buyPrice2 FLOAT COMMENT '现钞买入价',
  70. time DATETIME COMMENT '时间' ) """)
  71. records = []
  72. for r in rows:
  73. (name,unit,base,midPrice,sellPrice,buyPrice1,buyPrice2,time) = r
  74. time = datetime.datetime.strptime(datetime.datetime.now().strftime('%Y-%m-%d')
  75. + " " + time,'%Y-%m-%d %H:%M:%S')
  76. record = (name,int(unit),base,float(midPrice),float(sellPrice),
  77. float(buyPrice1),float(buyPrice2),time)
  78. records.append(record)
  79. #print records
  80. #更新汇率
  81. cursor.executemany("REPLACE exchange_rate VALUES(%s,%s,%s,%s,%s,%s,%s,%s)"
  82. ,records);
  83. conn.commit()
  84.  
  85. #关闭连接,释放资源
  86. cursor.close();
  87.  
  88. except Exception,e:
  89. print e
  90. finally:
  91. if httpClient:
  92. httpClient.close()

python抓取汇率的更多相关文章

  1. Python 抓取网页并提取信息(程序详解)

    最近因项目需要用到python处理网页,因此学习相关知识.下面程序使用python抓取网页并提取信息,具体内容如下: #---------------------------------------- ...

  2. 使用 Python 抓取欧洲足球联赛数据

    Web Scraping在大数据时代,一切都要用数据来说话,大数据处理的过程一般需要经过以下的几个步骤    数据的采集和获取    数据的清洗,抽取,变形和装载    数据的分析,探索和预测    ...

  3. python抓取性感尤物美女图

    由于是只用标准库,装了python3运行本代码就能下载到多多的美女图... 写出代码前面部分的时候,我意识到自己的函数设计错了,强忍继续把代码写完. 测试发现速度一般,200K左右的下载速度,也没有很 ...

  4. python抓取网页例子

    python抓取网页例子 最近在学习python,刚刚完成了一个网页抓取的例子,通过python抓取全世界所有的学校以及学院的数据,并存为xml文件.数据源是人人网. 因为刚学习python,写的代码 ...

  5. Python抓取页面中超链接(URL)的三中方法比较(HTMLParser、pyquery、正则表达式) <转>

    Python抓取页面中超链接(URL)的3中方法比较(HTMLParser.pyquery.正则表达式) HTMLParser版: #!/usr/bin/python # -*- coding: UT ...

  6. 如何用python抓取js生成的数据 - SegmentFault

    如何用python抓取js生成的数据 - SegmentFault 如何用python抓取js生成的数据 1赞 踩 收藏 想写一个爬虫,但是需要抓去的的数据是js生成的,在源代码里看不到,要怎么才能抓 ...

  7. 关于python抓取google搜索结果的若干问题

    关于python抓取google搜索结果的若干问题     前一段时间一直在研究如何用python抓取搜索引擎结果,在实现的过程中遇到了很多的问题,我把我遇到的问题都记录下来,希望以后遇到同样问题的童 ...

  8. 用python抓取智联招聘信息并存入excel

    用python抓取智联招聘信息并存入excel tags:python 智联招聘导出excel 引言:前一阵子是人们俗称的金三银四,跳槽的小朋友很多,我觉得每个人都应该给自己做一下规划,根据自己的进步 ...

  9. python抓取月光博客的全部文章而且依照标题分词存入mongodb中

    猛击这里:python抓取月光博客的全部文章

随机推荐

  1. 新浪SAE URLRewrite(伪静态、重定向)详解

    SAE全称Sina App Engine,真是一个好东西,他有很多优秀的特性,简单来说SAE就是一个简单高效的分布式Web服务开发.运行平台.支持现在常用的 PHP+Mysql 环境,在开发中难免会碰 ...

  2. 【php学习之路】字符串操作

           无论学习那种语言,字符串操作都是必备的基础.学php的时候总是会不知不觉的与C#比较,用起来总觉得怪怪的没有那么顺手,有些命名也差别很大,再加上很多函数命名是简写形式不百度下还真不知道什 ...

  3. linux内核SPI总线驱动分析(二)(转)

    简而言之,SPI驱动的编写分为: 1.spi_device就构建并注册  在板文件中添加spi_board_info,并在板文件的init函数中调用spi_register_board_info(s3 ...

  4. Java并发编程实战---第六章:任务执行

    废话开篇 今天开始学习Java并发编程实战,很多大牛都推荐,所以为了能在并发编程的道路上留下点书本上的知识,所以也就有了这篇博文.今天主要学习的是任务执行章节,主要讲了任务执行定义.Executor. ...

  5. DrawerLayout带有侧滑功能的布局类(1)

    DrawerLayout: DrawerLayout顾名思义就是一个管理布局的.使用方式可以与其它的布局类类似. DrawerLayout带有滑动的功能.只要按照drawerLayout的规定布局方式 ...

  6. ORACLE SQL TUNING ADVISOR 使用方法

    sql tunning advisor 使用的主要步骤: 1 建立tunning task 2 执行task 3 显示tunning 结果 4 根据建议来运行相应的调优方法  下面来按照这个顺序来实施 ...

  7. Mysql找不到mysql.sock怎么办?

    1. #ps -aux|grep mysql 找mysql的进程. #kill mysql进程号 确定全部kill光 2.直接跳第3步,无效再使用第2步 /usr/local/mysql/bin/my ...

  8. random_names随机名字生成

    // 先从txt文件中获取姓和名数组 - (void)getNames{ NSString *resourcePath1 = [[NSBundle mainBundle] pathForResourc ...

  9. SQLite之写一个表

    1.首先你需要一个路径. 获取document目录并返回数据库目录 - (NSString *)dataFilePath{ NSArray *paths = NSSearchPathForDirect ...

  10. 混合使用C和C++

    C++作为C语言的扩展集,几乎所有的C程序都可以在C++中编译和运行,但是要注意C程序中可能使用了C++中的关键字作为变量,比如在C中:int class = 0; 但这在C++中不行.出于方便性,我 ...