版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
任務(wù)四Python網(wǎng)頁文本數(shù)據(jù)庫爬取金融數(shù)據(jù)知識(shí)目標(biāo)1.掌握網(wǎng)頁文本數(shù)據(jù)庫爬取數(shù)據(jù)的方法2.了解excel寫入代理writer的使用方法技能目標(biāo)能夠python爬取所需要的金融數(shù)據(jù)。學(xué)習(xí)目標(biāo)目
錄CONTENTS任務(wù)要求1必備知識(shí)任務(wù)實(shí)施2任務(wù)升級(jí)任務(wù)實(shí)施3練習(xí)任務(wù)41
任務(wù)要求 任務(wù)要求如何利用python,獲取中國銀行外匯牌價(jià)數(shù)據(jù),并保存在本地?2
必備知識(shí) 打開網(wǎng)頁1獲取數(shù)據(jù)2保存數(shù)據(jù)3Python爬取數(shù)據(jù)的基本思路一1打開網(wǎng)頁在pandas庫中,DataFrame這個(gè)對(duì)象有一個(gè)方法,叫做read_html()。顧名思義,就是讀取網(wǎng)頁里的表格數(shù)據(jù)。#加載庫包importpandasaspd#打開網(wǎng)頁并讀取網(wǎng)頁中的表格df=pd.read_html('/sourcedb/whpj/index_1.html')print(df)打開網(wǎng)頁1輸出結(jié)果:[01...670起始時(shí)間:NaN...NaN【關(guān)于遠(yuǎn)離違法違規(guī)外匯交易的風(fēng)險(xiǎn)提示】[1rowsx8columns],貨幣名稱現(xiàn)匯買入價(jià)現(xiàn)鈔買入價(jià)...中行折算價(jià)發(fā)布日期發(fā)布時(shí)間0阿聯(lián)酋迪拉姆NaN179.1200...185.32002022.08.2010:30:0010:30:001阿聯(lián)酋迪拉姆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中國銀行外匯牌價(jià)網(wǎng)頁聲明:1.本匯率表單位為100外幣換算人民幣,僅供參考,客戶辦理結(jié)/購...,00<!--createBottom();//-->]不是DataFrame!獲取數(shù)據(jù)2輸出結(jié)果:貨幣名稱現(xiàn)匯買入價(jià)現(xiàn)鈔買入價(jià)...中行折算價(jià)發(fā)布日期發(fā)布時(shí)間0阿聯(lián)酋迪拉姆NaN179.1200...185.32002022.08.2010:30:0010:30:001阿聯(lián)酋迪拉姆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]#將列表的第二個(gè)元素打印到屏幕上print(df[1])保存數(shù)據(jù)3#使用DataFrame.to_excel()方法,將數(shù)據(jù)保存到電腦中df[1].to_excel('路徑/匯率.xlsx')Soeasy!那我是不是可以貪心一點(diǎn),多爬一些數(shù)據(jù)呢?我看到網(wǎng)頁下面顯示共10頁,我都想要!怎么辦呢?3
任務(wù)升級(jí)
任務(wù)要求請(qǐng)利用python爬取中國銀行外匯牌價(jià)的前5頁數(shù)據(jù),并保存在電腦上。子任務(wù)1:將這前5頁數(shù)據(jù)存入”匯率1.xlsx”的一個(gè)sheet中。子任務(wù)2:將這前5頁數(shù)據(jù)分別存入“匯率2.xlsx的5個(gè)sheet中,每個(gè)sheet命名為第1頁,第2頁…..第5頁。子任務(wù)1#加載庫包importpandasaspd#創(chuàng)建一個(gè)空的數(shù)據(jù)框,用于存儲(chǔ)匯率數(shù)據(jù)df=pd.DataFrame()#打開網(wǎng)頁并讀取網(wǎng)頁中的表格##由于要獲取5頁數(shù)據(jù),需使用for循環(huán)遍歷url網(wǎng)頁foriinrange(1,6):#利用f字符,將代表網(wǎng)頁頁碼的變量i引入url中,實(shí)現(xiàn)每次循環(huán)的遍歷,i=1時(shí),代表第2頁,i=2時(shí),代表第3頁,依次類推。url=f'/sourcedb/whpj/index_{i}.html'#利用read.html()函數(shù)獲取網(wǎng)址url的表格數(shù)據(jù)d_i=pd.read_html(url)
一將這前5頁數(shù)據(jù)存入”匯率1.xlsx”的一個(gè)sheet中。任務(wù)分析:要將5頁數(shù)據(jù)存入同一個(gè)sheet中,參考任務(wù)3的操作,利用for循環(huán),將爬取的數(shù)據(jù)裝入一個(gè)空DataFrame,存入“匯率1.xlsx”中。1.打開網(wǎng)頁,獲取數(shù)據(jù)子任務(wù)1一與網(wǎng)頁源代碼內(nèi)容一致!在網(wǎng)頁空白區(qū)域,點(diǎn)擊鼠標(biāo)右鍵——查看源代碼!將這前5頁數(shù)據(jù)存入”匯率1.xlsx”的一個(gè)sheet中。任務(wù)分析:要將5頁數(shù)據(jù)存入同一個(gè)sheet中,參考任務(wù)3的操作,利用for循環(huán),將爬取的數(shù)據(jù)裝入一個(gè)空DataFrame,存入“匯率1.xlsx”中。2.將5頁數(shù)據(jù)合并到一個(gè)DataFrame中#使用concat函數(shù)將5個(gè)網(wǎng)頁中的表格合并在一起。注意:concat函數(shù)的參數(shù)是數(shù)組或DataFrame,待合并的參數(shù)要用[]括起來
df=pd.concat([df,d_i[1]])print(df)輸出結(jié)果:貨幣名稱現(xiàn)匯買入價(jià)現(xiàn)鈔買入價(jià)...中行折算價(jià)發(fā)布日期發(fā)布時(shí)間0阿聯(lián)酋迪拉姆NaN179.12...185.322022.08.2010:30:0010:30:001阿聯(lián)酋迪拉姆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新臺(tái)幣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網(wǎng)頁中,每一頁的表格有27行,5頁一共135行子任務(wù)1一與網(wǎng)頁源代碼內(nèi)容一致!在網(wǎng)頁空白區(qū)域,點(diǎn)擊鼠標(biāo)右鍵——查看源代碼!將這前5頁數(shù)據(jù)存入”匯率1.xlsx”的一個(gè)sheet中。任務(wù)分析:要將5頁數(shù)據(jù)存入同一個(gè)sheet中,參考任務(wù)3的操作,利用for循環(huán),將爬取的數(shù)據(jù)裝入一個(gè)空DataFrame,存入“匯率1.xlsx”中。3.將df存入電腦“匯率1.xlsx”中#使用df.to_excel()將DataFrame存入excel
df.to_excel('路徑/名稱.xlsx')子任務(wù)2二將這前5頁數(shù)據(jù)分別存入“匯率2.xlsx的5個(gè)sheet中,每個(gè)sheet命名為第1頁,第2頁…..第5頁。ExcelWriter:是pandas提供的一個(gè)專門向Excel里寫數(shù)據(jù)的對(duì)象,通俗點(diǎn)說,它就是一個(gè)Excel代理人。若需要向Excel文件寫數(shù)據(jù),只需把數(shù)據(jù)交給這個(gè)代理人,這個(gè)代理人就會(huì)替我們把數(shù)據(jù)寫入到這個(gè)Excel工作簿里。任務(wù)分析:要將5頁數(shù)據(jù)存入excel工作簿的5個(gè)sheet中,不能繼續(xù)簡單使用df.to_excel(),因?yàn)槊看握{(diào)用to_excel()會(huì)完全覆蓋掉原來excel中的數(shù)據(jù)。分次向excel中存數(shù)據(jù),需引入ExcelWriter對(duì)象。writer=ExcelWriter('路徑/匯率2.xlsx',mode='a',engine='openpyxl')創(chuàng)建writer代理人,專門負(fù)責(zé)‘路徑’下“匯率2”這個(gè)excel工作簿mode:寫入模式‘a(chǎn)’:append,添加數(shù)據(jù),不改變excel工作簿中原來的數(shù)據(jù)‘w’:完全覆蓋掉以前的數(shù)據(jù),把以前的數(shù)據(jù)扔掉,重新寫指定用哪個(gè)excel模塊去執(zhí)行這個(gè)excel寫入工作。子任務(wù)2二將這前5頁數(shù)據(jù)分別存入“匯率2.xlsx的5個(gè)sheet中,每個(gè)sheet命名為第1頁,第2頁…..第5頁。執(zhí)行任務(wù):#加載庫包importpandasaspd#創(chuàng)建一個(gè)空的數(shù)據(jù)框,用于存儲(chǔ)匯率數(shù)據(jù)df=pd.DataFrame()#創(chuàng)建writerwriter=pd.ExcelWriter('路徑/匯率2.xlsx',mode='a',engine='openpyxl')#打開網(wǎng)頁并讀取網(wǎng)頁中的表格##由于要獲取5頁數(shù)據(jù),需使用for循環(huán)遍歷url網(wǎng)頁foriinrange(1,6):#利用f字符,將代表網(wǎng)頁頁碼的變量i引入url中,實(shí)現(xiàn)每次循環(huán)的遍歷,i=1時(shí),代表第2頁,i=2時(shí),代表第3頁,依次類推。url=f'/sourcedb/whpj/index_{i}.html'1.加載庫包,創(chuàng)建空DataFrame,創(chuàng)建writer寫入代理人,打開網(wǎng)頁子任務(wù)2二將這前5頁數(shù)據(jù)分別存入“匯率2.xlsx的5個(gè)sheet中,每個(gè)sheet命名為第1頁,第2頁…..第5頁。任務(wù)分析:要將5頁數(shù)據(jù)存入excel工作簿的5個(gè)sheet中,不能繼續(xù)簡單使用df.to_excel(),因?yàn)槊看握{(diào)用to_excel()會(huì)完全覆蓋掉原來excel中的數(shù)據(jù)。分次向excel中存數(shù)據(jù),需引入ExcelWriter對(duì)象。#利用read.html()函數(shù)獲取網(wǎng)址url的表格數(shù)據(jù)d_i=pd.read_html(url)d_i[1].to_excel(writer,sheet_name=f'第{i}頁')#使用writer代理人執(zhí)行寫入操作后,一定要執(zhí)行save()和close兩個(gè)操作,否則writer不會(huì)被執(zhí)行writer.save()writer.close()
2.獲取數(shù)據(jù),并將數(shù)據(jù)存入excel4
練習(xí)任務(wù)
請(qǐng)使用python網(wǎng)頁文本數(shù)據(jù)庫爬取網(wǎng)易財(cái)經(jīng)新股數(shù)據(jù)(url:/data/ipo/shengou.html)的前10頁數(shù)據(jù),并將抓取的數(shù)據(jù)保存到excel中。練習(xí)任務(wù)1:將這前10頁數(shù)據(jù)存入“新股數(shù)據(jù)1.xlsx”的一個(gè)sheet中。練習(xí)任務(wù)2:將這前10頁數(shù)據(jù)分別存入“新股數(shù)據(jù)2.xlsx的10個(gè)sheet中,每個(gè)sheet命名為第1頁,第2頁…..第10頁。任務(wù)實(shí)施練習(xí)任務(wù)1#加載庫包importpandasaspd#創(chuàng)建一個(gè)空的數(shù)據(jù)框,用于存儲(chǔ)匯率數(shù)據(jù)df=pd.DataFrame()#打開網(wǎng)頁并讀取網(wǎng)頁中的表格##由于要獲取5頁數(shù)據(jù),需使用for循環(huán)遍歷url網(wǎng)頁foriinrange(
):#利用f字符,將代表網(wǎng)頁頁碼的變量i引入url中,實(shí)現(xiàn)每次循環(huán)的遍歷,i=1時(shí),代表第2頁,i=2時(shí),代表第3頁,依次類推。url=f’
’#利用read.html()函數(shù)獲取網(wǎng)址url的表格數(shù)據(jù)d_i=pd.read_html(url)
df=pd.concat(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 長春二手房買賣物業(yè)評(píng)估合同
- 貴陽市美術(shù)館租賃合同
- 風(fēng)景區(qū)開發(fā)土石方施工合同
- 農(nóng)村保潔服務(wù)人員招聘合同
- 溜冰場(chǎng)漏水處理協(xié)議
- 紡織品保溫施工協(xié)議
- 二零二五年智能廣告牌銷售、安裝及廣告內(nèi)容合作合同3篇
- 建筑防滑安全施工協(xié)議
- 空調(diào)制冷合同專用章管理方案
- 化工公司宿舍樓租賃合同
- 《國有控股上市公司高管薪酬的管控研究》
- 餐飲業(yè)環(huán)境保護(hù)管理方案
- 食品安全分享
- 礦山機(jī)械設(shè)備安全管理制度
- 計(jì)算機(jī)等級(jí)考試二級(jí)WPS Office高級(jí)應(yīng)用與設(shè)計(jì)試題及答案指導(dǎo)(2025年)
- 造價(jià)框架協(xié)議合同范例
- 糖尿病肢端壞疽
- 《創(chuàng)傷失血性休克中國急診專家共識(shí)(2023)》解讀課件
- 小學(xué)六年級(jí)數(shù)學(xué)100道題解分?jǐn)?shù)方程
- YY 0838-2021 微波熱凝設(shè)備
- 通信機(jī)房蓄電池放電試驗(yàn)報(bào)告
評(píng)論
0/150
提交評(píng)論