Python爬虫小实战

.
通过Python爬虫获取基金持仓股票数据,按照基金持仓金额对股票进行排行,并储存在本地数据库。

from urllib import request
from bs4 import BeautifulSoup
import re
import pymysqlfundSharesList = []db =pymysql.connect(host = '127.0.0.1',  port =3306,user = 'root',password = '109036',db = 'fund',charset = 'utf8'
)head={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36"
}find = {1:re.compile(r'html">(.*?)</a></td>'),2:re.compile(r'html">(.*?)</a></td>'),6:re.compile(r'">(.*?)</td>'),7:re.compile(r'">(.*?)</td>'),8:re.compile(r'">(.*?)</td>')
}def handle (a):flag = Falsefor i in range(0,len(fundSharesList)):if a[0] == fundSharesList[i][0]:fundSharesList[i][2] = round(float(fundSharesList[i][2]) + float(a[4]),2)flag =Truebreakif not flag:new = [a[0],a[1],a[4]]fundSharesList.append(new)if __name__=="__main__":  funds = []fundNum = 0errorNum = 0send = request.Request("http://fund.eastmoney.com/js/fundcode_search.js",headers = head)response = request.urlopen(send)js = response.read().decode('utf-8')js = js[11:len(js)-3].split("],[")for i in range(0,len(js)):fund = str(js[i]).replace('"','')fund = fund.split(",")funds.append(fund)while fundNum < len(funds):fund_id = funds[fundNum][0]print(fund_id + " " + funds[fundNum][2])try:url = "http://fundf10.eastmoney.com/FundArchivesDatas.aspx?type=jjcc&code=" + str(fund_id) + "&topline=10&year=2020&month=&rt=0.21822537857648627"send = request.Request(url,headers = head)response = request.urlopen(send, timeout=10)html = response.read().decode('utf-8')bs =BeautifulSoup(html,"html.parser")find_list = bs.find_all("tbody")tr = find_list[0].find_all("tr")for i in tr:td = i.find_all("td")fundShares = []for j in range(0,len(td)):if j in [1,2,6,7,8]:a = re.findall(find[j],str(td[j]))[0]if j ==8 :a = str(a).replace(",","")if(len(a)>8):time.sleep(6)fundShares.append(a)handle(fundShares)print()errorNum = 0except Exception as e:print(fund_id + " 获取失败")print(e)if str(e) =="timed out" and errorNum <= 3:print("第" + str(errorNum) + "次超时,重试")errorNum = errorNum + 1fundNum = fundNum - 1print()fundNum = fundNum + 1# if fundNum == 1000:#     break # 使用 cursor() 方法创建一个游标对象 cursorcursor = db.cursor() try:for insert in fundSharesList:sql = "INSERT INTO fundShares VALUES ('"+ str(insert[0]) +"', '" + str(insert[1]) +"', " + str(insert[2]) + ");"print(sql)# 执行sql语句cursor.execute(sql)# 提交到数据库执行db.commit()except Exception as e:# 回滚db.rollback()raise Exception("插入数据库错误!", e)# 关闭数据库连接db.close()

结果分析:

建表语句

CREATE TABLE `fundshares`  (`fundSharesId` varchar(6) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '股票代码',`fundSharesName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '股票名称',`fundSharesMoney` double(255, 2) NULL DEFAULT NULL COMMENT '金额(万元)',UNIQUE INDEX `unique`(`fundSharesId`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;

Python爬虫获取基金持仓股票数据相关推荐

  1. python爬虫获取基金数据2

    用sklearn分析基金数据<1> python爬虫获取基金数据<2> 数据预处理:数据清洗.生成样本数据<3> 用sklearn训练样本数据<4> 用 ...

  2. 手把手教你利用 python 爬虫分析基金、股票

    手把手教你利用 python 爬虫分析基金.股票 文章目录 手把手教你利用 python 爬虫分析基金.股票 第一步:基金数据爬取 第二步:股票增持计算 第三步:好股基金选取 桌面程序 exe 从前大 ...

  3. 用 Python 快速获取基金持仓增减情况 | 更新版

    来源:Python数据之道 (ID:PyDataLab) 作者:阳哥 01写在前面 大家好,我是阳哥. 大家知道,在财经领域,Python是有着广泛的用途的.2021年,量化基金开始成为弄潮儿.有不少 ...

  4. 用 Python 快速获取基金持仓增值与减持情况

    来源:Python数据之道 (ID:PyDataLab) 作者:阳哥 大家好,我是阳哥. 大家知道,在财经领域,Python是有着广泛的用途的,这不,最近A股成交量明显扩大,有不少消息说是量化类的基金 ...

  5. 星球年度汇总-爬虫获取基金持仓明细(附GUI可拿来就用}

    量化交易是一个多技术综合的项目,学习完书籍<Python股票量化交易从入门到实践>我们提供了升级的学习内容--知识星球<玩转股票量化交易> 在星球中我们深入分享包括Python ...

  6. 现在还有人说Python 爬虫没用吗?股票数据定向爬虫让你轻松了解股势

    说明 网站选择原则: 股票信息静态存在于html页面中,非js代码生成,没有Robbts协议限制. 选取方法: 打开网页,查看源代码,搜索网页的股票价格数据是否存在于源代码中. 需要相关python爬 ...

  7. 【转】Python之获取每日涨停板股票数据并绘制K线图!

    利用tushare财经数据接口获取股市进行数据分析.并可视化的案例 1.导入所需要的库 import os import pandas as pd import tushare as ts impor ...

  8. Python之获取每日涨停板股票数据并绘制K线图!

    利用tushare财经数据接口获取股市进行数据分析.并可视化的案例 1.导入所需要的库 import os import pandas as pd import tushare as ts impor ...

  9. python 爬虫 获取bilibili search搜索数据,返回json格式

    话不多说直接上代码 测试用例 : 搜索java为关键词的 时长在60分钟以上的视频 import requests import json import osheaders = {"user ...

最新文章

  1. notepad++ 快捷键
  2. 通信信号处理中为什么要分为I、Q两路
  3. 用php获取header头信息
  4. 荣耀X8碎屏2020-05-14
  5. inspinia中文管理后台_Bootstrap优秀模板-INSPINIA.2.9.2
  6. java电力巡检系统 项目讲解_公司召开安全巡检系统APP试点项目上线启动会
  7. 2020华为软件精英挑战赛-有向图找环
  8. android下watchprosp和svc命令
  9. 分享MYSQL中的各种高可用技术
  10. 文献阅读(19)ISSCC 2020
  11. 共享计算机突然无法访问,共享的文件突然不能访问了电脑重启后又能访问为什么...
  12. RH358配置电子邮件传输--配置仅发送电子邮件服务
  13. xp重启计算机的快捷键,xp电脑关机重启快捷键是什么
  14. 导数、偏导数、梯度、方向导数、梯度下降、二阶导数、二阶方向导数
  15. 苹果待处理订单要多久_一个订单管理系统帮你轻松应对复杂的生产订单管理
  16. 从Dijkstra谈帅才的洞察力(王选)
  17. 栈的压入、弹出序列(Java)
  18. 芝诺悖论------芝诺的乌龟
  19. hexo添加valine评论系统 (yilia主题)
  20. Python综合实战-股票数据分析处理(查询接口)

热门文章

  1. 现在投资区块链还来得及吗?一个因素决定IPFS的颠覆价值
  2. 如何用html布天猫页面,天猫前端系列教材 (四十七)- 其他页面 - 登录页面
  3. 这可能是Python里最强的绘制地图神器
  4. 黑科技之机器人外骨骼
  5. Key Fact as Pivot: A Two-Stage Model for Low Resource Table-to-Text Generation 论文翻译
  6. python调用百度地图api定位_python 调用百度地图地点检索webAPI
  7. 支持DISTINCT的通用分页存储过程(SQL2005)
  8. 新华社 | 郭为:IT构架创新助力中国金融科技创新之路
  9. Flutter三天学会之后模仿美团界面
  10. typeScript学习(九)、function_type_参数限制_返回值类型