项目背景:

最近在研究基金,想找一些基金能和自己看中的股票能够匹配起来,发现工作量不小,需要去看每只股票的基金持仓情况,然后再去比较筛选,很花时间。于是想是否能利用Python来爬取股票的基金数据,然后自动进行比较和筛选,最后将所选股票的共同持有基金输出到Excel表格里。这就是项目背景,开发难度并不大,主要还是要找到正确的方式抓到想要的数据,下面简单介绍一下过程。

实现效果:

输入股票名称后,程序自动收集数据进行比较,并输出结果。

如下面共有19只基金都持有贵州茅台,中国平安,招商银行和宁德时代4只股票

一些更详细的数据输出到“基金筛选器.xlsx”这个表格中,比如列出每只股票在基金中占的净值比例,这个是我们选择基金的重要参考指标。

如下图:

另外每只股票的基金持仓情况也有单独的一张表来展示,这些就是网上爬取的原始数据:

项目主要代码解析:

  1. 通过requests获取网页内容

import requests,
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36"}
stockCode = name2code(stocks[i])
if stockCode == '':print("未找到股票<", stocks[i], ">,请确认股票名称!")for i in range(0, stockNum):url = 'https://vip.stock.finance.sina.com.cn/corp/go.php/vCI_FundStockHolder/stockid/{}.phtml'.format(stockCode)res = requests.get(url, headers=headers)html = res.text
  1. 通过BeautifulSoup分析并提取网页内容,将需要的数据据录入到Excel文件中

from openpyxl import Workbook
from bs4 import BeautifulSoup as bs    wb = Workbook()if i == 0:ws = wb.activeelse:ws = wb.create_sheet("Sheet")bf = bs(html, 'lxml')table = bf.find('table', {'id': 'FundHoldSharesTable'})for row in table.findAll('tr'):for item in row.findAll('td'):cNum += 1ws.cell(rNum, cNum, item.text)
  1. 对提取出来的数据进行比较,找出共同基金,并写入Excel表格

for fund0 in fundList[0]:#轮询后面每个股票的基金池for x in range(1,stockNum):found = Falsefor fundX in fundList[x]:if fund0["name"] == fundX["name"]:found = Truebreak #找到以后跳出本次轮询,继续一下组轮询if not found:break #如果上一组轮寻没有找到,则直接跳过后面所有的轮询if found:print("为您找到以下共同基金:")print("-"*50)ws.cell(r, 1, fund0["name"])ws.cell(r, 2, int(fund0["code"]))wb.save("基金筛选器.xlsx")  

程序下载链接:

基金筛选器

相关阅读:

Python网页抓取- selenium用法及webelement对象操作实例

完全解读 OpenPyXL 设置 Excel 单元格样式

Python网页抓取和Excel操作实战-基金筛选器相关推荐

  1. 最好用的Python网页抓取工具包!

    众所周知,Python是最流行的编程语言之一,因为它简单.强大,也使它越来越流行,大家可以免费构建软件.开发Web服务.执行数据分析和可视化等等,那么在Python语言中常用的工具有哪些呢?以下是详细 ...

  2. python爬虫抓取房产_Python爬虫实战(3):安居客房产经纪人信息采集

    1, 引言 Python开源网络爬虫项目启动之初,我们就把网络爬虫分成两类:即时爬虫和收割式网络爬虫.为了使用各种应用场景,该项目的整个网络爬虫产品线包含了四类产品,如下图所示: 本实战是上图中的&q ...

  3. Python网页抓取、模拟登录

    From: http://www.cnblogs.com/bboy/archive/2010/10/29/1864537.html 用python抓取网页是非常简单的事,简单的几行代码就可以解决... ...

  4. Python网页抓取

    #coding:utf-8import urllib #导入模块 print dir(urllib) #查看urllib方法 print help(urllib.urlopen) #查看帮助文档 ur ...

  5. 网页抓取实例之wildberries电商平台数据抓取

    电商平台的数据抓取,一直是网页抓取公式的热门实战实例,之前我们通常是针对国内的电商平台进行数据抓取,昨天小编受到委托,针对一个俄罗斯电商平台wildberries做了数据抓取,抓取的主要内容是商品标题 ...

  6. 玩转Java网页抓取

    - 使用Java进行网页抓取 - 用于网页抓取的流行语言有Python.JavaScript和Node.js.PHP.Java.C#等.因为有很多选择,想要确定哪种语言最合适并不容易.每种语言都有其优 ...

  7. python爬虫怎么爬同一个网站的多页数据-如何用Python爬数据?(一)网页抓取

    如何用Python爬数据?(一)网页抓取 你期待已久的Python网络数据爬虫教程来了.本文为你演示如何从网页里找到感兴趣的链接和说明文字,抓取并存储到Excel. 需求 我在公众号后台,经常可以收到 ...

  8. python爬网站数据实例-如何用Python爬数据?(一)网页抓取

    如何用Python爬数据?(一)网页抓取 你期待已久的Python网络数据爬虫教程来了.本文为你演示如何从网页里找到感兴趣的链接和说明文字,抓取并存储到Excel. 需求 我在公众号后台,经常可以收到 ...

  9. vs用Python爬数据?(一)网页抓取

    你期待已久的Python网络数据爬虫教程来了.本文为你演示如何从网页里找到感兴趣的链接和说明文字,抓取并存储到Excel. (由于微信公众号外部链接的限制,文中的部分链接可能无法正确打开.如有需要,请 ...

最新文章

  1. verilog基础-状态机之FPGA独立按键消抖设计与验证(熟练testbench的写法)
  2. MyBatis源码-解读Executor的三个实现类之SimpleExecutor(简单执行器)
  3. Windows驱动开发学习笔记(二)—— 驱动调试内核编程基础
  4. HTML的标签、属性大整理
  5. deepinu盘制作工具_U盘引导盘制作工具Rufus 3.11.1678 正式版
  6. 2018上半年游戏行业DDoS态势报告
  7. 目标成为Photoshop的轻量级替代软件——Acorn Mac版
  8. Glide加载长图;WebView加载富文本(图片自适应屏幕大小)
  9. Xweibo与第三方站点单点登录配置
  10. SPICE电路仿真软件介绍
  11. LinuxQt打包发布
  12. android 新浪微博分享提示签名错误,Android ShareSDK 微博分享 (8995)app auth fail for appKeysignpackage 解决...
  13. 对潇潇暮雨洒江天,一番洗清秋。渐霜风凄紧,关河冷落,残照当楼。是处红衰翠减,苒苒物华休。唯有长江水,无语东流。不忍登高临远,望故乡渺邈,归思难收。叹年来踪迹,何事苦淹留?想佳人,妆楼颙望,误几回、天际
  14. GOP I帧和IDR帧
  15. Linux命名空间cgroups简介
  16. Spring SpEL表达式的使用
  17. CuteFTP 问题及 ftp 模式详解
  18. 人口只有北京的1/3,这个国家创立了全球一半的科技公司
  19. Matlab傅里叶级数展开(附结果图)
  20. 现代计算机之父—冯·诺依曼

热门文章

  1. 平安健康向4.0时代迈进,“渠道生态”找准长期增长方法论
  2. python使用happybase库操作hbase
  3. 香港中文大学(深圳)李海洲/王本友教授招收大模型方向的博士生(2023Fall/2024SpringFall),研究助理和博后
  4. Orcal导入dmp文件
  5. vue在IE和360兼容模式下无法显示问题
  6. git checkout切换分支报you need to resolve your current index first错解决
  7. html中数组的定义,javascript中数组定义的几种方式是什么?
  8. amd显卡设置 为确保兼容性,此应用程序被锁定
  9. Qt模仿QQ聊天窗口界面(三)
  10. 开源流程引擎Snaker