fbpx
Python初學程式技術問題

Python 爬蟲解析:以爬取臉書社團為案例,使用 selenium 來進行網頁模擬爬蟲

適合本篇閱讀的人:   剛接觸Python   剛入門爬蟲   範例流程: 爬取python Taiwan FB社團,在社團內部自動垂直瀏覽頁面。爬取貼文時間,併計算貼文數量。 https://gist.github.com/dreamline2/6df1c4ff4e00e36404669b1437b45820 第一部分:介紹各種python內建套件模塊   1. Selenium:程序可以直接驅動瀏覽器進行各種網站操作。       2. Webdriver:真實的模擬人對於瀏覽器的操作行為。  3. BeautifulSoup:最主要的功能是從網頁抓取數據。  4. numpy:多維數據集數學函式庫。 5.time:獲取當前的時間,操作時間和日期,從串行讀取時間及格式化時間為字符串。 …
celia
February 18, 2020
Python

Python常見的檔案處理應用

在實務上,常常有機會需要將資料寫入或讀出檔案,而Python也提供了許多相關的模組(Module)讓開發人員可以容易的進行檔案的操作。 透過本篇的教學,各位除了能夠利用Python進行基本的檔案操作外,也有能力讀取及寫入常見的資料交換格式檔案,重點包含: 基本的檔案操作 JSON檔案操作(JSON Files) CSV檔案操作(CSV Files) ZIP檔案操作(Zip Files)   一、基本的檔案操作 首先,先來看一下我們目前專案的檔案結構,如下: 現在就來分別介紹幾個Python常用的檔案操作方式:   檢查檔案是否存在 利用 Path 模組(Module)中的exists()方法,來檢查目錄下是否含有特定的檔案,如下範例: 取得檔案資訊 利用 Path 模組(Module)中的stat()方法即可取得目錄下特定檔案的資訊,如下範例: 執行結果 從執行結果可以看到包含了檔案的大小 st_size、修改時間 st_mtime 及建立時間 st_ctime 等。 重新命名檔案…
學程式助教
February 14, 2020
Python

有效管理Python套件(Package)的工具及概念

在實務上發展應用程式時,除了可以自行開發模組(Module)與套件(Package)外,很多時候會安裝使用第三方套件(Package),來提升專案的開發效率。 所以本文將介紹如何在PyPI中搜尋所需的Python套件(Package),並且以Windows作業系統及Visual Studio Code開發工具為例,瞭解Python強大的套件管理工具,讓您有效管理專案中的Python套件(Package)。 由於是在Visual Studio Code的Terminal視窗中下指令的方式來操作,所以使用命令提示字元視窗,也可以達到相同的效果。本文重點包含: PyPI(Python Package Index) pip套件管理工具 pipenv套件管理工具 Pipfile及Pipfile.lock檔案 一、PyPI(Python Package Index) PyPI是一個套件庫,位於https://pypi.org,其中包含了各式各樣的Python套件(Package),在開發應用程式的過程中,可以到這邊來搜尋是否有所需的功能套件(Package),安裝後透過引用的方式來進行使用,藉此提升開發效率。 現在就來介紹幾個在使用PyPI時,需要瞭解的基本功能。首先,PyPI的首頁如下圖: 各位可以在搜尋的地方查詢所需的套件,例如搜尋常應用在網路爬蟲的beautifulsoup4套件(Package),從查詢結果可以看到許多相關的套件(Package),如下圖: 以beautifulsoup4 4.8.2為例,點進此套件(Package)後,可以看到安裝的指令及最新版的發佈日期,如下圖: 一個套件(Package)要如何使用,一定會有文件可以參考,往下即可看到Documentation的連結,如下圖: 而套件(Package)的版本演進歷史則可以透過左邊的Release history來查看,如下圖: 以上是在使用PyPI上查找套件(Package)時,較常使用的部分,接下來,就來教大家如何透過指令來安裝套件(Package)吧。…
學程式助教
February 5, 2020
Python工程思維

Python資料處理套件Part6 – Pandas 數值處理與基礎統計量

上一篇文章主要介紹如何利用pandas處理字串資料,而這章節的會著重於數值的資料處理以及顯示基礎統計量的方法。在資料分析中,數值資料是非常常見的,而且對於後續的深入分析而言,數值資料能夠讓我們進一步利用推論統計檢定許多因素與目標的關聯性,幫助我們能夠利用檢定結果進行決策,或是發現夠深入的趨勢。   這次我們會使MLB美國職棒大聯盟的各隊歷年統計數據(mlb_team.csv)的公開資料,其中記錄了美國職棒大聯盟從西元1871年至今的各球隊數據,因為最近正好碰到需要分析棒球的運動相關數據,且這份資料大部分的欄位都是數值欄位,正好適合這篇文章主題。 讀取資料:   import pandas as pd mlb_teams = pd.read_csv("mlb_team.csv",encode="UTF-8") mlb_teams.head()   向量處理 Vectorize Operations 之前的文章中有提到Pandas是利用向量處理的方式進行資料處理的,所以我們在進行數值運算的時候都是針對單一個欄位將欄位中的所有數值進行相同的運算,如果要針對特定條件的數值進行運算,則需要先進行資料篩選再進行數值處理。 基本上在利用Pandas進行數值運算時,跟我們一般在寫Python計算一樣,只是平常用於運算的變數變成了 DataFrame 物件或是 Series 物件,所以所有Python中的數學運算符,在Pandas都可以直接使用: s = pd.Series() s+11 s-10 s*5…
學程式助教
February 3, 2020
Python

Python是什麼? TOP7 新手必讀知識!

Python在近幾年來的受到愈來愈多人的青睞﹐現在更是最熱門的程式語言之一。在這一篇文章我們會和大家一起探討以下四個問題: Python究竟是什麼? Python有什麼功能? 學習Python究竟可以從事那些行業? 介紹Python相關軟體 (more…)
wilson
January 28, 2020
Python

Python 入門&基本教學介紹!

到底要怎麼開始學Python ?對於許多人來說,最難的其實不是學習的過程,而是連起步都不知道該怎麼下手,幾天這篇文章會帶大家認識基礎的python,也讓你對python也更多基礎認識! 新課程上架Udemy !  全新Python 課程上架,8小時基礎實戰!,限時優惠只要NT 390 (HKD 100 起)! 讓你輕鬆學習: 了解 Python 語法與什麼是資料科學 使用 Pandas 套件進行資料處理 瞭解程式背後的邏輯與為什麼學習 掌握視覺化套件庫 Matplotlib 掌握進階視覺化套件庫 Seaborn 練習使用【歷屆金鐘獎資料】取得重要訊息 用8小時,省下你獨自摸索花費的時間! 8小時,讓履歷不一樣!…
學程式助教
January 28, 2020
Python

Python Comprehension語法應用教學

相信在學Python程式語言的朋友都知道,Python語法簡單易學且非常簡潔,今天要來介紹的Comprehension即是Python的Pythonic語法之一,可以運用在任何可疊代的物件(Iterable Object)上,只要一行程式碼即可完成多行的任務,讓我們的程式碼簡潔及增加可讀性。 透過今天的教學,您將可以學到Python Comprehension如何應用在以下幾個重要的物件(Object)上,並且有能力將現有程式碼改寫為Python Comprehension語法。 List Comprehension Set & Dictionary Comprehension Generator Expression   一、List Comprehension 串列(List)Comprehension的語法包含三個部分,說明如下: expression:可以是 item 或運算式。 item:接收可疊代的物件(Iterable Object)元素。 iterable:可疊代的物件(Iterable Object)。 通常要建立一個串列(List),我們可以透過for迴圈的方式,如下範例:…
學程式助教
January 22, 2020
Python

Python封裝(Encapsulation)實用教學

今天要來介紹Python物件導向設計中的封裝(Encapsulation)概念,主要的目的在保護程式碼中重要的實作細節不被外部知道,以防止外部程式碼直接或不當的存取類別中的屬性(Attribute)及方法(Method),而導致程式邏輯上的錯誤。 將複雜的運算邏輯進行封裝(Encapsulation)的好處是,外部程式碼只要透過統一介面來進行存取即可,而無需瞭解其中的運算過程,讓程式碼除了保有存取上的控制外,也易於維護。 今天要來說明的封裝(Encapsulation)重點包含了: Python封裝(Encapsulation) 私有屬性(Private Attribute) 私有方法(Private Method) 一、Python封裝(Encapsulation) 就如同文章開頭所說明的,封裝(Encapsulation)的概念就有點像權限控制,有些屬性(Attribute)或方法(Method)只想於類別內部使用,而不想公開於外部,除了減少程式碼因來源端不適當的使用發生問題外,也可保護其中重要的商業邏輯。 一般情況下,來源端皆可存取類別中公開的屬性(Attribute)及方法(Method),如下範例: 執行結果 如果我們要防止來源端存取作者屬性(Attribute)及呼叫新增文章標題方法(Method),則需透過封裝(Encapsulation)的概念來進行設計。接下來就分別說明如何封裝(Encapsulation)類別中的屬性(Attribute)及方法(Method)。 二、私有屬性(Private Attribute) 在類別(Class)中可以進行存取,而外部無法存取的屬性(Attribute)。使用方式就是在私有屬性(Private Attribute)前加上兩個底線(__),如下範例: 執行結果 從範例中可以看到,來源端無法存取到類別中的author及titles私有屬性(Private Attribute)。如果是利用Visual Studio Code來開發Python的話,在來源端物件的IntelliSense清單中就選不到私有屬性(Private Attribute),證明成功將其進行封裝(Encapsulation)。 但是Python不像其他物件導向程式語言真的把屬性(Attribute)或方法(Method)變為私有,事實上來源端還是可以存取得到。我們先透過__dict__屬性來查看類別中的屬性(Attribute),如下範例: 執行結果…
學程式助教
January 18, 2020
Python

Python多型(Polymorphism)實用教學

今天要來介紹的Python多型(Polymorphism)在物件導向設計中非常的重要,不論是設計模式(Design Patterns)或設計原則(Design Principles),都會有多型(Polymorphism)的概念。 使用多型(Polymorphism)來設計類別架構,能夠讓程式碼的相依性不會那麼高,並且透過統一的介面來彈性擴充功能。今天主要的重點有兩個部分: Python抽象方法(Abstract Method) 多型(Polymorphism) 一、Python抽象方法(Abstract Method) 要使用抽像方法(Abstract Method)的類別首先要繼承ABC(Abstract Base Class)類別,接著在抽象方法上方加上@abstractmethod裝飾詞(Decorator),並且不會有實作內容,如下範例: 由於抽象方法(Abstract Method)是抽象的,所以只要有抽象方法(Abstract Method)的類別就稱為抽象類別,是無法建立物件的,如下範例: 執行結果 錯誤訊息顯示無法實體化含有抽象方法(Abstract Method)的抽象類別。必須透過繼承(Inheritance)的類別來進行抽象方法(Abstract Method)的實作,如下範例: 執行結果 如果繼承(Inheritance)的類別(Class)沒有實作抽象類別中的抽象方法(Abstract Method),同樣視為抽象類別,也無法建立物件(Object)。範例中,FacebookLogin類別繼承(Inheritance)Login抽象類別,並且實作其login()抽象方法(Abstract Method),即可建立物件進行呼叫的動作。 所以,抽象方法(Abstract…
學程式助教
January 15, 2020
Python

Python繼承(Inheritance)實用教學

今天要來介紹的Python繼承(Inheritance)在物件導向設計中非常的重要,使用得當可以提高我們程式碼的重用性(Reusable)及維護性。 繼承(Inheritance)顧名思義,就是會有父類別(或稱基底類別Base Class)及子類別(Sub Class)的階層關係。子類別會擁有父類別公開的屬性(Attribute)及方法(Method)。 所以Python繼承(Inheritance)的概念就是將各類別(Class)會共同使用的屬性(Attribute)或方法(Method)放在一個獨立的類別(Class)中,其它的類別(Class)透過繼承(Inheritance)的方式來擁有,降低程式碼的重複性。   Python繼承(Inheritance)的重要觀念如下: 如何使用Python繼承(Inheritance) 方法覆寫(Method Overriding) 多層繼承(Multi-Level Inheritance) 多重繼承(Multiple Inheritance) 一、如何使用Python繼承(Inheritance) 在實務上開發應用程式時,隨著類別(Class)的增加,可能會發現有些類別(Class)擁有共同的屬性(Attribute)或方法(Method),如下範例: 範例中的Car及Airplane類別(Class)皆擁有drive()方法,當其有數百行程式碼時,在應用程式中重複出現是不好的且違背DRY(Don't Repeat Yourself)原則,未來這個方法(Method)有問題或邏輯改變了,就要修改好幾個地方,難於維護。 這時候就可以使用物件導向的繼承(Inheritance)設計,將共同的屬性(Attribute)或方法(Method)定義在一個類別(Class)中,而其它類別(Class)則透過繼承(Inheritance)的方式來擁有它,如下範例: 我們將Car及Airplane類別(Class)的共同方法drive()定義在一個新的Transportation類別(Class)中,並且新增一個屬性(Attribute)為color。 Transportation類別(Class)就叫父類別或基底類別(Base Class),而Car及Airplane類別(Class)就稱為子類別(Sub Class),在類別名稱的地方透過括號的方式來繼承(Inheritance),藉此擁有父類別公開的屬性(Attribute)及方法(Method),如下範例: 執行結果…
學程式助教
January 12, 2020