必威体育Betway必威体育官网
当前位置:首页 > IT技术

爬取晨星所有基金评级

时间:2019-10-24 01:44:32来源:IT技术作者:seo实验室小编阅读:87次「手机版」
 

晨星评级

Python爬取晨星基金评级

晨星评级介绍

晨星把每只具备3年以上业绩数据的基金归类,在同类基金中,基金按照“晨星风险调整后收益”指标(Morningstar Risk-Adjusted Return)由大到小进行排序:前10%被评为5星;接下来22.5%被评为4星;中间35%被评为3星;随后22.5%被评为2星;最后10%被评为1星。

在这里插入图片描述

目标网站介绍

基金评级网址:http://cn.morningstar.com/fundselect/default.aspx

指定页面的功能区比较多,本文只爬取代码、基金名称、基金分类、晨星评级(三年)、晨星评级(五年)、今年以来汇报(%)。

在这里插入图片描述

网站源码分析

该网站每页默认显示25行,只是会影响爬取效率,暂时不关注。

点击页码发现网址并没有发生变化,检查源码后发现每页的信息都保存在源码里面,所有信息都在两个类里面[‘gridItem’, ‘gridAlternateItem’],所以用selenium模拟翻页,然后用BeautifulSoup把目标信息爬下来即可。

安装并导入python包

import requests
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.common.by import By
import time
import re
import pandas as pd
import pymysql

selenium 安装比较复杂

1、pip install selenium

2、安装对应的浏览器驱动,我安装的是chromedriver.exe

3、试用打开网站

html = 'http://cn.morningstar.com/fundselect/default.aspx'
browser = webdriver.Chrome('C:/Users/user/anaconda3/driver/chromedriver.exe')
browser.get(html)

爬取信息


#定义起始页码
page_num = 1

#连接数据库
connect  = pymysql.connect(host = '127.0.0.1', user = 'root', password = 'admin', db = 'stock', charset = 'utf8')
cursor = connect.cursor()

#爬取共306页
while page_num <= 306:
    #列表用于存放爬取的数据
    code_list = []	#基金代码
    name_list = []	#基金名称
    fund_cat = []	#基金分类
    fund_eval_3 = []	#晨星评级(三年)
    fund_eval_5 = []	#晨星评级(五年)
    return_curr_y = []	#今年以来汇报(%)
    #获取每页的源代码
    data = browser.page_source
    #如果网页没加载完成,则再等待60秒
    if data == None:
        time.sleep(60)
        data = browser.page_source
    #利用BeautifulSoup解析网页源代码
    bs = BeautifulSoup(data, 'lxml')
    class_list = ['gridItem', 'gridAlternateItem']      #数据在这两个类下面
    
    #取出所有类的信息,并保存到对应的列表里
    for i in range(len(class_list)):
        for tr in bs.find_all('tr', {'class': class_list[i]}):

            tds_text = tr.find_all('td', {'class': "msDataText"})
            tds_nume = tr.find_all('td', {'class': "msDataNumeric"})
            code_list.APPend(tds_text[0].find_all('a')[0].string)
            name_list.append(tds_text[1].find_all('a')[0].string)
            fund_cat.append(tds_text[2].string)
            fund_eval_3.append(re.search('\d', tds_text[3].find_all('img')[0]['src']).group())
            fund_eval_5.append(re.search('\d', tds_text[4].find_all('img')[0]['src']).group())
            return_curr_y.append(tds_nume[3].string)
    
    #插入数据到数据库
    fund_df = pd.DataFrame({'fund_code': code_list, 'fund_name': name_list, 'fund_cat': fund_cat, 'fund_lvl_3':fund_eval_3, 'fund_lvl_5': fund_eval_5, 'return_y_pct': return_curr_y})
    sql_insert = "insert into fund_morningstar_lvl(`fund_code`, `fund_name`, `fund_cat`, `fund_lvl_3`, `fund_lvl_5`, `return_y_pct`) values(%s, %s, %s, %s, %s, %s)"
    fund_list = fund_df.values.tolist()
    cursor.executemany(sql_insert, fund_list)
    connect.commit()

    ##找到换页按钮然后点击
    next_page = browser.find_element_by_link_text('>')
    next_page.click()
    page_num += 1
    time.sleep(5)
    
connect.close()

爬取结果

共爬取结果7627条,拿到数据就可以去挑选自己喜欢的基金啦~

在这里插入图片描述

如有问题可以关注博主公众号"国韭计算器"

在这里插入图片描述

文章最后发布于: 2018-10-31 18:19:45

相关阅读

淘宝卖家怎么取消7天无理由退换货?为什么强制7天无理由

很多卖家都会问我这个问题:淘宝卖家怎么取消7天无理由退换货?为什么强制7天无理由?事实上,淘宝卖家在2015年时已经无法取消七天无理

爬虫入门系列(四):HTML文本解析库BeautifulSoup

本文来自微信公众号Python之禅(VTalk),作者刘志军,已获作者授权,请勿二次转载!系列文章的第3篇介绍了网络请求库神器 Requests ,请求把

万字干货!核心用户获取和运营策略(内含小红书、在行案例

导读:本文是继《从零开始做内容运营》后写的第二篇万字长文,它围绕核心用户运营话题,讲述产品获取核心用户的7个路径以及4类用户运营

从金融牌照,看互联网巨头的金融布局(二):基金销售牌照与基

前一篇文章《从金融牌照,看互联网巨头的金融布局(三方支付牌照)》介绍了三方支付牌照的重要意义和作用。互联网巨头涉足支付领域不仅

B端产品竞品分析:如何用低成本方法获取更多信息?

与C端产品竞品分析相比,B端产品做竞品分析有哪些注意点?与C端产品竞品分析相比,我们在做B端产品竞品分析时有数据来源有限、公开信息

分享到:

栏目导航

推荐阅读

热门阅读