版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
任务四Python网页文本数据库爬取金融数据知识目标1.掌握网页文本数据库爬取数据的方法2.了解excel写入代理writer的使用方法技能目标能够python爬取所需要的金融数据。学习目标目
录CONTENTS任务要求1必备知识任务实施2任务升级任务实施3练习任务41
任务要求 任务要求如何利用python,获取中国银行外汇牌价数据,并保存在本地?2
必备知识 打开网页1获取数据2保存数据3Python爬取数据的基本思路一1打开网页在pandas库中,DataFrame这个对象有一个方法,叫做read_html()。顾名思义,就是读取网页里的表格数据。#加载库包importpandasaspd#打开网页并读取网页中的表格df=pd.read_html('/sourcedb/whpj/index_1.html')print(df)打开网页1输出结果:[01...670起始时间:NaN...NaN【关于远离违法违规外汇交易的风险提示】[1rowsx8columns],货币名称现汇买入价现钞买入价...中行折算价发布日期发布时间0阿联酋迪拉姆NaN179.1200...185.32002022.08.2010:30:0010:30:001阿联酋迪拉姆NaN179.1200...185.32002022.08.2010:30:0010:30:002澳大利亚元467.2700452.7500...470.58002022.08.2010:30:0010:30:003澳大利亚元467.2700452.7500...470.58002022.08.2010:30:0010:30:004巴西里亚尔NaN126.6200...131.37002022.08.2010:30:0010:30:005巴西里亚尔NaN126.6200...131.37002022.08.2010:30:0010:30:006加拿大元522.9000506.3900...525.65002022.08.2010:30:0010:30:007加拿大元522.9000506.3900...525.65002022.08.2010:30:0010:30:008瑞士法郎708.6800686.8100...711.38002022.08.2010:30:0010:30:009瑞士法郎708.6800686.8100...711.38002022.08.2010:30:0010:30:0010丹麦克朗91.680088.8500...92.34002022.08.2010:30:0010:30:0011丹麦克朗91.680088.8500...92.34002022.08.2010:30:0010:30:0012欧元682.3500661.1500...686.63002022.08.2010:30:0010:30:0013欧元682.3500661.1500...686.63002022.08.2010:30:0010:30:0014英镑803.5900778.6200...812.15002022.08.2010:30:0010:30:0015英镑803.5900778.6200...812.15002022.08.2010:30:0010:30:0016港币86.720086.0300...86.77002022.08.2010:30:0010:30:0017港币86.720086.0300...86.77002022.08.2010:30:0010:30:0018印尼卢比0.04580.0444...0.04582022.08.2010:30:0010:30:0019印尼卢比0.04580.0444...0.04582022.08.2010:30:0010:30:0020印度卢比NaN8.0187...8.51302022.08.2010:30:0010:30:0021印度卢比NaN8.0187...8.51302022.08.2010:30:0010:30:0022日元4.96404.8097...5.01022022.08.2010:30:0010:30:0023日元4.96404.8097...5.01022022.08.2010:30:0010:30:0024韩国元0.50840.4905...0.51322022.08.2010:30:0010:30:0025韩国元0.50840.4905...0.51322022.08.2010:30:0010:30:0026澳门元84.290081.4700...84.07002022.08.2010:30:0010:30:00[27rowsx8columns],00中国银行外汇牌价网页声明:1.本汇率表单位为100外币换算人民币,仅供参考,客户办理结/购...,00<!--createBottom();//-->]不是DataFrame!获取数据2输出结果:货币名称现汇买入价现钞买入价...中行折算价发布日期发布时间0阿联酋迪拉姆NaN179.1200...185.32002022.08.2010:30:0010:30:001阿联酋迪拉姆NaN179.1200...185.32002022.08.2010:30:0010:30:002澳大利亚元467.2700452.7500...470.58002022.08.2010:30:0010:30:003澳大利亚元467.2700452.7500...470.58002022.08.2010:30:0010:30:004巴西里亚尔NaN126.6200...131.37002022.08.2010:30:0010:30:005巴西里亚尔NaN126.6200...131.37002022.08.2010:30:0010:30:006加拿大元522.9000506.3900...525.65002022.08.2010:30:0010:30:007加拿大元522.9000506.3900...525.65002022.08.2010:30:0010:30:008瑞士法郎708.6800686.8100...711.38002022.08.2010:30:0010:30:009瑞士法郎708.6800686.8100...711.38002022.08.2010:30:0010:30:0010丹麦克朗91.680088.8500...92.34002022.08.2010:30:0010:30:0011丹麦克朗91.680088.8500...92.34002022.08.2010:30:0010:30:0012欧元682.3500661.1500...686.63002022.08.2010:30:0010:30:0013欧元682.3500661.1500...686.63002022.08.2010:30:0010:30:0014英镑803.5900778.6200...812.15002022.08.2010:30:0010:30:0015英镑803.5900778.6200...812.15002022.08.2010:30:0010:30:0016港币86.720086.0300...86.77002022.08.2010:30:0010:30:0017港币86.720086.0300...86.77002022.08.2010:30:0010:30:0018印尼卢比0.04580.0444...0.04582022.08.2010:30:0010:30:0019印尼卢比0.04580.0444...0.04582022.08.2010:30:0010:30:0020印度卢比NaN8.0187...8.51302022.08.2010:30:0010:30:0021印度卢比NaN8.0187...8.51302022.08.2010:30:0010:30:0022日元4.96404.8097...5.01022022.08.2010:30:0010:30:0023日元4.96404.8097...5.01022022.08.2010:30:0010:30:0024韩国元0.50840.4905...0.51322022.08.2010:30:0010:30:0025韩国元0.50840.4905...0.51322022.08.2010:30:0010:30:0026澳门元84.290081.4700...84.07002022.08.2010:30:0010:30:00[27rowsx8columns]#将列表的第二个元素打印到屏幕上print(df[1])保存数据3#使用DataFrame.to_excel()方法,将数据保存到电脑中df[1].to_excel('路径/汇率.xlsx')Soeasy!那我是不是可以贪心一点,多爬一些数据呢?我看到网页下面显示共10页,我都想要!怎么办呢?3
任务升级
任务要求请利用python爬取中国银行外汇牌价的前5页数据,并保存在电脑上。子任务1:将这前5页数据存入”汇率1.xlsx”的一个sheet中。子任务2:将这前5页数据分别存入“汇率2.xlsx的5个sheet中,每个sheet命名为第1页,第2页…..第5页。子任务1#加载库包importpandasaspd#创建一个空的数据框,用于存储汇率数据df=pd.DataFrame()#打开网页并读取网页中的表格##由于要获取5页数据,需使用for循环遍历url网页foriinrange(1,6):#利用f字符,将代表网页页码的变量i引入url中,实现每次循环的遍历,i=1时,代表第2页,i=2时,代表第3页,依次类推。url=f'/sourcedb/whpj/index_{i}.html'#利用read.html()函数获取网址url的表格数据d_i=pd.read_html(url)
一将这前5页数据存入”汇率1.xlsx”的一个sheet中。任务分析:要将5页数据存入同一个sheet中,参考任务3的操作,利用for循环,将爬取的数据装入一个空DataFrame,存入“汇率1.xlsx”中。1.打开网页,获取数据子任务1一与网页源代码内容一致!在网页空白区域,点击鼠标右键——查看源代码!将这前5页数据存入”汇率1.xlsx”的一个sheet中。任务分析:要将5页数据存入同一个sheet中,参考任务3的操作,利用for循环,将爬取的数据装入一个空DataFrame,存入“汇率1.xlsx”中。2.将5页数据合并到一个DataFrame中#使用concat函数将5个网页中的表格合并在一起。注意:concat函数的参数是数组或DataFrame,待合并的参数要用[]括起来
df=pd.concat([df,d_i[1]])print(df)输出结果:货币名称现汇买入价现钞买入价...中行折算价发布日期发布时间0阿联酋迪拉姆NaN179.12...185.322022.08.2010:30:0010:30:001阿联酋迪拉姆NaN179.12...185.322022.08.2010:30:0010:30:002澳大利亚元467.27452.75...470.582022.08.2010:30:0010:30:003澳大利亚元467.27452.75...470.582022.08.2010:30:0010:30:004巴西里亚尔NaN126.62...131.372022.08.2010:30:0010:30:00.......................22泰国铢18.9918.41...19.082022.08.2005:30:0005:30:0023土耳其里拉37.5135.67...37.652022.08.2005:30:0005:30:0024新台币NaN21.85...22.602022.08.2005:30:0005:30:0025美元680.52674.98...680.652022.08.2005:30:0005:30:0026南非兰特39.9636.90...40.352022.08.2005:30:0005:30:00[135rowsx8columns]url网页中,每一页的表格有27行,5页一共135行子任务1一与网页源代码内容一致!在网页空白区域,点击鼠标右键——查看源代码!将这前5页数据存入”汇率1.xlsx”的一个sheet中。任务分析:要将5页数据存入同一个sheet中,参考任务3的操作,利用for循环,将爬取的数据装入一个空DataFrame,存入“汇率1.xlsx”中。3.将df存入电脑“汇率1.xlsx”中#使用df.to_excel()将DataFrame存入excel
df.to_excel('路径/名称.xlsx')子任务2二将这前5页数据分别存入“汇率2.xlsx的5个sheet中,每个sheet命名为第1页,第2页…..第5页。ExcelWriter:是pandas提供的一个专门向Excel里写数据的对象,通俗点说,它就是一个Excel代理人。若需要向Excel文件写数据,只需把数据交给这个代理人,这个代理人就会替我们把数据写入到这个Excel工作簿里。任务分析:要将5页数据存入excel工作簿的5个sheet中,不能继续简单使用df.to_excel(),因为每次调用to_excel()会完全覆盖掉原来excel中的数据。分次向excel中存数据,需引入ExcelWriter对象。writer=ExcelWriter('路径/汇率2.xlsx',mode='a',engine='openpyxl')创建writer代理人,专门负责‘路径’下“汇率2”这个excel工作簿mode:写入模式‘a’:append,添加数据,不改变excel工作簿中原来的数据‘w’:完全覆盖掉以前的数据,把以前的数据扔掉,重新写指定用哪个excel模块去执行这个excel写入工作。子任务2二将这前5页数据分别存入“汇率2.xlsx的5个sheet中,每个sheet命名为第1页,第2页…..第5页。执行任务:#加载库包importpandasaspd#创建一个空的数据框,用于存储汇率数据df=pd.DataFrame()#创建writerwriter=pd.ExcelWriter('路径/汇率2.xlsx',mode='a',engine='openpyxl')#打开网页并读取网页中的表格##由于要获取5页数据,需使用for循环遍历url网页foriinrange(1,6):#利用f字符,将代表网页页码的变量i引入url中,实现每次循环的遍历,i=1时,代表第2页,i=2时,代表第3页,依次类推。url=f'/sourcedb/whpj/index_{i}.html'1.加载库包,创建空DataFrame,创建writer写入代理人,打开网页子任务2二将这前5页数据分别存入“汇率2.xlsx的5个sheet中,每个sheet命名为第1页,第2页…..第5页。任务分析:要将5页数据存入excel工作簿的5个sheet中,不能继续简单使用df.to_excel(),因为每次调用to_excel()会完全覆盖掉原来excel中的数据。分次向excel中存数据,需引入ExcelWriter对象。#利用read.html()函数获取网址url的表格数据d_i=pd.read_html(url)d_i[1].to_excel(writer,sheet_name=f'第{i}页')#使用writer代理人执行写入操作后,一定要执行save()和close两个操作,否则writer不会被执行writer.save()writer.close()
2.获取数据,并将数据存入excel4
练习任务
请使用python网页文本数据库爬取网易财经新股数据(url:/data/ipo/shengou.html)的前10页数据,并将抓取的数据保存到excel中。练习任务1:将这前10页数据存入“新股数据1.xlsx”的一个sheet中。练习任务2:将这前10页数据分别存入“新股数据2.xlsx的10个sheet中,每个sheet命名为第1页,第2页…..第10页。任务实施练习任务1#加载库包importpandasaspd#创建一个空的数据框,用于存储汇率数据df=pd.DataFrame()#打开网页并读取网页中的表格##由于要获取5页数据,需使用for循环遍历url网页foriinrange(
):#利用f字符,将代表网页页码的变量i引入url中,实现每次循环的遍历,i=1时,代表第2页,i=2时,代表第3页,依次类推。url=f’
’#利用read.html()函数获取网址url的表格数据d_i=pd.read_html(url)
df=pd.concat(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 1秋天(说课稿)-2024-2025学年统编版(2024)语文一年级上册
- 2024年绿色建筑评估与改进服务合同
- 2024校企合作电商企业实习实训基地协议3篇
- 18 《囊萤夜读》(说课稿)2023-2024学年统编版语文四年级下册
- 2024版专项宣传材料采购协议模板版B版
- 企业员工安全生产教育培训
- 福建省南平市五夫中学高三地理上学期期末试卷含解析
- 福建省南平市渭田中学2021年高二语文下学期期末试卷含解析
- 2024年高端木器定制加工劳务分包合同模板3篇
- 2024年跨境电商配送条款3篇
- 公路桥梁工程施工安全风险评估指南
- 2024-2030年全球及中国通过硅通孔(TSV)技术行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告
- PEP新人教版小学英语单词三到五年级
- 拆除猪场补偿协议书模板
- 2024年秋季学期新Join In剑桥版(三年级起)英语三年级上册课件 Supplementary activities Unit 6
- 2024年新人教版道德与法治七年级上册全册教案(新版教材)
- 2024年高中生物新教材同步选择性必修第三册学习笔记第3章 本章知识网络
- 初中物理期末复习+专题5+综合能力题+课件++人教版物理九年级全一册
- 《创伤失血性休克中国急诊专家共识(2023)》解读课件
- 2024年国开电大 统计学原理 形成性考核册答案
- 药物流行病学教学大纲
评论
0/150
提交评论