目录
导言
不要买手机APP推荐的基金,之前就是这样买债基,差点踩了大雷,亏掉20%,还好是房子装修要钱,提前取了出来,纯属靠运气躲过。总共两家公司的两只纯债基,都是手机APP推荐给我的,如果我不及时撤退,那真是太惨了。也尽量不要买封闭债基,特别是18个月以上的,如果踩雷,都赎回不了,只能眼睁睁的看着被烧成灰,世间最大的痛苦莫过如此。芒格说过,如果厨房发现一只蟑螂,那么绝对不止一只。如果一家基金公司纯债踩雷,那么说明这家公司纯债水平很差,不要碰这家公司的任何产品,最起码也不要碰债基产品,并把公司打入黑名单。
Python金融
学了点Python,加上又有点小钱,投资是必要的。之前投主动基金,交了一万五的学费,我算是毕业了,不想再交学费。银行利率和货基实在是收益太低,就琢磨搞点债基玩玩,正好Python适合大数据分析,帮我排排雷。如果尽量排除各种风险,那么赚钱的几率就更高,只想着赚钱,忘掉风险,最后都会亏成狗!
数据采集
基金的数据量并不是很大,就不需要API接口了,也不需要爬虫,直接用selenium模拟人操作即可。为了一次性显示全面,就用selenium模拟鼠标滚轮滚到底,好一次性采集所有债基的数据,然后根据ID来获取表格内容,最后来点字符串修正,好让最后的CSV活成自己想要的样子。
源代码
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.options import Options
import datetime, time
import csv
systime= datetime.datetime.now()
today= datetime.datetime.strftime(systime,'%Y-%m-%d')
# 创建Chrome的Options对象
chrome_options = Options()
# 设置为无头模式
chrome_options.add_argument('--headless')
# 创建Chrome浏览器驱动实例,传入配置好的Options
driver = webdriver.Chrome(options=chrome_options)
# 导航到目标网页
driver.get('基金网站网址')
# 初始滚动高度
last_height = driver.execute_script("return document.body.scrollHeight")
while True:
# 滚动页面
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# 等待一段时间让页面加载新内容
time.sleep(0.2) # 根据实际情况调整等待时间
# 获取新的滚动高度
new_height = driver.execute_script("return document.body.scrollHeight")
# 如果新的滚动高度与上一次相同,则认为已到达页面底部或没有更多内容可加载
if new_height == last_height:
break
# 更新滚动高度,用于下一次循环比较
last_height = new_height
# 获取div元素中的文本内容
div_element = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, 'tableMain')))
sFile = div_element.text.replace('购买','').replace('自选','').replace('对比','').replace('今年以来','今年以来 近一月').replace('\n\n','')
print('开始写入数据')
filename = rf"E:\AnyuanCoporation\BondsInfo_{today}.csv"
with open(filename, mode='w',newline='') as csvfile:
writer = csv.writer(csvfile, quoting=csv.QUOTE_MINIMAL)
for line in sFile.split('\n'):
writer.writerow(line.split())
# 关闭浏览器窗口
driver.quit()
print('写入完毕')
采集基金数据效果
最后取到的csv文件格式如下,主要目的是用Python,设计到具体基金信息打码掉,o(* ̄︶ ̄*)o