先上个图看下网页版数据、mysql结构化数据

通过Python读写mysql执行时间为:1477s,而通过Pandas读写mysql执行时间为:47s,方法2速度几乎是方法1的30倍。在于IO读写上,Python多线程显得非常鸡肋,具体分析可参考:https://cuiqingcai.com/3325.html

1、Python读写Mysql

# -*- coding: utf-8 -*-

import pandas as pd

import tushare as ts

import pymysql

import time

import requests

import json

from multiprocessing import Pool

import traceback

# ====================东方财富个股盘口异动数据抓取============================================================================================================

def EMydSpider(param_list):

# 抓取东财个股盘口异动数据:http://quote.eastmoney.com/changes

# 创建计数器

success, fail = 0, 0

# 获取当天日期

cur_date = time.strftime("%Y%m%d", time.localtime())

# 创建MySQL连接对象

conn_mysql = pymysql.connect(user='root', password='123456', database='stock', charset='utf8')

cursor = conn_mysql.cursor()

header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3676.400 QQBrowser/10.5.3738.400"}

url = "http://push2ex.eastmoney.com/getAllStockChanges?type=8201,8202,8193,4,32,64,8207,8209,8211,8213,8215,8204,8203,8194,8,16,128,8208,8210,8212,8214,8216"

session = requests.Session()

for param in param_list:

try:

html = json.loads(session.get(url=url, params=param, headers=header).text)

allstock = html['data']['allstock']

for stock in allstock:

stk_code = stock['c'] # 股票代码,无后缀

stk_name = stock['n'] # 股票名称

chg_time = stock['tm'] # 异动时间

chg_type = stock['t'] # 异动类型

chg_value = stock['i'] # 异动值

try:

sql = '''insert into stock_yd_list(stk_code,trade_date,chg_time,chg_type,chg_value) values('%s','%s','%s','%s','%s')''' % (stk_code, cur_date, chg_time, chg_type, chg_value)

cursor.execute(sql)

conn_mysql.commit()

success += 1

print("东方财富盘口异动,第%d条数据存储完成......" % success)

except:

conn_mysql.rollback()

fail += 1

traceback.print_exc()

print("东方财富盘口异动,第%d条数据存储失败......" % fail)

except:

traceback.print_exc()

exit()

cursor.close()

conn_mysql.close()

print('当天个股盘口异动数据获取完毕,新入库数据:%d条' % success)

print('当天个股盘口异动数据获取完毕,入库失败数据:%d条' % fail)

# ====================主函数====================================================================================================================================

if __name__=='__main__':

print("东财异动程序开始执行")

start = time.time()

# 定义空列表

param_list = []

for page in range(0,300):

param = {"pageindex": page, "pagesize": '64', "ut": '7eea3edcaed734bea9cbfc24409ed989', "dpt": 'wzchanges'}

param_list.append(param)

# 创建多进程

pool = Pool(processes=4)

# 开启多进程爬取东财异动数据

try:

pool.map(EMydSpider, (param_list,))

except:

print("多进程执行error")

traceback.print_exc()

end = time.time()

print('东财异动程序共执行%0.2f秒.' % ((end - start)))

执行时间:

2、Pandas读写Mysql

# -*- coding: utf-8 -*-

import pandas as pd

import tushare as ts

import time

import requests

import json

from sqlalchemy import create_engine

from multiprocessing import Pool

from requests.packages.urllib3.exceptions import InsecureRequestWarning

import traceback

# ====================东方财富个股盘口异动数据抓取============================================================================================================

def EMydSpider(param_list):

# 抓取东财个股盘口异动数据:http://quote.eastmoney.com/changes

# 获取当天日期

cur_date = time.strftime("%Y%m%d", time.localtime())

# 创建空列表

html_list = []

header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3676.400 QQBrowser/10.5.3738.400"}

url = "http://push2ex.eastmoney.com/getAllStockChanges?type=8201,8202,8193,4,32,64,8207,8209,8211,8213,8215,8204,8203,8194,8,16,128,8208,8210,8212,8214,8216"

session = requests.Session()

for param in param_list:

try:

html = json.loads(session.get(url=url, params=param, headers=header).text)

html_list.append(html)

except:

break

# 创建用于存储异动数据的空Dataframe

stock_yd = pd.DataFrame(columns=('symbol', 'trade_date', 'chg_time','chg_type','chg_value'))

for html in html_list:

try:

allstock = html['data']['allstock']

for stock in allstock:

code = stock['c'] # 股票代码,无后缀

stk_name = stock['n'] # 股票名称

chg_time = stock['tm'] # 异动时间

chg_type = stock['t'] # 异动类型

chg_value = stock['i'] # 异动值

stock_yd = stock_yd.append({'symbol':code, 'trade_date': cur_date, 'chg_time': chg_time,'chg_type':chg_type,'chg_value':chg_value}, ignore_index=True)

except:

pass

# 创建Pandas读写数据库引擎

engine_mysql = create_engine('mysql://root:123456@127.0.0.1/stock?charset=utf8')

# Pandas数据存储

stock_yd.to_sql('stock_yd_list', engine_mysql, index=False, if_exists='append')

print("新入库数据%s条" % stock_yd.shape[0])

# ====================主函数====================================================================================================================================

if __name__=='__main__':

print("东财异动程序开始执行")

start = time.time()

# 定义空列表

param_list = []

for page in range(0,300):

param = {"pageindex": page, "pagesize": '64', "ut": '7eea3edcaed734bea9cbfc24409ed989', "dpt": 'wzchanges'}

param_list.append(param)

# 创建多进程

pool = Pool(processes=4)

# 开启多进程爬取东财异动数据

try:

pool.map(EMydSpider, (param_list,))

except:

print("多进程执行error")

traceback.print_exc()

end = time.time()

print('东财异动程序共执行%0.2f秒.' % ((end - start)))

执行时间:

标签:chg,Python,读写,Mysql,list,param,time,import,stock

python多进程爬虫保存数据_Python多进程爬虫东方财富盘口异动数据+Python读写Mysql与Pandas读写Mysql效率对比...相关推荐

  1. python最快的循环方法_【转】【Python效率】五种Pandas循环方法效率对比

    [Python效率]五种Pandas循环方法效率对比 - 文兄的文章 - 知乎 https://zhuanlan.zhihu.com/p/80880493 正文: 如果你使用过Python及Panda ...

  2. 循环下标_【转】【Python效率】五种Pandas循环方法效率对比

    [Python效率]五种Pandas循环方法效率对比 - 文兄的文章 - 知乎 https://zhuanlan.zhihu.com/p/80880493 正文: 如果你使用过Python及Panda ...

  3. 浅谈大数据技术之实战足球盘口分析的方法与思路(二)

    足球运动是当今世界上开展最广.影响最大.最具魅力.拥有球迷数最多的体育项目之一,尤其是欧洲足球,每年赛事除了五大联赛(英超.西甲.德甲.法甲.意甲)之外,还会有欧冠(欧洲冠军联赛),精湛的球技,完美的 ...

  4. HQChart使用教程31- 走势图异动数据设置

    走势图异动数据设置 效果图 SetOption配置异动数据 异动信息显示样式配置 效果图 SetOption配置异动数据 var option={Type:'分钟走势图',........Info:[ ...

  5. 爬虫python爬取页面请求_Python网络爬虫第三弹《爬取get请求的页面数据》

    一.urllib库 urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在Python3中的为urllib.request和urllib. ...

  6. python爬虫抓取动态网页数据_python网络爬虫抓取ajax动态网页数据:以抓取KFC门店地址为例...

    一,尝试用BeautifulSoup抓取 先打开KFC网站门店列表页面:http://www.kfc.com.cn/kfccda/storelist/index.aspx 可以看到门店列表如下图: 打 ...

  7. python多线程多进程多协程_python 多进程、多线程、协程

    1.python的多线程 多线程就是在同一时刻执行多个不同的程序,然而python中的多线程并不能真正的实现并行,这是由于cpython解释器中的GIL(全局解释器锁)捣的鬼,这把锁保证了同一时刻只有 ...

  8. python网络爬虫文献综述_python网络爬虫综述

    本文主要是个人python学习过程中的碎碎念想,希望对感兴趣的童鞋有所帮助. 百度百科上网络爬虫的定义是:"网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者 ...

  9. python爬虫实践目的_Python编写爬虫实践

    爬虫的基本流程 网络爬虫的基本工作流程如下: 首先选取一部分精心挑选的种子URL 将种子URL加入任务队列 从待抓取URL队列中取出待抓取的URL,解析DNS,并且得到主机的ip,并将URL对应的网页 ...

最新文章

  1. 依图又斩获10冠!AI芯片拿下创新技术大奖,朱珑再谈智能密度
  2. 机器字长,指令字长,数据子长,MDR
  3. pku 1691 Painting A Board DFS 抽象建图 + 拓扑排序
  4. java继承总结_java继承总结(二)
  5. 近20万奖金:天池异常检测大赛来了!
  6. linux下mac风格菜单栏,ubuntu 8.04 安装mac风格菜单
  7. blade php代码,Laravel 5框架学习之Blade 简介
  8. 操作系统的发展与分类
  9. NodeJs之数据库异常处理
  10. 2018青岛ICPC ZOJ 4062: Plants vs. Zombies(二分)
  11. 7z解压crc错误_百度网盘压缩下载文件的CRC校验错误的解决方法
  12. Python cv2读取/存储图片中含中文路径失败的解决方法
  13. Eclipse创建javaWeb项目工程
  14. 数值分析复化求积matlab,MATLAB数值分析实验二(复合梯形、辛普森和龙贝格求积,以及二重积分计算等)...
  15. app被Rejected 的各种原因翻译
  16. wo zai gong si de yi tian
  17. vmware黑苹果安装vmware tools方法
  18. 【项目】区块链+人工智能 ---PAI白皮书分析(一)
  19. C++产生随机数的几种方法
  20. kubernetes pod infra container网络原理

热门文章

  1. windows内置的linux安卓驱动多系统摆脱虚拟机(下)
  2. PostgreSQL函数(存储过程)----笔记
  3. 封装类(Merry May Day to all you who are burried in work ~)---2017-05-01
  4. HTML 最常用的标记
  5. jQuery点击图片弹出大图遮罩层
  6. toolbox、library 的组织
  7. HDU1086You can Solve a Geometry Problem too(判断线段相交)
  8. 网页中调用Google地图
  9. Linux基本服务命令
  10. Coolite 基本用法(3)