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.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 单元格样式


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部