999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Python的網絡數據定時自動采集工具的設計

2021-11-20 00:21:37胡慶偉
電子技術與軟件工程 2021年21期
關鍵詞:頁面程序

胡慶偉

(中海油國際貿易有限責任公司 北京市 100000)

1 概述

隨著移動互聯網、物聯網等新一代信息技術產業的快速發展,使得網絡數據量產生了爆炸式的增長,每個人每天都要面對海量信息的轟炸,身處這樣一個信息爆炸的時代,如何快速、有效的獲取信息變得尤為重要,如果能夠通過簡單的編程,實現數據的自動獲取、整理、分析,將極大的提升工作效率。大數據技術的發展促使網絡爬蟲技術應用愈加廣泛,Python 編程語言因其簡單易學的特性,使得更多非計算機專業人士也能夠通過編程,開發出簡單的工具來輔助日常辦公。

在實際的辦公場景中,經常需要每天到某網站收集數據的業務,例如財務工作者需要每天到人民銀行官網查詢當天人民幣對外幣的匯率,金融分析員需要在每天收盤后采集基金、股票、期貨的交易數據,市場研究員需要每天訪問不同的網站收集市場信息等。如果有一個工具能夠每天定時的從網站采集數據并自動地發送到郵箱中,相關工作人員就只需要按時去查看,就可以節省大量工作時間,同時還可為后續利用進行數據分析和可視化奠定基礎。

2 Python語言簡介

Python 是由荷蘭數學和計算機科學研究學會的Guido van Rossum 于1989年底發明的一種解釋型、面向對象、動態數據類型的高級程序設計語言,是一種效率極高的語言,使用Python 編寫時,程序包含的代碼行數更少,代碼更容易閱讀、調試和擴展,被廣泛用于編寫網絡爬蟲、游戲、創建Web 應用程序等,不僅如此在科學領域也被大量運用,其提供的科學計算擴展庫:NumPy、SciPy 和matplotlib,分別為Python 提供了快速數組處理、數值運算以及繪圖功能,十分適合工程技術、科研人員處理實驗數據、制作圖表,甚至開發科學計算應用程序。本文中也將使用requests、openpyxl、pyinstaller 等第三方擴展庫,在使用之前需要通過pip install xxxx 命令進行安裝。

3 網絡數據定時自動采集工具的實現

3.1 數據采集模塊的實現

數據采集模塊主要使用Python 第三方庫requests 提供的網絡爬蟲框架搭建,網絡爬蟲是一種根據預先設計好的規則,從特定網站中獲取相應數據的工具,主要應用于各種數據信息收集的場景,我們常見的百度、谷歌等搜索引擎就使用了網絡爬蟲技術。網絡爬蟲的實現通常分為四個關鍵步驟:

(1)數據獲取。首先需要分析目標網站頁面,明確爬取的數據源。打開上海國際能源期貨交易中心每日交易快訊頁面URL 地 址:http://www.ine.cn/statements/daily/?name=kx, 經觀察可知交易詳細數據會根據日期組件控制動態刷新,由此判斷數據未直接存放在靜態HTML 頁面中,也就表示沒辦法使用BeautifulSoup 庫對提取的數據進行解析。然后進入開發者模式,檢查該Network 頁簽中動態頁面加載情況,動態數據一般存放在XHR 文件中,因此可以優先查找XHR 中是否存放數據。經過分析可以看到期貨交易數據實際保存的URL 地址為http://www.ine.cn/data/dailydata/kx/kx20210809.dat?temp2=1628514764422?r nd=0.028823041981317576,而該URL 中的“20210809”則控制具體顯示某天的數據。明確數據存放的URL 地址后,就可以開始編寫程序,在VS code 開發工具中新建名為download_ine.py 源文件,引用requests 庫、time 庫,獲取當天日期并拼接目標URL 地址,為了避免網站的反爬蟲設置,需要加上User-Agent 偽裝成瀏覽器訪問,最后再使用requests.get()方法完成數據抓取,主要代碼如下:

import requests,time

today=time.strftime("%Y%m%d",time.localtime())#獲取交易日期

url='http://www.ine.cn/data/dailydata/kx/kx'+today+'.dat?temp2=16 28170114791?rnd=0.2163361727157722'#將URL 中特定的日期替換成參數,確保程序每天都能找到對應的頁面

headers={

'user-agent':'Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,like Gecko) Chrome/90.0.4430.212 Safari/537.36'}

res=requests.get(url,headers=headers))#獲取頁面中的數據

(2)數據解析。通過前述分析可知交易詳細數據是動態刷新的,因此步驟(1)獲取到的數據無法通過靜態頁面解析庫BeautifulSoap 進行解析。這種能夠動態刷新的數據被存放在名為JSON 的數據結構中,可以使用requests 庫中的JSON 解碼器進行解析,僅用一行代碼json_res=res.json()即可完成。

(3)數據提取。前面提到的JSON 是一種輕量級的文本數據交換格式,其具有的層次結構與Python 中的字典、列表結構較為類似,因此通過for 循環就可以將需要的數據字段如商品種類、交割月份、前結算、持倉手、持倉變化等逐行提取出來,并使用append 方法添加到自定義的data_list 列表中,主要代碼如下:

instrument_list =json_res['o_curinstrument']#將json 格式的數據轉換為列表

data_list =[]

for instrument in instrument_list:#循環列表提取數據

PRODUCTNAME=instrument['PRODUCTNAME']#商品種類DELIVERYMONTH=instrument['DELIVERYMONTH']#交割月份

......

OPENINTEREST=instrument['OPENINTEREST']#持倉手

OPENINTERESTCHG=instrument['OPENINTERESTCHG']# 持倉變化

data_list.append([PRODUCTNAME,DELIVERYMONTH,......,OP ENINTEREST,OPENINTERE

STCHG])

(4)數據存儲。常見的數據存儲方式有兩種,存儲為CSV 格式或Excel 文件,本文介紹第三方庫openpyxl 的使用方法,將數據存儲到Excel 文件,其基本操作流程為創建工作簿對象、激活sheet頁、循環填充數據、保存文件到指定路徑,主要代碼如下:

book = Workbook() #創建Workbook 對象

sheet = book.active #激活sheet 頁

for row in data_list: #循環列表并添加到Excel

sheet.append(row)

book.save("D:/Python/workspace/export_INE.xlsx")# 保存Excel文件

3.2 郵件發送模塊的實現

郵件發送功能需要用到Python 的smtplib、email 兩個庫,其中smtplib 庫主要負責連接服務器、登錄、發送和退出,email 庫則主要處理郵件主題、收件人、發件人、正文、附件等。實現步驟大體包括連接郵件服務器、通過賬號密碼登錄郵箱、填寫收件人、填寫主題、撰寫正文、添加附件、發送郵件、退出郵箱八個部分,主要代碼如下:

sender = "xxx@qq.com"#發件人郵箱

password = "***"#發件人郵箱的密碼

to = "xxx@163.com"#收件人郵箱

msg = MIMEMultipart()#創建MIME

msg["Subject"]= "INE DATA --"+ today#添加郵件主題

msg["From"]= sender #添加發件人

msg["To"]= to #添加收件人

text = "上海國際能源交易中心期貨合約行情--""+today#添加正文內容

multipart = MIMEText(text) #創建MIMEText

msg.attach(multipart)#添加到msg

multipart= MIMEApplication(open('D:/Python/workspace/export_INE.xlsx','rb').read())#讀取附件創建MIMEApplication

multipart.add_header('Content-Disposition','attachment',filename="

export_INE.xlsx")#添加信息頭

msg.attach(multipart)

s = smtplib.SMTP("smtp.qq.com", timeout=30) #連接郵件服務器

s.login(sender, password))#登錄郵箱

s.sendmail(sender, to,msg.as_string()) )#發送郵件

s.close()#關閉郵件連接

3.3 將python程序生成為可執行文件

為了使Python 程序具有更強的適用性,可以將Python 源文件生成為.exe 可執行文件,.exe 文件是一種不依賴于Python 開發運行環境,可以在Windows 操作系統中直接運行的文件類型,對非程序員的使用者更加友好。使用pyinstaller 第三方庫可以實現生成可執行文件的操作,在安裝pyinstaller 時需要與Python 放到相同目錄,安裝完成后進入download_ine.py 文件所在目錄,并運行命令pyinstaller -F download_ine.py,參數“-F”表示將Python 程序生成為單個可執行文件,從而避免因某些動態庫文件丟失導致程序無法正確運行。命令運行完畢后會在當前目錄新增加build 和dist 兩個目錄,新生成好download_ine.exe 可執行文件存放在dist 文件夾中。

3.4 定時任務功能實現

在Python 程序中,定時任務功能可以通過schedule 庫來實現,但是這種方法需要將程序部署在服務器或持續運行的PC 機上,并且安裝Python 運行環境,對于普通使用者來說既不經濟,也不方便。因此,本文采取通過Windows 操作系統的“任務計劃程序”功能,實現數據采集工具程序的定時自動運行。在裝有Windows操作系統的電腦中,按順序打開“控制面板-管理工具-任務計劃程序”,新建基本任務,選擇每日22:00 點運行download_ine.exe程序,并勾選“錯過計劃開始時間立即啟動任務”選項。如此即可每日22:00 由操作系統自動運行download_ine.exe 程序,從上海國際能源交易中心網站上采集當日期貨交易數據存儲到Excel 文件中,并通過郵件發送到指定的郵箱。

4 結語

本文基于Python 程序語言,詳細介紹了從指定網站中進行數據采集、數據解析、數據提取、數據存儲的過程,對發送郵件、生成可執行文件、設置定時任務等進行詳細闡述。通過實例詳細介紹了requests、openpyxl、smtplib、email、pyinstaller 等Python 自 有和第三方庫的使用方法。對于具有數據采集、郵件發送、定時任務等需求場景的讀者,本文提供了一種具有較高適用性的解決方案。

猜你喜歡
頁面程序
微信群聊總是找不到,打開這個開關就好了
大狗熊在睡覺
刷新生活的頁面
保健醫苑(2022年1期)2022-08-30 08:39:14
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
恐怖犯罪刑事訴訟程序的完善
同一Word文檔 縱橫頁面并存
主站蜘蛛池模板: 国产精品分类视频分类一区| 亚洲成A人V欧美综合天堂| 欧日韩在线不卡视频| 亚洲乱码精品久久久久..| 99在线视频免费观看| 一级片一区| 午夜色综合| www.精品视频| 最新国产网站| 欧美激情视频在线观看一区| 国产女人水多毛片18| 激情成人综合网| 91久久偷偷做嫩草影院| 国产精品亚欧美一区二区| 亚洲欧美国产五月天综合| 亚洲国产成人无码AV在线影院L| 久久国产免费观看| 亚洲人成网7777777国产| 国产又大又粗又猛又爽的视频| 高清精品美女在线播放| 国产一区免费在线观看| 国产精品偷伦在线观看| 久久激情影院| 91精品国产91久无码网站| 国产视频一二三区| 亚洲一区二区约美女探花| a毛片在线免费观看| 国产精品毛片一区| 亚洲精品高清视频| 国产成人久久777777| 片在线无码观看| 亚洲色图欧美激情| 欧美精品成人| 国产日韩精品欧美一区灰| 国产欧美精品专区一区二区| 无遮挡国产高潮视频免费观看| 国产9191精品免费观看| 亚洲精品动漫在线观看| 中文字幕永久视频| 午夜影院a级片| 免费一级毛片完整版在线看| 欧美日韩国产在线人| 亚洲黄色视频在线观看一区| 亚洲91精品视频| 久久精品亚洲中文字幕乱码| 国产人免费人成免费视频| 亚洲AV成人一区国产精品| 欧美成人午夜视频| 99精品在线看| 成人精品午夜福利在线播放| 欧美中文字幕在线视频| 亚洲黄色片免费看| 欧美日韩综合网| 久久精品亚洲热综合一区二区| 无码人中文字幕| 亚洲全网成人资源在线观看| 亚洲中文字幕国产av| 欧美精品一区在线看| 五月婷婷导航| 亚洲综合经典在线一区二区| 尤物午夜福利视频| 亚洲国产精品成人久久综合影院| 久久精品视频一| 国产97区一区二区三区无码| 青草精品视频| 国产成人精品视频一区二区电影| 成人自拍视频在线观看| 亚洲日本中文字幕乱码中文| 国产精品中文免费福利| 亚洲色成人www在线观看| 欧美精品导航| 巨熟乳波霸若妻中文观看免费| 中文字幕乱码二三区免费| 日本精品αv中文字幕| 2022精品国偷自产免费观看| 性视频一区| 午夜一区二区三区| 亚洲人成色在线观看| 久久精品亚洲中文字幕乱码| 成人无码一区二区三区视频在线观看| 日韩av手机在线| 五月综合色婷婷|