python窗口显示表格_Python爬虫之GUI图表
關于Python爬蟲系列的這篇文章我很早就想寫了,但由于我前兩周一直在研究vscode插件開發(fā)方面,就沒去寫文章。所幸目前vscode插件開發(fā)的知識了解的差不多了,是時候?qū)懥?#xff0c;哈哈。需要說明的是,我并非專業(yè)Python開發(fā)人員,只是在實際開發(fā)中需要用到一些數(shù)據(jù)爬取,所以就學了Python語言。所以接下來的闡述基本都是我學Python語言的一些注意的地方。
Python目前是很主流的編程語言,相信各位同僚多少都知道一些,其中很重要的一點是容易上手。的確,我是專攻C/C++的,起初接觸Python語言的時候,就覺得方便很多,基本不用自己造輪子。比如要完成一個http請求,Python就一行;C/C++就很麻煩(創(chuàng)建Socket、建立TCP鏈接、封裝HTTP協(xié)議字段。。。)。反正就是用Python開發(fā)某些功能(尤其是數(shù)據(jù)處理方面)很方便很多。下面我說一下我是怎么入手Python的,如果你是非開發(fā)人員建議不要采納我下面的學習方法,直接去看相關書籍從基本入手。如果是開發(fā)人員,有過程序開發(fā)的底子當然不需要從最基本開始,可以跳過某些過程,建議伴隨實際小項目學習。當時是接了一個爬取數(shù)據(jù)的活,當時的我從沒有接觸過python語言,對我來說是一個新手。我主要從下面三個方面進行學習并且完成項目開發(fā)。
一是語法
首先,需要知道python的語法,確保程序能運行成功,沒有語法錯誤?;局髁鞯木幊陶Z言語法都差不多,不是很反人類的(像C、C++、PHP、Python、C#、Java、Javascript等),所以這一方面不要一個小時,語法基本就融匯貫通的了。像有些很優(yōu)秀的IDE,如果你寫的代碼有語法錯誤,都能給你修復(例:Pycharm)
二是邏輯
關于邏輯,我也稱之為編程思維。有過編程經(jīng)驗的同僚,這個基本不占用時間,知道需要哪些包及調(diào)用哪些包里的函數(shù)后,這個就直接可以是實現(xiàn)了。
三是功能
這方面是最耗時的。python之所以方便,就是因為這門語言有很多工具包,我們在編寫程序的時候很多功能不需要自己實現(xiàn),調(diào)用別人寫好的工具包就很容易實現(xiàn)。但對于初學者來說,就是不知道有哪些工具包,以及工具包里有哪些功能。這里我推薦的方法(也是我采取的方法),需要什么功能的時候去網(wǎng)上搜索,而且關于Python的資料網(wǎng)上很多,很容易找到你想要的。比如:當時需要爬取url的表格數(shù)據(jù),這里需要用到re和bs4工具包,re用于請求下載網(wǎng)頁內(nèi)容,bs4用于解析html等。
所以準確來說,這個項目(學會Python語言)用了不到兩天就完成了。當然,這里我沒有說明Python的環(huán)境搭建,其實也挺容易的,網(wǎng)上有很詳細的教程,這個可以去搜索。不是有句話么,一個項目完成了環(huán)境搭建,基本就完成一半了。哈哈
上面主要說的是學會用Python完成一些小的項目程序,但如果你想更上一層樓,去編寫更復雜的項目,對項目代碼上能有條理的管理,得會面向?qū)ο缶幊?。我在初學Python語言的時候,在網(wǎng)上搜索的Python案例實現(xiàn)基本都是過程化編寫的,并非對象對結(jié)構(gòu)編寫的,所以我當時以為Python語言結(jié)構(gòu)上就像C語言那樣,都是面向過程化的。過程化的缺點就是不好管理,當我去網(wǎng)上搜索Python對象的時候,也是有相關案例,也有class能像C++那樣繼承、派生、實例化以及靜態(tài)函數(shù)編寫等,所以我之后才知道Python語言結(jié)構(gòu)更像C++語言那樣,既可面向過程,也可面向?qū)ο蟆?/p>
以上就是我在學Python語言的一些建議及心得,祝同僚加油!下面我說一下Python自帶的GUI模塊----TK模塊。
上面的Python語言相關內(nèi)容基本都是在控制臺可見的,并不能輸出到窗口顯示。下面我將對Python窗口編程進行說明,熟悉Win32 GDI的程序員(或者熟悉MFC、Java的Swing工具包),都很容易上手。不熟悉上述的也沒關系,也很容易上手。Python語言的GUI模塊有多種,我只學了TK模塊。學這個TK模塊的初衷是為了將爬取的數(shù)據(jù)做成圖表進行直觀分析。網(wǎng)上有關于TK模塊的資料和小案例,但是功能不全。我這里只說明部分網(wǎng)上找不到的內(nèi)容(下面只給出效果圖和說明,給出代碼沒有多大意義),最后我也會附上個人覺得不錯的資料鏈接和我實現(xiàn)的demo源碼。
1.窗口多面板卷動;
窗口中繪制了多個canvas,通過卷動上圖中標記的窗口卷動列實現(xiàn)卷動
2.動態(tài)改變組件屬性;
通過點擊上面的顏色模式切換,就會動態(tài)更換屬性(填充顏色,字體等)
3.組件的嵌套使用;
上圖中有多組件嵌套,這里沒法標記,還是請同僚去讀相關對應的代碼
4.外設事件(鼠標、鍵盤)捕獲;
上圖中鼠標觸發(fā)到各個扇形區(qū)域,就彈出相關的提示面板。
其實還有很多網(wǎng)上找不到的問題,都是我經(jīng)過大量實驗才實現(xiàn)的,所以想學的TK模塊的同僚,之后可以去下載我提過那個的demo源碼,這樣對應的學習會走不少彎路。以上的統(tǒng)計圖我都是做的是二維,感興趣的同僚可以去拓展三維,多維。。。
最后,給大家簡單科普一下的Python爬蟲無Chrome頭瀏覽器的使用。如果我們用常規(guī)的爬取方法只能捕獲到靜態(tài)網(wǎng)頁數(shù)據(jù)的內(nèi)容,通過js動態(tài)渲染的內(nèi)容,我們無法捕獲到。所以可能會有同僚常常會問,為什么我爬取的網(wǎng)頁內(nèi)容怎么和Chrome瀏覽器的源碼內(nèi)容不一樣呢?這就因為你沒有爬取到js動態(tài)渲染的內(nèi)容。這里我不對無頭瀏覽器的環(huán)境安裝進行說明,網(wǎng)上有教程能搜到。無頭瀏覽器,其實通過使用不帶圖形界面的Chrome運行網(wǎng)頁,實則是通過瀏覽器的內(nèi)核程序?qū)W(wǎng)頁進行渲染,所以不同內(nèi)核的瀏覽器,有不同的爬取動態(tài)網(wǎng)頁的方法。但是都是運行不帶圖形界面的內(nèi)核程序?qū)W(wǎng)頁進行渲染之后再爬取的。常規(guī)的方法是通過http請求的,只會下載相關的js代碼,不會去運行js代碼。所以這就是為什么無頭瀏覽器能爬取動態(tài)網(wǎng)頁了。而且,使用無頭瀏覽器還可以個用戶收到觸發(fā)js代碼和相關事件,這為自動化測試提供了基礎(如果你是網(wǎng)站開發(fā)人員,測試的時候可以考慮一下,嘿嘿)。最最最最最最后,提醒爬蟲的人員,爬去大型網(wǎng)站數(shù)據(jù)的時候看一下該網(wǎng)站的Robot協(xié)議,看看允不允許爬取,不要非法'竊'取數(shù)據(jù),一不小心就可能去蹲局子了,哈哈(這種例子還是有多的)。本來出發(fā)點是好的,不要搞得不值當啊,祝同僚學習成功!
總結(jié)
以上是生活随笔為你收集整理的python窗口显示表格_Python爬虫之GUI图表的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2022生源地助学贷款截止日期,助学贷款
- 下一篇: 一个字节为什么是8位(为什么一个字节是8