版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
任務四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【關于遠離違法違規(guī)外匯交易的風險提示】[1rowsx8columns],貨幣名稱現(xiàn)匯買入價現(xiàn)鈔買入價...中行折算價發(fā)布日期發(fā)布時間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中國銀行外匯牌價網頁聲明:1.本匯率表單位為100外幣換算人民幣,僅供參考,客戶辦理結/購...,00<!--createBottom();//-->]不是DataFrame!獲取數據2輸出結果:貨幣名稱現(xiàn)匯買入價現(xiàn)鈔買入價...中行折算價發(fā)布日期發(fā)布時間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]#將列表的第二個元素打印到屏幕上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#創(chuàng)建一個空的數據框,用于存儲匯率數據df=pd.DataFrame()#打開網頁并讀取網頁中的表格##由于要獲取5頁數據,需使用for循環(huán)遍歷url網頁foriinrange(1,6):#利用f字符,將代表網頁頁碼的變量i引入url中,實現(xiàn)每次循環(huán)的遍歷,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循環(huán),將爬取的數據裝入一個空DataFrame,存入“匯率1.xlsx”中。1.打開網頁,獲取數據子任務1一與網頁源代碼內容一致!在網頁空白區(qū)域,點擊鼠標右鍵——查看源代碼!將這前5頁數據存入”匯率1.xlsx”的一個sheet中。任務分析:要將5頁數據存入同一個sheet中,參考任務3的操作,利用for循環(huán),將爬取的數據裝入一個空DataFrame,存入“匯率1.xlsx”中。2.將5頁數據合并到一個DataFrame中#使用concat函數將5個網頁中的表格合并在一起。注意:concat函數的參數是數組或DataFrame,待合并的參數要用[]括起來
df=pd.concat([df,d_i[1]])print(df)輸出結果:貨幣名稱現(xiàn)匯買入價現(xiàn)鈔買入價...中行折算價發(fā)布日期發(fā)布時間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新臺幣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一與網頁源代碼內容一致!在網頁空白區(qū)域,點擊鼠標右鍵——查看源代碼!將這前5頁數據存入”匯率1.xlsx”的一個sheet中。任務分析:要將5頁數據存入同一個sheet中,參考任務3的操作,利用for循環(huán),將爬取的數據裝入一個空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中,不能繼續(xù)簡單使用df.to_excel(),因為每次調用to_excel()會完全覆蓋掉原來excel中的數據。分次向excel中存數據,需引入ExcelWriter對象。writer=ExcelWriter('路徑/匯率2.xlsx',mode='a',engine='openpyxl')創(chuàng)建writer代理人,專門負責‘路徑’下“匯率2”這個excel工作簿mode:寫入模式‘a’:append,添加數據,不改變excel工作簿中原來的數據‘w’:完全覆蓋掉以前的數據,把以前的數據扔掉,重新寫指定用哪個excel模塊去執(zhí)行這個excel寫入工作。子任務2二將這前5頁數據分別存入“匯率2.xlsx的5個sheet中,每個sheet命名為第1頁,第2頁…..第5頁。執(zhí)行任務:#加載庫包importpandasaspd#創(chuàng)建一個空的數據框,用于存儲匯率數據df=pd.DataFrame()#創(chuàng)建writerwriter=pd.ExcelWriter('路徑/匯率2.xlsx',mode='a',engine='openpyxl')#打開網頁并讀取網頁中的表格##由于要獲取5頁數據,需使用for循環(huán)遍歷url網頁foriinrange(1,6):#利用f字符,將代表網頁頁碼的變量i引入url中,實現(xiàn)每次循環(huán)的遍歷,i=1時,代表第2頁,i=2時,代表第3頁,依次類推。url=f'/sourcedb/whpj/index_{i}.html'1.加載庫包,創(chuàng)建空DataFrame,創(chuàng)建writer寫入代理人,打開網頁子任務2二將這前5頁數據分別存入“匯率2.xlsx的5個sheet中,每個sheet命名為第1頁,第2頁…..第5頁。任務分析:要將5頁數據存入excel工作簿的5個sheet中,不能繼續(xù)簡單使用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代理人執(zhí)行寫入操作后,一定要執(zhí)行save()和close兩個操作,否則writer不會被執(zhí)行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#創(chuàng)建一個空的數據框,用于存儲匯率數據df=pd.DataFrame()#打開網頁并讀取網頁中的表格##由于要獲取5頁數據,需使用for循環(huán)遍歷url網頁foriinrange(
):#利用f字符,將代表網頁頁碼的變量i引入url中,實現(xiàn)每次循環(huán)的遍歷,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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《減鹽臘肉制品加工工藝優(yōu)化及品質特性研究》
- 《典型不同孔窗ZIFs的合成及生物丁醇吸附分離性能研究》
- 起重裝卸機械操作工理論考試質量測驗試題大全附答案
- 2025版地下綜合管廊安防系統(tǒng)施工合同模板3篇
- 2025年度大數據分析技術授權合作框架合同
- 2025版貸款居間合同違約金計算范本集3篇
- 2025版生態(tài)農業(yè)園區(qū)水電安裝與灌溉系統(tǒng)承包服務合同3篇
- 2024年門頭房租賃合同范本(含租賃合同解除程序)3篇
- 2025年度醫(yī)療機構護士崗位勞動合同模板
- 二零二五年度電梯保養(yǎng)與電梯安全風險評估與咨詢合同
- 人教PEP版英語四年級上冊單詞表默寫(英譯漢、漢譯英)
- 水不同溫度的熱焓值
- EPC總承包項目設計的總體安排與資源配置方案
- 浙江省溫州市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會明細及行政區(qū)劃代碼
- 空氣壓縮機檢驗原始記錄表
- 建材行業(yè)重大安全事故隱患檢查表(根據2022版工貿行業(yè)重大生產安全事故隱患判定標準編制)
- 隆中對-完整版獲獎課件
- 《國民經濟核算》課程教學大綱
- DB32∕T 3261-2017 水利工程預拌混凝土應用技術規(guī)范
- 人教版六年級上冊數學 求陰影部分面積周長總復習專題訓練【含答案】
- 物理學習的8種思考方式
評論
0/150
提交評論