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

项目背景:

最近在研究基金,想找一些基金能和自己看中的股票能够匹配起来,发现工作量不小,需要去看每只股票的基金持仓情况,然后再去比较筛选,很花时间。于是想是否能利用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.active
        else:
            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 += 1
            ws.cell(rNum, cNum, item.text)
  1. 对提取出来的数据进行比较,找出共同基金,并写入Excel表格

for fund0 in fundList[0]:
    #轮询后面每个股票的基金池
    for x in range(1,stockNum):
        found = False
        for fundX in fundList[x]:
            if fund0["name"] == fundX["name"]:
                found = True
                break #找到以后跳出本次轮询,继续一下组轮询
        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 单元格样式

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穿越光年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值