Python股票信息抓取(三)
最近在看mongodb,然后会用了一些最简单的mongodb的操作,然后想着结合股票信息的数据的抓取,然后将数据存储在mongodb中,对于mongo和数据库的最大的区别是,mongo不需要建表,直接进行存储,然后在选择数据表的时候在进行插入数据的时候要将str格式的字符串转换成json的格式进行插入,这个我在插入数据的时候调试了十多分钟,一直以为是自己字符串的原因,然后看了看插入数据的格式和百度,然后才发现这点。然后我是插入在本机的test.Share表中的,然后其他的注重点就没有什么了~代码写的很丑,冗余也很大,还是会继续更新~并且程序是但进程进行的数据抓取~嗯~ 很蠢~
- #-*-coding:utf-8 -*-
- import urllib
- import re
- import json
- import urllib2
- from lxml import etree
- import requests
- import time
- from Queue import Queue
- from pymongo import MongoClient
- import matplotlib.pyplot as plt
- URL = 'http://quote.fx678.com/exchange/WH'
- nation_que = Queue()
- client = MongoClient('localhost',27017)
- db = client.test
- Share = db.Share
- def sub_sort(array,array1,low,high):
- key = array[low]
- key1 = array1[low]
- while low < high:
- while low < high and array[high] >= key:
- high -= 1
- while low < high and array[high] < key:
- array[low] = array[high]
- array1[low] = array1[high]
- low += 1
- array[high] = array[low]
- array1[high] = array1[low]
- array[low] = key
- array1[low] = key1
- return low
- def quick_sort(array,array1,low,high):
- if low < high:
- key_index = sub_sort(array,array1,low,high)
- quick_sort(array,array1,low,key_index)
- quick_sort(array,array1,key_index+1,high)
- def download(url, headers, num_try=2):
- while num_try >0:
- num_try -= 1
- try:
- content = requests.get(url, headers=headers)
- return content.text
- except urllib2.URLError as e:
- print 'Download error', e.reason
- return None
- current_quto = Queue()
- open_quto = Queue()
- high_quto = Queue()
- low_quto = Queue()
- close_quto = Queue()
- update_time = Queue()
- def get_type_url():
- headers = {
- 'User_agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36',
- 'Referer': 'http://quote.fx678.com/exchange/WH',
- 'Cookie': 'io=-voMclEjiizK9nWKALqB; UM_distinctid=15f5938ddc72db-089cf9ba58d9e5-31657c00-fa000-15f5938ddc8b24; Hm_lvt_d25bd1db5bca2537d34deae7edca67d3=1509030420; Hm_lpvt_d25bd1db5bca2537d34deae7edca67d3=1509031023',
- 'Accept-Language': 'zh-CN,zh;q=0.8',
- 'Accept-Encoding': 'gzip, deflate',
- 'Accept': '*/*'
- }
- content = download(URL,headers)
- html = etree.HTML(content)
- result = html.xpath('//a[@class="mar_name"]/@href')
- result1 = html.xpath('//td/text()')
- num = 0
- for each in result1:
- if num%6 == 0:
- current_quto.put(each)
- num += 1
- elif num%6 == 1:
- open_quto.put(each)
- num += 1
- elif num%6 == 2:
- high_quto.put(each)
- num += 1
- elif num%6 == 3:
- low_quto.put(each)
- num += 1
- elif num %6 == 4:
- close_quto.put(each)
- num +=1
- elif num %6 == 5:
- update_time.put(each)
- num +=1
- #while not
- for each in result:
- st = each.split('/')
- nation_que.put(st[len(st)-1])
- get_precent()
- def get_precent():
- while not nation_que.empty():
- if not update_time.empty():
- time_update = update_time.get(False)
- update_time.task_done()
- if not current_quto.empty():
- new_rates = current_quto.get(False)
- current_quto.task_done()
- if not open_quto.empty():
- opening = open_quto.get(False)
- open_quto.task_done()
- if not high_quto.empty():
- high = high_quto.get(False)
- high_quto.task_done()
- if not low_quto.empty():
- low = low_quto.get(False)
- low_quto.task_done()
- if not close_quto.empty():
- closing = close_quto.get(False)
- close_quto.task_done()
- ss = nation_que.get(False)
- print ss
- print low
- print high
- print time_update
- print new_rates
- print opening
- url = 'http://api.q.fx678.com/history.php?symbol=' + ss +'&limit=288&resolution=5&codeType=8100&st=0.8274405615006541'
- print url
- headers = {'Accept':'application/json, text/javascript, */*; q=0.01',
- 'Accept-Encoding':'gzip, deflate',
- 'Accept-Language':'zh-CN,zh;q=0.8',
- 'Connection':'keep-alive',
- 'Host':'api.q.fx678.com',
- 'Origin':'http://quote.fx678.com',
- 'Referer':'http://quote.fx678.com/symbol/USD',
- 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36'
- }
- num_try = 2
- while num_try >0:
- num_try -= 1
- try:
- content = requests.get(url, headers=headers)
- html = json.loads(content.text)
- st = html['h']
- T_time = html['t']
- if len(st) > 0 and len(T_time) > 0:
- draw_pict(ss,T_time,st,time_update,new_rates,opening,high,low,closing)
- break
- except urllib2.URLError as e:
- print 'Download error', e.reason
- nation_que.task_done()
- List = []
- def draw_pict(name,T_time1,high_rate,time_update,new_rate,opening,high,low,closing):
- High = T_time1
- Time = high_rate
- High_Rate = []
- T_time = []
- mmap = "{\"Type\":\"%s\",\"Current_quto\":\"%s\",\"Opening_quto\":\"%s\",\"High_quto\":\"%s\",\"low_quto\":\"%s\",\"Closing_quto\":\"%s\",\"Update_Time\":\"%s\",\"Real_TIme_infor\":{" % ( name, new_rate, opening, high, low, closing, time_update)
- print mmap
- flag = 0
- for each,high1 in zip(T_time1,high_rate):
- if flag == 1:
- mmap += ","
- else:
- flag = 1
- mm = "\"%s\":\"%s\""%(each,high1)
- st = time.localtime(float(each))
- mmap += mm
- if st.tm_min == 0:
- T_time.append(st.tm_hour)
- High_Rate.append(high1)
- else:
- pass
- mmap += "}}"
- mmap1 = json.loads(mmap)
- print mmap1
- Share.insert(mmap1)
- if len(T_time) == len(High_Rate):
- quick_sort(T_time,High_Rate,0,len(High_Rate)-1)
- List.append(High_Rate)
- def draw_picture():
- colu = len(List)
- num = 1
- for each in List:
- plt.subplot(colu/2 + 1,2,num)
- num+=1
- list = each
- T_time = []
- for i in range(len(list)):
- T_time.append(i)
- print len(list)
- print len(T_time)
- plt.plot(T_time, list, marker='*')
- plt.show()
- plt.title('Share Message')
- if __name__ == '__main__':
- get_type_url()
- draw_picture()
Python股票信息抓取(三)的更多相关文章
- Python股票信息抓取~
本来想把股票的涨跌抓取出来,用汇通网的股票为例,就找了国际外汇为例. 页面里有xhr请求,并且每个xhr的url请求的 http://api.q.fx678.com/history.php?symbo ...
- Python股票信息抓取(二)
在一的基础上,想着把所有的折线图放在一个图中,然后图的结果如图所示: 不是略丑,是很丑~ 依然的单进程,只是将图标结果放在了一张图里 代码如下: #-*-coding:utf-8 -*- import ...
- python 爬虫抓取心得
quanwei9958 转自 python 爬虫抓取心得分享 urllib.quote('要编码的字符串') 如果你要在url请求里面放入中文,对相应的中文进行编码的话,可以用: urllib.quo ...
- Python 爬虫: 抓取花瓣网图片
接触Python也好长时间了,一直没什么机会使用,没有机会那就自己创造机会!呐,就先从爬虫开始吧,抓点美女图片下来. 废话不多说了,讲讲我是怎么做的. 1. 分析网站 想要下载图片,只要知道图片的地址 ...
- Python爬虫----抓取豆瓣电影Top250
有了上次利用python爬虫抓取糗事百科的经验,这次自己动手写了个爬虫抓取豆瓣电影Top250的简要信息. 1.观察url 首先观察一下网址的结构 http://movie.douban.com/to ...
- Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储
Python爬虫可以说是好玩又好用了.现想利用Python爬取网页股票数据保存到本地csv数据文件中,同时想把股票数据保存到MySQL数据库中.需求有了,剩下的就是实现了. 在开始之前,保证已经安装好 ...
- python Web抓取(一)[没写完]
需要的模块: python web抓取通过: webbrowser:是python自带的,打开浏览器获取指定页面 requests:从因特网上下载文件和网页 Beautiful Soup:解析HTML ...
- python requests抓取NBA球员数据,pandas进行数据分析,echarts进行可视化 (前言)
python requests抓取NBA球员数据,pandas进行数据分析,echarts进行可视化 (前言) 感觉要总结总结了,希望这次能写个系列文章分享分享心得,和大神们交流交流,提升提升. 因为 ...
- python数据抓取分析(python + mongodb)
分享点干货!!! Python数据抓取分析 编程模块:requests,lxml,pymongo,time,BeautifulSoup 首先获取所有产品的分类网址: def step(): try: ...
随机推荐
- ZJOI2018 D1
归途的车上满是悲伤的气息 虽然早就预言到D1会滚粗,但一切都结束之后还是特别难过. 延时15min 50min T1 30pts 1.5h T2 10pts 2.5h T1 50pts 4.5h T3 ...
- 【树状数组】【P3902】 递增
传送门 Description 给你一个长度为\(n\)的整数数列,要求修改最少的数字使得数列单调递增 Input 第一行为\(n\) 第二行\(n\)个数代表数列 Output 输出一行代表答案 H ...
- dTree 动态生成树
http://luohua.iteye.com/blog/451453 dTree 主页:http://destroydrop.com/javascripts/tree/ dTree是个很方便在页面生 ...
- Python高级语法总结
1.Python面向对象 创建类 使用class语句来创建一个新类,class之后为类的名称并以冒号结尾,如下实例: class ClassName: '类的帮助信息' #类文档字符串 class_s ...
- Codeforces Round #419 (Div. 2) A B C 暴力 区间更新技巧 +前缀和 模拟
A. Karen and Morning time limit per test 2 seconds memory limit per test 512 megabytes input standar ...
- 电商网站中价格的精确计算(使用BigDecimal进行精确运算(实现加减乘除运算))
使用BigDecimal的String的构造器.商业计算中,使用bigdecimal的String构造器,一定要用. 重要的事情说三遍: 商业计算中,使用bigdecimal的String构造器! 商 ...
- python学习(十一)测试和调试
最近学习了python的错误处理和几种测试方法 1 try except 可以通过try except方式捕捉异常 try: print('try...') r = 10/0 print('resul ...
- centos6.5 mqtt安装
CentOs 6.5 MQTT 安装部署 所需安装包: libwebsockets-v1.6-stable.tar.gz,mosquitto-1.4.8.tar.gz 1.安装依赖 # yum -y ...
- NOIP 2015 提高组 Day1
期望得分:100+100+100=300 实际得分:100+100+45=245 T3 相似的代码 复制过去 没有改全,痛失55分 http://www.cogs.pro/cogs/page/page ...
- select表单元素详解及下拉列表模拟实现
原文地址:→看过来 写在前面 select 是HTML表单元素中很常用的一个,其中很重要的几个属性常被忽略,但这几个属性却能帮助我们完成很多的功能,当然,select下拉列表默认样式很不友好,所以更多 ...