巩固爬虫和数据库使用技巧
来源:互联网 发布:bilibili直播姬 mac 编辑:程序博客网 时间:2024/06/06 03:06
本次我们将对国际现货与期货石油价格、美元人民币汇率、美元指数等数据的实时监控,采样频率为一小时一次。
提取数据网址:
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()
编程部分完成,接下来只需等待数据写入数据库中,附上我程序运行结果图:
0 0
- 巩固爬虫和数据库使用技巧
- 对编写爬虫的巩固
- 爬虫中的python使用技巧
- 使用爬虫的小技巧
- oracle数据库SQLPlus常用命令和使用技巧
- memcache和数据库的使用技巧
- memcache和数据库的使用技巧
- memcache和数据库的使用技巧
- Mysql数据库巩固
- 电子邮件营销基础技巧巩固
- MySQL 数据库使用技巧
- 数据库使用小技巧
- 数据库使用技巧
- 数据库使用技巧
- oracle数据库使用技巧
- 数据库使用技巧
- [爬虫] Python爬虫技巧
- 爬虫技巧
- TDI 完全解析
- Linux系统下查看系统正在运行的线程、占用的端口号
- HDU—— 2088 Box of Bricks
- Hanlder SendMessage 如何发送字符串或消息
- qt学习之对个人画板的实现(1)
- 巩固爬虫和数据库使用技巧
- 数据库中视图的用处
- 2-1 开始学习<p>标签
- C++ 重载I/O运算符
- 向将就说“NO”
- 一个下载pdf的简单python爬虫
- 嗅探的介绍极其原理、作用
- linux系统学习:基础篇(系统介绍以及命令行的使用)快速入门linux系统
- Haskell 与 Functor