亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        河南有線的創(chuàng)新應(yīng)用
        ——日報數(shù)據(jù)的自動抓取與填報

        2020-01-14 01:03:24蘇本國張衛(wèi)云
        中國傳媒科技 2019年12期
        關(guān)鍵詞:報表瀏覽器頁面

        文/蘇本國 張衛(wèi)云

        1.背景

        麥肯錫稱:數(shù)據(jù),已經(jīng)滲透到當(dāng)今每一個行業(yè)和業(yè)務(wù)職能領(lǐng)域,成為重要的生產(chǎn)因素。在這個時代,公司的決策者、經(jīng)營者都需要通過數(shù)據(jù)觀察企業(yè)運作狀態(tài)以及規(guī)律,沒有數(shù)據(jù),我們舉步維艱。

        系統(tǒng)報表能為我們提供各種基礎(chǔ)數(shù)據(jù),但數(shù)據(jù)維度和格式固化,不能靈活滿足我們的臨時需求。所以,手工填報定制的、多變的經(jīng)營日報(周報月報)是所有經(jīng)營單位都必須持續(xù)開展的日常工作。

        Excel靈活而強(qiáng)大,能處理工作中大部分的數(shù)據(jù)。使用Excel可以方便地制作包含原數(shù)據(jù)、計算過程和最終展現(xiàn)結(jié)果的日報(周報月報)模板。

        河南有線信息支撐部在日常工作中,常根據(jù)公司領(lǐng)導(dǎo)要求,臨時制作各種Excel模板,并根據(jù)當(dāng)時需求,有選擇地將各系統(tǒng)平臺上的報表數(shù)據(jù)手工填入臨時模板。該工作難度低,重復(fù)性強(qiáng),尤其月初,需要填報的模板在30份左右,每份需要打開的報表頁面基本都在10個以上,僅月初就需要6人一天的工作量。

        為此,我們嘗試尋找一種自動獲取數(shù)據(jù)并填報的方法,最終找到目前排行第一的開源開發(fā)工具Python,經(jīng)過一段時間的學(xué)習(xí)和研究,我們利用該工具編寫了網(wǎng)頁爬取、Excel數(shù)據(jù)填寫的可執(zhí)行程序,成功實現(xiàn)了數(shù)據(jù)的自動填報工作目標(biāo)。

        2.思路和過程概述

        圖1

        使用python編寫網(wǎng)頁爬蟲的步驟,可分為:發(fā)送請求、獲取數(shù)據(jù)、解析數(shù)據(jù)和存儲數(shù)據(jù)四步。但在實際操作中,因爬取方法不同,我們直接獲取到了數(shù)據(jù)的列表,所以省去了數(shù)據(jù)解析環(huán)節(jié),只保留了三步:發(fā)送請求、獲取數(shù)據(jù)和存儲數(shù)據(jù)。每個過程處理細(xì)節(jié)詳情如圖1所示:

        下面按圖示步驟,分步說明在應(yīng)用程序的編寫過程中,每一步遇到的問題及相應(yīng)的解決方案。

        3.編制過程詳解

        3.1 發(fā)送請求

        3.1.1 請求頁面的三種方法選擇

        爬取數(shù)據(jù),第一步操作就是模擬瀏覽器向網(wǎng)頁所在的服務(wù)器發(fā)出請求。我們需要抓取的頁面是公司內(nèi)部CRM客戶關(guān)系管理系統(tǒng)的報表數(shù)據(jù),無需身份驗證,但請求參數(shù)較多,報表數(shù)據(jù)由JavaScript動態(tài)加載。

        3.1.1.1 基礎(chǔ)的用法,使用 urllib 的 request模塊

        該模塊中的urlopen()方法,可以實現(xiàn)簡單的請求發(fā)送操作,并得到響應(yīng)。但該方法在構(gòu)造帶參數(shù)的請求時較為復(fù)雜。

        3.1.1.2 高級用法,使用 requests庫

        requests庫中的方法可輕松實現(xiàn)帶參數(shù)、cookies、登錄驗證和代理設(shè)置等網(wǎng)頁請求,但得到的結(jié)果和在瀏覽器中看到的不一樣:在瀏覽器中可以看到的顯示數(shù)據(jù),但requests得到的結(jié)果中并沒有。這是因為requests獲取的都是原始HTML文檔,而瀏覽器中的數(shù)據(jù)則是經(jīng)過JavaScript處理數(shù)據(jù)后生成的結(jié)果。

        云南積極融入服務(wù)長江經(jīng)濟(jì)帶發(fā)展戰(zhàn)略,有利于云南充分發(fā)揮比較優(yōu)勢,把特色資源轉(zhuǎn)化為經(jīng)濟(jì)優(yōu)勢,把云南打造成為煙草、能源、冶金、化工、特色輕工基地和承接產(chǎn)業(yè)轉(zhuǎn)移基地。

        3.1.1.3 模擬瀏覽器法,使用 selenium 庫

        為了解決獲取JavaScript生成的動態(tài)頁面數(shù)據(jù)問題,我們查閱相關(guān)資料后最終選擇使用模擬瀏覽器庫——Selenium處理。

        Selenium是一個自動測試工具,利用它可驅(qū)動瀏覽器執(zhí)行特定的動作,如點擊、下拉等操作,同時還可以獲取瀏覽器當(dāng)前呈現(xiàn)的頁面源代碼,做到可見即可爬。注:在使用該方法前,除安裝Selenium庫外,還需要正確安裝好使用的瀏覽器,如Chrome,并配置好ChromeDriver。

        3.1.2 頁面分析與構(gòu)造請求

        分析請求參數(shù),打開報表頁面,按F12打開“開發(fā)者工具”,從Query String Parameters發(fā)現(xiàn)URL中所帶參數(shù)較多,且含有中文參數(shù)(地市信息)。針對這樣的復(fù)雜參數(shù)信息,我們采用了“基礎(chǔ)地址+參數(shù)信息”的方法重新構(gòu)造URL,然后再使用Selenium庫發(fā)送請求。在此過程中,遇到了不少細(xì)節(jié)問題,詳情及解決方法如表1所示:

        表1

        3.1.3 發(fā)送請求

        根據(jù)“分析請求參數(shù)”時所獲信息,使用selenium庫模擬谷歌瀏覽器向服務(wù)器發(fā)出請求。獲取各地市現(xiàn)金流的腳本編寫如下:

        3.2 獲取數(shù)據(jù)

        打開報表頁面,按F12打開“開發(fā)者工具”,選中要提取的元素,右鍵選擇“審查元素”,可找到該元素所在的節(jié)點位置。由于該元素沒有較明確的節(jié)點ID,且有較多同類節(jié)點,因此采用逐級上查,找到離其最近的有明確節(jié)點ID的節(jié)點“__bookmark2__”,以便CSS選擇器定位待查數(shù)據(jù)。獲取數(shù)據(jù)腳本如下:

        3.2.2 關(guān)于延時等待

        在調(diào)測過程中,發(fā)現(xiàn)報表頁面自動打開后很快關(guān)閉,并沒有獲得目標(biāo)數(shù)據(jù)。資料顯示selenium的get()方法會在網(wǎng)頁的框架加載結(jié)束后結(jié)束執(zhí)行,此時,服務(wù)器給瀏覽器的響應(yīng)中可能也沒有目標(biāo)數(shù)據(jù)。因此,這里需要增加延時等待。延時等待分顯示和隱式,在本應(yīng)用中,我們采用了顯示等待的方法,在控制語句中增加了WebDriverWait()函數(shù)。即:在規(guī)定時間內(nèi)加載指定節(jié)點,如果加載完成,則正常返回查找的節(jié)點,否則,拋出超時異常??刂颇_本如下:

        3.3 存儲數(shù)據(jù)

        3.3.1 Python 往 Excel中寫數(shù)據(jù)的 5 種方法

        Python擁有一個強(qiáng)大的標(biāo)準(zhǔn)庫,同時,Python社區(qū)提供了大量的第三方模塊。完成一項任務(wù)可有多種方法,只有選擇合適的方法才能達(dá)到自己的目標(biāo)。將所獲數(shù)據(jù)寫入Excel時,我們嘗試了多種方法,但都無法實現(xiàn)“無損模板地更新”的目標(biāo)。網(wǎng)上有文章整理了Python寫入Excel的4種方法及其優(yōu)缺點,增加我們自己的一種方法,歸納如下:

        表2

        其中,使用OpenPyXL修改模板時,只可追加sheet頁,但不能更新單元格,會影響表中原有公式;但使用Microsoft Excel則可修改部分單元格數(shù)據(jù),且不會影響原公式。因為本應(yīng)用中既需要讀,又需要更新Excel文檔中的部分?jǐn)?shù)據(jù),且不能修改原文檔中的公式,所以,在此只能使用Microsoft Excel API,即引用win32com組件。

        3.3.2 使用win32com組件,修改Excel表中部分?jǐn)?shù)據(jù)

        寫入Excel文檔的全過程:調(diào)用win32com組件,啟動獨立的Excel進(jìn)程,并打開Excel模板文件,使用sheet.Cells(i, j).Value實現(xiàn)給“第i行第j列”單元格賦值。相關(guān)腳本如下:

        圖2

        圖3

        4.成果展現(xiàn)

        經(jīng)過以上三步操作,一個完整的數(shù)據(jù)抓取和填報程序就完成了,加上友好的參數(shù)錄入及進(jìn)度提示住處,再使用pyinstaller將程序編譯成可執(zhí)行文件。將可執(zhí)行文件和模板一起移置到應(yīng)用環(huán)境中,按周期執(zhí)行該文件,輸入統(tǒng)計需要的參數(shù),即可以直觀地看到頁面打開過程和Excel數(shù)據(jù)刷新過程。圖2為目標(biāo)頁面逐一打開的過程,圖3為Excel文檔自動打開的過程,此后,隨著Excel數(shù)據(jù)的刷新,文檔中原有計算公式會自動計算,待數(shù)據(jù)寫入完畢,目標(biāo)數(shù)據(jù)即為可發(fā)布數(shù)據(jù)。

        結(jié)語

        使用python的擴(kuò)展庫和模塊實現(xiàn)獲取和使用數(shù)據(jù)較為簡單,本應(yīng)用使用的擴(kuò)展庫和模塊有:selenium、urllib、win32com和datetime等。方便快捷地實現(xiàn)了目標(biāo)功能,解決常用報表的自動填報問題,在節(jié)約人力成本的同時,提高了工作效率和數(shù)據(jù)準(zhǔn)確度。

        猜你喜歡
        報表瀏覽器頁面
        大狗熊在睡覺
        刷新生活的頁面
        反瀏覽器指紋追蹤
        電子制作(2019年10期)2019-06-17 11:45:14
        LabWindows/CVI中Excel報表技術(shù)研究
        從三大報表讀懂養(yǎng)豬人的成績單
        環(huán)球瀏覽器
        再見,那些年我們嘲笑過的IE瀏覽器
        同一Word文檔 縱橫頁面并存
        淺析ASP.NET頁面導(dǎo)航技術(shù)
        月度報表
        中國紡織(2009年7期)2009-08-07 06:56:16
        国产成人aa在线观看视频| 亚洲色欲色欲大片www无码| 久久久久亚洲av无码专区导航| 国产欧美日韩在线观看一区二区三区| 青青草视全福视频在线| 一本大道道久久综合av| 18禁黄久久久aaa片| 99热这里只有精品4| 一区二区三区精品婷婷| 黄色av一区二区在线观看 | 亚洲欧美日韩中文在线制服| 亚洲丁香五月激情综合| 91热久久免费频精品99| 99久久无色码中文字幕人妻蜜柚 | 日本一二三四区在线观看| 中文字幕av一区二区三区人妻少妇 | 国产一精品一av一免费| 国产乱子伦露脸在线| 日本熟妇高潮爽视频在线观看 | 久久久久国产精品| 人妻无码中文字幕免费视频蜜桃 | 岛国av无码免费无禁网站| 亚洲不卡av不卡一区二区| 日韩精品中文字幕综合| 自拍偷自拍亚洲一区二区| 亚洲va无码手机在线电影| 老汉tv永久视频福利在线观看| 久久亚洲国产高清av一级| 欧美激情综合色综合啪啪五月| 熟妇人妻中文av无码| 开心激情站开心激情网六月婷婷| 国产日产一区二区三区四区五区| 免费拍拍拍网站| 日本中文字幕不卡在线一区二区| 少妇我被躁爽到高潮在线影片| 国产婷婷色一区二区三区| 曰本女人与公拘交酡免费视频 | 国内偷拍第一视频第一视频区| 国产自国产自愉自愉免费24区| 人妻丰满熟妇av无码处处不卡| 日韩一区二区三区中文字幕|