巩固爬虫和数据库使用技巧
本次我们将对国际现货与期货石油价格、美元人民币汇率、美元指数等数据的实时监控,采样频率为一小时一次。
提取数据网址:
1.http://quote.eastmoney.com/gjqh/CONC.html(国际现货与期货石油价格)
2.http://finance.sina.com.cn/money/forex/hq/DINIW.shtml?qq-pf-to=pcqq.c2c(美元人民币汇率以及美元指数)
首先这两个网页均是动态的,因此提取我们想要的数据只要找到生成这些数据相应的js页面即可(分析浏览器抓包工具很快便可以找到):
把这些网页找到后,我们便开始分析哪些是我们需要的数据,如美元人名币汇率,第一项时间指的是美元人名币汇率最近发生变化的时间,第二项代表目前的汇率,后面代表前几次刷新的汇率,其他美元指数、原油指数分析方法与其类似···找到我们需要的数据后,直接用正则表达式便可提取出来了:
USDCNY = re.compile('var hq_str_USDCNY=".*?,(.*?),.*?";')
DINIW = re.compile('".*?,(.*?),.*?";')
CONC = re.compile('extendedFutures:\["0.00,0|0.00,0",".*?,(.*?),.*?"]')
这三个正则表达式将会匹配到我们需要的所有数据,接下来我们将这些数据放入数据库中:
def write_to_mysql():try:cxn = MySQLdb.connect(host='localhost', user='root', passwd='root',db='python') #与数据库建立连接except:print "Could not connect to MySQL server."exit( 0 )<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>cur = cxn.cursor()<span style="white-space:pre"> </span> #获取操作游标<span style="white-space:pre"> </span>cur.execute("CREATE TABLE dollar(Local_time VARCHAR(20),USDCNH VARCHAR(8),DINIW VARCHAR(8))")<span style="white-space:pre"> </span>#创建一个dollar表,包含记录时间、汇率、美元指数三个参数cur.execute("create table oil(Local_time VARCHAR(20),CONC VARCHAR(20))")<span style="white-space:pre"> </span> #创建一个oil表,包含记录时间、原油指数两个参数print "数据写入数据库中..."while 1:value1 = []value2 = []result(value1,value2)<span style="white-space:pre"> </span> #调用result函数,获取我们从网页抓取的数据cur.execute("INSERT INTO dollar VALUES(%s, %s,%s)" ,value1)<span style="white-space:pre"> </span> #将对应数据传入dollar表中cur.execute("INSERT INTO oil VALUES(%s, %s)" ,value2)<span style="white-space:pre"> </span> #将对应数据传入oil表中cxn.commit()<span style="white-space:pre"> </span> #提交time.sleep(60*60)<span style="white-space:pre"> </span> #隔一个小时采样一次cxn.close()<span style="white-space:pre"> </span> #关闭数据库连接
def result(value1,value2):url1 = 'http://hq.sinajs.cn/?rn=1417610216083&list=AUDCHF,AUDHKD,AUDJPY,AUDUSD,CADHKD,CADJPY,CHFCAD,CHFHKD,DINIW,EURUSD,GBPEUR,GBPHKD,GBPUSD,USDCAD,USDCHF,USDCNY,USDHKD,USDJPY,gb_dji,gb_ixic,hf_C,hf_CAD,hf_CL,hf_GC,hf_S,hf_SI,int_hangseng,int_nikkei'url2 = 'http://hq.sinajs.cn/?rn=1417610565584&list=DINIW'url3 = 'http://hq2gjqh.eastmoney.com/em_futures2010numericapplication/index.aspx?type=f&id=CONC0&v=1417613016752&_=1417613016753'html1 = requests.get(url1)html2 = requests.get(url2)html3 = requests.get(url3)ISOTIMEFORMAT= '%Y-%m-%d %X'value1.append(time.strftime(ISOTIMEFORMAT,time.localtime()))value2.append(time.strftime(ISOTIMEFORMAT,time.localtime()))USDCNY = re.compile('var hq_str_USDCNY=".*?,(.*?),.*?";').findall(html1.text)DINIW = re.compile('".*?,(.*?),.*?";').findall(html2.text)CONC = re.compile('extendedFutures:\["0.00,0|0.00,0",".*?,(.*?),.*?"]').findall(html3.text)value1.append(USDCNY[0].encode('utf-8'))value1.append(DINIW[0].encode('utf-8'))value2.append(CONC[1].encode('utf-8'))write_to_mysql()
编程部分完成,接下来只需等待数据写入数据库中,附上我程序运行结果图:
巩固爬虫和数据库使用技巧相关推荐
- 14 个实用的数据库设计技巧,一次性教给你!
目录 原始单据与实体之间的关系 主键与外键 基本表的性质 范式标准 通俗地理解三个范式 要善于识别与正确处理多对多的关系 主键PK的取值方法 正确认识数据冗余 E--R图没有标准答案 视图技术在数据库 ...
- 【干货合辑】+你有什么独家数据库优化技巧?
数据库优化是每个开发.运维同学成长过程中的必修课,特此,我们从腾云阁文章中梳理了一部分受开发者欢迎的数据库文章.供大家参考 腾讯云开发者社区今天想和各位开发者一起探讨下你有什么独家数据库优化技巧?欢迎 ...
- mysql数据库优化大全_MySQL数据库优化技巧大全
简介: MySQL数据库优化技巧大全 MySQL优化三大方向 ① 优化MySQL所在服务器内核(此优化一般由运维人员完成). ② 对MySQL配置参数进行优化(my.cnf)此优化需要进行压力测试来进 ...
- 14个实用的数据库设计技巧!
作者: sirfei 来源:blog.csdn.net/sirfei/article/details/434994 1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它 ...
- python 下载文件 限速-Python网络爬虫---scrapy通用爬虫及反爬技巧
一.通用爬虫 通用爬虫一般有以下通用特性:爬取大量(一般来说是无限)的网站而不是特定的一些网站. 不会将整个网站都爬取完毕,因为这十分不实际(或者说是不可能)完成的.相反,其会限制爬取的时间及数量. ...
- MySQL数据库优化技巧大全
简介:MySQL数据库优化技巧大全 MySQL优化三大方向 ① 优化MySQL所在服务器内核(此优化一般由运维人员完成). ② 对MySQL配置参数进行优化(my.cnf)此优化需要进行压力测试来进行 ...
- MySQL数据库优化技巧(二)
在上一篇MySQL数据库优化技巧中,主要是从表设计的角度来优化,这篇将探讨一下其他的优化技巧. 1. 使用索引 索引是提高数据库性能的常用方法,它可以令数据库服务器以比没有索引快得多的速度检索特定的行 ...
- 面试: 14 个实用的数据库设计技巧,一次性教给你!
目录 原始单据与实体之间的关系 主键与外键 基本表的性质 范式标准 通俗地理解三个范式 要善于识别与正确处理多对多的关系 主键PK的取值方法 正确认识数据冗余 E--R图没有标准答案 视图技术在数据库 ...
- 2数据库表增加一个字段_14个实用的数据库设计技巧!
1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体. 在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证 ...
最新文章
- 为什么 Redis 的吞吐量能这么高
- RESTful Web Services in Spring 3(下)转载
- 【挑战极限】最短AJAX创建代码
- MATLAB函数参数个数控制
- 160 - 19 Brad Soblesky.2
- 自动完成下拉框 Select2 关键字搜索的实例(本地数据与异步获取)
- 关于参数的写法规则,参数引用几种写法
- EOS开发DApp 创建EOS钱包和账号
- c语言怎么写注释,C语言如何注释一段代码?
- 增长率用计算机怎么算,增长率计算公式(excel公式来计算平均增长率的方法)...
- PPP协议身份验证PAP和CHAP
- pandas数据透视表
- Matlab代码书写规范
- 影视后期制作学习(AE)(时钟动画制作)
- 动物网页html5设置思想,网站设计思想
- START 0.296.1 中文版 (腾讯官方云游戏平台)
- html th中加斜杠,vue element 表头添加斜线
- zz:Android APP Monkey信息自动收集脚本
- flvplayer.swf、flv视频播放器使用方法
- C++循环结构——津津的储蓄计划
热门文章
- itop4412 LCD设备驱动详解(四)之PROBE再深入
- PDF切边裁剪软件下载
- JAVA毕业设计健康医疗预约系统计算机源码+lw文档+系统+调试部署+数据库
- Spring Cloud Data Flow整合UAA之使用LDAP进行账号管理
- java源代码打包为jar且对于游戏可执行
- 事务隔离级别和传播行为_?Spring事务的传播行为案例分析
- 请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构
- 【基础篇1】JavaScript页面生命周期
- 在线PDF转Word文档-PDFtoWord
- 智能客服系列3 seq2seq+attention【Python十分钟写出聊天机器人】基于Keras实现seq2seq模型