如何禁止某ip访问网站,网站网站建设设计,外网IP访问wordpress,wordpress内部服务器错误500声明: 本案例仅供学习参考使用#xff0c;任何不法的活动均与本作者无关
网站:天天基金网(1234567.com.cn) --首批独立基金销售机构-- 东方财富网旗下基金平台!
本案例所需要的模块: 1.requests 2.re(内置) 3.pandas 4.pyecharts 其他均需要 pip install 模块名 爬取步骤:
…声明: 本案例仅供学习参考使用任何不法的活动均与本作者无关
网站:天天基金网(1234567.com.cn) --首批独立基金销售机构-- 东方财富网旗下基金平台!
本案例所需要的模块: 1.requests 2.re(内置) 3.pandas 4.pyecharts 其他均需要 pip install 模块名 爬取步骤:
一.请求数据 模拟浏览器向服务器发送请求 F12 打开开发者模式 点击网络 搜索我们需要的数据 找到正确的接口
老样子 使用工具能够使我们节约时间 方便快捷但前提能够自己写就没问题 新建本地py文件复制过去 运行之后就可以看到与浏览器预览中一样的数据 接着我们需要对请求到的数据进行处理 这里我们使用正则是最好的 匹配所需的内容 即()里的
text re.findall(rdatas:[(.*?)],response.text)二.提取数据 提取所需要的内容
然后我们观察放回的数据 把每条数据都提取出来 此时我们想该使用什么 去提取我们的数据呢 split字符串分割 or 正则 都不使用 此时选择eval函数去除引号 是最佳的选择
处理完之后就是一个个的元组 之后我们可以遍历元组保存数据
接着就是多页数据的采集 通过观察每一页的URL可知 pi参数控制着我们的页码 嵌套个for循坏 实现 翻页的操作 三.保存数据 保存数据到本地
_**因为这样保存的数据连个标头都没有 因此我们对照网站将表头写入
根据我们所拿取的数据对照 麻烦的话直接复制我的代码**_
# 保存的格式为utf-8-sig 单是utf-8的话会有乱码 看不懂 思密达with open(基金.csv, a, encodingutf-8-sig, newline
) as f:f.write(基金代码,基金简称,English,日期,基金净值,基金累计净值,日增长率,基金近1周,基金近1月,基金近3月,基金近6月,基金近1年,基金近2年,基金近3年,今年来,成立来,False,False,False,False,手续费,False,False,False,False,False)后面发现需要进一步的处理csv文件里的数据 我就随便给个表头写入 后续通过pandas 提取所需要的列形成新的表格 以下是本案例的源代码 供大家交流使用
import requests
import re
import csvwith open(基金.csv, a, encodingutf-8-sig, newline
) as f:f.write(基金代码,基金简称,English,日期,基金净值,基金累计净值,日增长率,基金近1周,基金近1月,基金近3月,基金近6月,基金近1年,基金近2年,基金近3年,今年来,成立来,False,False,False,False,手续费,False,False,False,False,False)
headers {Accept: */*,Accept-Language: zh-CN,zh;q0.9,en;q0.8,en-GB;q0.7,en-US;q0.6,Cache-Control: no-cache,Connection: keep-alive,Pragma: no-cache,Referer: https://fund.eastmoney.com/data/fundranking.html,Sec-Fetch-Dest: script,Sec-Fetch-Mode: no-cors,Sec-Fetch-Site: same-origin,User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0,sec-ch-ua: Microsoft Edge;v131, Chromium;v131, Not_A Brand;v24,sec-ch-ua-mobile: ?0,sec-ch-ua-platform: Windows
}
cookies {ASP.NET_SessionId: 2n3frbs0qlvk51gumxde43jz,st_si: 03571815072389,st_pvi: 42679690302429,st_sp: 2025-01-05%2020%3A21%3A57,st_inirUrl: https%3A%2F%2Ffund.eastmoney.com%2Fdata%2F,st_sn: 1,st_psi: 20250105202156911-112200312936-7115758265,st_asi: delete
}
url https://fund.eastmoney.com/data/rankhandler.aspx
for page in range(1,20):params {op: ph,dt: kf,ft: all,rs: ,gs: 0,sc: 1nzf,st: desc,sd: 2024-01-05,ed: 2025-01-05,qdii: ,tabSubtype: ,,,,,,pi: page,pn: 50,dx: 1,v: 0.7427594655500473}response requests.get(url, headersheaders, cookiescookies, paramsparams)text re.findall(rdatas:[(.*?)], response.text)[0]tuple_data eval(text)for tup in tuple_data:with open(基金.csv, a, encodingutf-8-sig, newline
) as f:f.write(tup)f.write(
)数据清洗模块
准备步骤: 下载pandas模块 pip install pandas
此时可以新建一个py文件 方便我们清洗数据
# 第一步导包
import pandas as pd# 读取文件
df pd.read_csv(基金.csv)
# 获取该文件中所有的列名print(df.columns)将我们所需要的复制下来 形成一个新的文件
import pandas as pddf pd.read_csv(基金.csv)
# 语法df[[基金代码, 基金简称, English, 日期, 基金净值, 基金累计净值, 日增长率, 基金近1周,
基金近1月, 基金近3月, 基金近6月, 基金近1年, 基金近2年, 基金近3年, 今年来, 成立来,手续费]].to_csv(基金_New.csv, indexFalse,encodingutf-8-sig)print(df.columns)现在就看着舒服多了 Explain: 如下图所示的列名中的数字0保存到csv文件中会消失 但在pycharm中可以正常显示 数据可视化模块
# 导包
# 需要下载pyecharts
import pandas as pd
from pyecharts.charts import Line
from pyecharts.options import LabelOpts
from pyecharts import options as optsdf pd.read_csv(基金_New.csv)
# 将每一列的数据转换成列表 因为下面的表格数据需要list类型的
name df[基金简称].tolist()
value df[基金净值].tolist()
value_2 df[基金累计净值].tolist()
value_3 df[基金近1周].tolist()
# 折线图的生成
line (Line()# 生成x y轴的值.add_xaxis(name).add_yaxis(基金净值, value, markpoint_optsopts.MarkPointOpts(# 只显示数据中的最小值和最大值data[opts.MarkPointItem(type_max, name最大值),opts.MarkPointItem(type_min, name最小值)])).add_yaxis(基金累计净值,value_2,markpoint_optsopts.MarkPointOpts(data[opts.MarkPointItem(type_max, name最大值),opts.MarkPointItem(type_min, name最小值)])).add_yaxis(基金近1周,value_3,markpoint_optsopts.MarkPointOpts(data[opts.MarkPointItem(type_max, name最大值),opts.MarkPointItem(type_min, name最小值)]))# 将数值不显示出来 这样美观些.set_series_opts(label_optsopts.LabelOpts(is_showFalse))).render(found.html)
# 最后生成html文件