You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

68 lines
2.8 KiB
Markdown

# 晨星基金数据爬取
### 前言
晨星网,国际权威评级机构 Morningstar 的中国官方网站,所以它的基金评级是很有参考性的。
### 数据爬取
#### 1.晨星列表数据
> 爬取晨星网筛选列表,包括基金代码,基金专属代码,基金分类,三年评级,五年评级这些维度等,有了这些基本数据,为了爬取基金详情页,基金筛选等铺好数据基础。
列表爬取数据截图:
<img src="./screenshot/fund_list.png" style="zoom:50%;" />
#### 2. 晨星基金详情页数据--不变数据
> 爬取基金详情页的数据, 根据`晨星列表数据` 数据,遍历爬取单支基金的详情页数据(包括名称,代码,分类,成立时间,基金公司)等维度,后续还有根据这些数据爬取基金的持仓信息,为后面筛选股票做好进一步铺垫
<img src="./screenshot/fund_base.png" style="zoom:50%;" />
#### 3. 晨星基金详情页数据--季度变动数据
> 爬取基金详情页的数据, 根据第二部分`晨星基础数据` 数据,过滤掉货币,纯债基金,爬取单支基金的详情页数据(包括总资产,投资风格,各种风险信息,评级,股票,债券持仓比例等)等维度
<img src="./screenshot/fund_season.png" style="zoom:50%;" />
#### 4. 晨星基金详情页数据--十大持仓股票信息
> 爬取基金详情页的数据, 根据第二部分`晨星基础数据` 数据,过滤掉没有持有股票的基金,爬取单支基金的十大持仓股票信息(包括每只股票的代码,名称,占比)等维度
<img src="./screenshot/fund_stock.png" style="zoom:50%;" />
#### 5. 晨星基金经理
> 爬取基金详情页的数据,据此爬取基金经理数据
<img src="./screenshot/fund_manager.png" style="zoom:50%;" />
### 技术点
- `selenium` 模拟登录, 切换分页
- `BeautifulSoup` 解析 HTML
- `pandas` 处理数据
- 工具 — 数据库用了`pymysql` , id 使用雪花 id验证码识别使用了`pytesseract`
- 多线程爬取
### 爬虫流程
1. `selenium` 模拟登录:
- 可采用验证码识别方式
- 设置已经登录好的账号 cookies
2. 利用`BeautifulSoup` 解析 html提取当前页的基金列表信息存入到 mysql 中,或者追加到 csv 中
3. `selenium` 模拟切换分页,重复第二,第三步
4. 所有的页数据爬取完,退出浏览器
### 其他
涉及到一些细节有:
1. 验证码识别错误的话,怎么处理
2. 切换分页如果是最后一页时,怎么处理下一页点击
3. 晨星评级是用图片表示,如果转化成数字表示
4. 如何保证循环当前页与浏览器当前页一致
5. 多线程爬取时,线程锁
以上问题,我都做了相对应的处理,如果有问题的话,欢迎提 issue私聊star。