python抓取汇率
- # -*- coding: utf-8 -*-
- """
- 获取实时汇率
- Created on Fri Oct 18 13:11:40 2013
- @author: alala
- """
- import httplib
- import re
- import MySQLdb
- import datetime
- URL = 'fx.cmbchina.com' #网站名
- PATH = '/hq/' #页面路径
- HOST = 'localhost' #数据库地址(ip)
- DB = "money" #数据库名称
- USER = 'root' #数据库用户名
- PSWD = 'sheet' #数据库密码
- httpClient = None
- try:
- #抓去网页内容
- httpClient = httplib.HTTPConnection(URL, 80, timeout=30)
- httpClient.request('GET', '/hq/')
- response = httpClient.getresponse()
- html = response.read()
- #print html
- #用正则表达式抓去汇率数据
- reg = re.compile(r"""
- <tr>\s*<td\s+class="fontbold">\s*(?P<name>\S+)\s*</td>\s* #交易币
- <td\s+align="center">\s*(?P<unit>\d+)\s*</td>\s* #交易币单位
- <td\s+align="center"\s+class="fontbold">\s*(?P<base>\S+)\s*</td>\s* #基本币
- <td\s*class="numberright">\s*(?P<midPrice>\d+\.\d+)\s*</td>\s* #中间价
- <td\s*class="numberright">\s*(?P<sellPrice>\d+\.\d+)\s*</td>\s* #卖出价
- <td\s*class="numberright">\s*(?P<buyPrice1>\d+\.\d+)\s*</td>\s* #现汇买入价
- <td\s*class="numberright">\s*(?P<buyPrice2>\d+\.\d+)\s*</td>\s* #现钞买入价
- <td\s*align="center">\s*(?P<time>\d+:\d+:\d+)\s*</td>\s* #时间
- """, re.MULTILINE | re.X)
- rows = reg.findall(html)
- #打印汇率数据
- for r in rows:
- print ','.join(map(str,r)), '\n'
- #数据库操作
- #确保mysqldb已经安装,可以用下面的命令安装
- #pip install MySQL-python
- #建立和数据库系统的连接
- conn = MySQLdb.connect(host=HOST, user=USER,passwd=PSWD)
- #获取操作游标
- cursor = conn.cursor()
- #执行SQL,创建一个数据库.
- cursor.execute("CREATE DATABASE IF NOT EXISTS " + DB)
- #选择数据库
- conn.select_db(DB);
- #执行SQL,创建一个数据表.
- cursor.execute("""CREATE TABLE IF NOT EXISTS exchange_rate(
- name VARCHAR(50) COMMENT '交易币' PRIMARY KEY,
- unit INT COMMENT '交易币单位',
- base VARCHAR(50) COMMENT '基本币',
- midPrice FLOAT COMMENT '中间价',
- sellPrice FLOAT COMMENT '卖出价',
- buyPrice1 FLOAT COMMENT '现汇买入价',
- buyPrice2 FLOAT COMMENT '现钞买入价',
- time DATETIME COMMENT '时间' ) """)
- records = []
- for r in rows:
- (name,unit,base,midPrice,sellPrice,buyPrice1,buyPrice2,time) = r
- time = datetime.datetime.strptime(datetime.datetime.now().strftime('%Y-%m-%d')
- + " " + time,'%Y-%m-%d %H:%M:%S')
- record = (name,int(unit),base,float(midPrice),float(sellPrice),
- float(buyPrice1),float(buyPrice2),time)
- records.append(record)
- #print records
- #更新汇率
- cursor.executemany("REPLACE exchange_rate VALUES(%s,%s,%s,%s,%s,%s,%s,%s)"
- ,records);
- conn.commit()
- #关闭连接,释放资源
- cursor.close();
- except Exception,e:
- print e
- finally:
- if httpClient:
- httpClient.close()
python抓取汇率的更多相关文章
- Python 抓取网页并提取信息(程序详解)
最近因项目需要用到python处理网页,因此学习相关知识.下面程序使用python抓取网页并提取信息,具体内容如下: #---------------------------------------- ...
- 使用 Python 抓取欧洲足球联赛数据
Web Scraping在大数据时代,一切都要用数据来说话,大数据处理的过程一般需要经过以下的几个步骤 数据的采集和获取 数据的清洗,抽取,变形和装载 数据的分析,探索和预测 ...
- python抓取性感尤物美女图
由于是只用标准库,装了python3运行本代码就能下载到多多的美女图... 写出代码前面部分的时候,我意识到自己的函数设计错了,强忍继续把代码写完. 测试发现速度一般,200K左右的下载速度,也没有很 ...
- python抓取网页例子
python抓取网页例子 最近在学习python,刚刚完成了一个网页抓取的例子,通过python抓取全世界所有的学校以及学院的数据,并存为xml文件.数据源是人人网. 因为刚学习python,写的代码 ...
- Python抓取页面中超链接(URL)的三中方法比较(HTMLParser、pyquery、正则表达式) <转>
Python抓取页面中超链接(URL)的3中方法比较(HTMLParser.pyquery.正则表达式) HTMLParser版: #!/usr/bin/python # -*- coding: UT ...
- 如何用python抓取js生成的数据 - SegmentFault
如何用python抓取js生成的数据 - SegmentFault 如何用python抓取js生成的数据 1赞 踩 收藏 想写一个爬虫,但是需要抓去的的数据是js生成的,在源代码里看不到,要怎么才能抓 ...
- 关于python抓取google搜索结果的若干问题
关于python抓取google搜索结果的若干问题 前一段时间一直在研究如何用python抓取搜索引擎结果,在实现的过程中遇到了很多的问题,我把我遇到的问题都记录下来,希望以后遇到同样问题的童 ...
- 用python抓取智联招聘信息并存入excel
用python抓取智联招聘信息并存入excel tags:python 智联招聘导出excel 引言:前一阵子是人们俗称的金三银四,跳槽的小朋友很多,我觉得每个人都应该给自己做一下规划,根据自己的进步 ...
- python抓取月光博客的全部文章而且依照标题分词存入mongodb中
猛击这里:python抓取月光博客的全部文章
随机推荐
- 新浪SAE URLRewrite(伪静态、重定向)详解
SAE全称Sina App Engine,真是一个好东西,他有很多优秀的特性,简单来说SAE就是一个简单高效的分布式Web服务开发.运行平台.支持现在常用的 PHP+Mysql 环境,在开发中难免会碰 ...
- 【php学习之路】字符串操作
无论学习那种语言,字符串操作都是必备的基础.学php的时候总是会不知不觉的与C#比较,用起来总觉得怪怪的没有那么顺手,有些命名也差别很大,再加上很多函数命名是简写形式不百度下还真不知道什 ...
- linux内核SPI总线驱动分析(二)(转)
简而言之,SPI驱动的编写分为: 1.spi_device就构建并注册 在板文件中添加spi_board_info,并在板文件的init函数中调用spi_register_board_info(s3 ...
- Java并发编程实战---第六章:任务执行
废话开篇 今天开始学习Java并发编程实战,很多大牛都推荐,所以为了能在并发编程的道路上留下点书本上的知识,所以也就有了这篇博文.今天主要学习的是任务执行章节,主要讲了任务执行定义.Executor. ...
- DrawerLayout带有侧滑功能的布局类(1)
DrawerLayout: DrawerLayout顾名思义就是一个管理布局的.使用方式可以与其它的布局类类似. DrawerLayout带有滑动的功能.只要按照drawerLayout的规定布局方式 ...
- ORACLE SQL TUNING ADVISOR 使用方法
sql tunning advisor 使用的主要步骤: 1 建立tunning task 2 执行task 3 显示tunning 结果 4 根据建议来运行相应的调优方法 下面来按照这个顺序来实施 ...
- Mysql找不到mysql.sock怎么办?
1. #ps -aux|grep mysql 找mysql的进程. #kill mysql进程号 确定全部kill光 2.直接跳第3步,无效再使用第2步 /usr/local/mysql/bin/my ...
- random_names随机名字生成
// 先从txt文件中获取姓和名数组 - (void)getNames{ NSString *resourcePath1 = [[NSBundle mainBundle] pathForResourc ...
- SQLite之写一个表
1.首先你需要一个路径. 获取document目录并返回数据库目录 - (NSString *)dataFilePath{ NSArray *paths = NSSearchPathForDirect ...
- 混合使用C和C++
C++作为C语言的扩展集,几乎所有的C程序都可以在C++中编译和运行,但是要注意C程序中可能使用了C++中的关键字作为变量,比如在C中:int class = 0; 但这在C++中不行.出于方便性,我 ...