17.爬取天天基金中万家精选混合A (519185)的净值数据

 1 # 爬虫
 2 # 该项目是爬取天天基金网某只基金的净值数据
 3 
 4 # 1.引入包
 5 # 网络请求
 6 import json
 7 
 8 import requests
 9 # 正则
10 import re
11 # 数据分析工具
12 import pandas as pd
13 
14 # 定义一个空的列表,存放每一页的数据
15 df_list = []
16 # for循环用来获取不同页码的数据,这里循环10次
17 for index in range(1, 10):
18     # 2.请求的url地址或者接口,页面数使用花括号占位
19     url = "http://api.fund.eastmoney.com/f10/lsjz?callback=jQuery18306600264369919882_1675428357095&fundCode=519185&pageIndex={}&pageSize=20&startDate=&endDate=&_=1675428744359".format(index)
20 
21     # 3.请求所需要的请求头内容
22     headers = {
23         "Host":"api.fund.eastmoney.com",
24         # 防盗链   确定访问来路是否非法
25         "Referer":"http://fundf10.eastmoney.com/",
26         # 身份验证,模拟浏览器发出
27         "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36 Edg/108.0.1462.76"
28     }
29 
30     # 4.发送请求
31     resp = requests.get(url, headers=headers)
32 
33     # 5.打印获取的数据
34     data = resp.text
35     print(data)
36 
37 
38     # 6.通过正则表达式获取只想要的数据
39     data = re.findall("\((.*?)\)", data)
40     print(data)
41 
42     # 7.将数据转换成json格式
43     data = json.loads(data[0])["Data"]["LSJZList"]
44     print(data)
45 
46     # 8.使用pandas格式化数据
47     df = pd.DataFrame(data)
48     # print(df)
49 
50     # 9.将每一页数据添加到列表中
51     df_list.append(df)
52 
53 # 10.打印列表中的所有数据
54 # print(df_list)
55 
56 # 11.合并列表中的数据
57 df_data = pd.concat(df_list)
58 print(df_data)
59 
60 # 12.将数据保存到csv中,行号不保存
61 df_data.to_csv("万家精选混合A (519185).csv",index=False)

csv保存后的样子:

 

posted @ 2023-02-03 22:48  种太阳  阅读(124)  评论(0编辑  收藏  举报