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: ...
随机推荐
- 【HDU5730】Shell Necklace(多项式运算,分治FFT)
[HDU5730]Shell Necklace(多项式运算,分治FFT) 题面 Vjudge 翻译: 有一个长度为\(n\)的序列 已知给连续的长度为\(i\)的序列装饰的方案数为\(a[i]\) 求 ...
- 洛谷 P4503 [CTSC2014]企鹅QQ 解题报告
P4503 [CTSC2014]企鹅QQ 题目背景 PenguinQQ是中国最大.最具影响力的SNS(Social Networking Services)网站,以实名制为基础,为用户提供日志.群.即 ...
- 洛谷p1017 进制转换(2000noip提高组)
洛谷P1017 进制转换 题意分析 给出一个数n,要求用负R进制显示. n∈[-32768,32767].R ∈[-20,-2] 考察的是负进制数的转换,需要理解短除法. 看到这道题的时候,我是比较蒙 ...
- vim在行首和 行尾加
在每行开始加入“<a href=” vim 命令: :%s/^/<a href=/g 在每行尾加入 “</a>” vim命令 : ...
- CentOS 7.0 作为服务器注意事项
配置防火墙,开启80端口.3306端口: CentOS 7.0默认使用的是firewall作为防火墙 关闭firewall: systemctl stop firewalld.service #停止 ...
- 那些你不常用却非常有用的MySql语句和命令
操作数据库 关于数据库的操作比较少,主要是:看.建.用.删. 查看数据库 获取服务器上的数据库列表通常很有用.执行show databases;命令就可以搞定. 1 mysql> show da ...
- Centos7.3 安装 OpenCV3.3.0
一开始会出现这个错误: CMake Error at CMakeLists.txt: (message): FATAL: In-source builds are not allowed. You s ...
- Linux HugePage 特性
HugePage,就是指的大页内存管理方式.与传统的4kb的普通页管理方式相比,HugePage为管理大内存(8GB以上)更为高效.本文描述了什么是HugePage,以及HugePage的一些特性. ...
- 图片虚拟目录--即图片保存在window硬盘上面
这个是图片保存在电脑的硬盘上面的图片上传设置,既不是在web工程中,也不是在专门的图片服务器中,下面是配置方法: r 这里的Document base 我们这里设置为F:\images 如果在浏览器访 ...
- jni里找不到刚添加的C++函数
使用NDK开发,用到了JNI来连接C++和JAVA. 当C++方增加了一个新函数,jni访问此函数,eclipse会提示找不到改函数,然后前面打个红叉叉表示语法错误,从而阻碍了编译和运行. 当我选择清 ...