fbpx
Python初學程式程式新手

Python初學總整理 第9講:Numpy函式庫

嗨,大家好,我是Teresa,這集想來和大家介紹在資料分析、機器學習領域中很經典、必定會用到的函式庫-Numpy,目的主要是做數據的處理,但內容不會涉及統計的理論和延伸,只會做一些基礎的功能介紹和簡易的實作程式碼提供給大家。 什麼是Numpy? Numpy是一個免費且開源的Python函式庫,專門用來處理陣列,由Travis Oliphant於2005年創建,但Numpy的前身是Numeric,是由Jim Hugunin和其他協作者共同開發,Numpy結合另一個同性質程式庫Numarray的特色,並加入了其他擴充功能。原始碼在這個網站中:https://github.com/numpy/numpy 為什麼使用Numpy? 在Python中,我們也有list來存放清單,但其實處理速度很慢,Numpy處理陣列的速度比list快50倍。原因是Numpy會將資料儲存在記憶體中的一個連續位置,可以高效率的找到他們的位置、並使用資料。 安裝Numpy pip install numpy import numpy #測試程式碼 arr = numpy.array() print(arr) #如果覺得每次都要輸入numpy很麻煩,在匯入的時候可以輸入: import numpy as np arr =…
Teresa
November 11, 2020
Python初學程式程式新手

Python初學總整理 第8講:Matplotlib套件

嗨~各位好,我是Teresa,這集想要和大家介紹Python中實用的套件-Matplotlib,原因是如果心中有個想法想要去實踐,雖然有資料,但需要說服夥伴的話,將你手中擁有的數據轉為圖表是很重要的,這樣一來,你說的話有說服力,觀看者也能簡單易懂。那我們就開始吧! 什麼是Matplotlib? Matplotllib是Python的視覺化套件,可將資料視覺化,也可以稱做繪圖庫,可以和NumPy一起使用。它是由約翰.亨利所創造的,不但開源,且各個平台間也具相容性。Matplotllib的代碼庫在此 github。 如何使用Matplotlib? 要開始使用Matplotlib,就如同其他模組和套件一般,要先安裝並匯入。 pip install matplotlib #安裝 Matplotlib import matplotlib import matplotlib.pyplot as plt #匯入Pyplot 套件並命名為plt 安裝成功後就可以畫圖囉! 繪製 x 和 y點 import…
Teresa
November 11, 2020
直播筆記

Python網頁爬蟲—開發你的第一個網頁爬蟲

任務:爬取INSIDE硬塞網路趨勢觀察網站的文章標題和發布日期 第一步驟:安裝3個套件 request:發送請求到伺服端 beautifulsoup:解析伺服端回傳的網頁內容,也就是網頁原始碼。裡面內建的html解析套件,所分析出來的網頁原始碼有時候沒那麼準確,所以建議大家用lsml套件 lxml:解析xml、html原始碼的強大套件,解析出來的內容相對準確 第二步驟:網頁內容html原始碼的分析 在要爬取的地方按下滑鼠右鍵>檢查,chrome瀏覽器就會開啟開發人員工具,當你滑鼠停在哪邊它就會變色,這就是你在網頁上的位置 要爬取「INSIDE硬塞網路趨勢觀察網站」文章標題:它的網頁原始碼是h3,它的class是post_title,那等下要爬取時就是用h3這個html的標籤,而且它的class是post_title,這樣就可以定位到這個網頁的所有文章標題 要爬取「INSIDE硬塞網路趨勢觀察網站」發布日期:它的位置是hli的標籤,它的class是post_date的標籤,所以等下定位的時候,就是利用這個方式進行定位 第三步驟:以visual studio code為例開發網頁爬蟲 建立demo的資料夾 在資料夾底下建立scraper.py的檔案(python的檔案) 引入所需要的套件: beautifulsoup request:發送請求到網頁伺服端 get:去查詢網址的網頁內容,括號內寫入要傳的網頁網址,發送請求給伺服端後,它就會把這個網址的網頁內容回傳給我們,所以回傳給我們就要利用一個變數把它接起來(response) 用print的方式來看一下這個網頁的內容➡️回傳html原始碼,上面都帶有資料 第四步驟:把資料丟到beautifulsoup裡面請它幫我們解析 建立一個beautifulsoup套件,把剛剛所得到的網頁原始碼,丟給它來建立一個soup物件,有這個soup物件我們就能利用它來進行元素的定位。beautifulsoup要指定一個解析器來幫助它解析html原始碼,所以後面要加lxml 【爬取文章標題】 首先要取到一整頁文章的標題,所以就可以用find取得文章的標題,丟給它建立一個soup套件。在第二步驟有看到這個網頁上的標題標籤是h3,class是post_title的類別,同樣用個變數接起來(title)。➡️取得一個文章標題。(若不想要這些html的標籤,就可以用beautifulsoup的getText的方法把html的標籤給去掉) 如果想要抓到多篇文章,就要寫find_all,找到所有只要標籤是h3、類別是post_title的標題,這時候print出來的東西➡️是一個串列包含多個文章,所以要用for迴圈的方式來讀取每一個標題的元素,再一一利用getText的方法把html的標籤給去掉(不喜歡空白可以用strip把空白清掉)➡️爬取所有文章標題 【爬取發布日期】…
amyamy
November 3, 2020
直播筆記

網頁爬蟲五個基本觀念

網頁爬蟲是網頁機器人,可以自動化模擬使用者,依照特定的模式與規則,爬取網頁的背後原始碼,就可以解析取得想要的資料,不一定要使用python才能實作,其他像java、C++、javascript,也可以開發,但python的語法比較簡潔,也有比較成熟的框架或套件可以使用,所以大部分通常使用python來開發。 網路的架構主要分用戶端(電腦、手機、平板)和伺服端。比如說,在瀏覽博客來網頁時,通常會點擊網頁來了解書本詳細內容,點擊動作背後會請求網址,這個網址就會回傳博客來伺服器,博客來收到這段網址的時候就會知道這個使用者想要看的書本內容是哪個網頁,它收到後就會開始處理,把網頁的原始碼內容回傳給用戶端,用戶端經過瀏覽器解析來顯示我們看到網頁的樣子。 兩個開發網頁爬蟲重要觀念:請求方法、等待回應 有兩個開發網頁爬蟲需要特別注意的地方,第一是請求方法,第二就是等待回應,用戶端如果要看網頁就是請求一個網址到伺服端,那請求方法分成:get(查詢)、post(新增)、put(修改)、delete(刪除),因為開發網頁爬蟲時是想查詢這個網址的網頁內容是什麼,通常都是使用get(查詢)來跟伺服端溝通。然後就是等待回應,要特別注意的地方是,伺服端不會馬上回應,會等待一些時間,如果等待回應的機制沒有處理好就開始進行爬取,可能在爬取時爬不到任何東西,可能是伺服端還沒處理完,原始碼也還沒到用戶端,所以在爬取時就爬不到任何東西,所以等待回應機制非常重要,通常有三種等待機制:sleep(強制等待)、implicit wait(隱式等待)、explicit wait(顯示等待)。sleep(強制等待)就是強迫網頁爬蟲暫停一定秒數;implicit wait(隱式等待)就是設定最長等待時間,但若伺服端提早處理完成,網頁爬蟲就不會等滿時間,直接往下執行;explicit wait(顯示等待)就是明確指定等待網頁上某個區塊、元件只要網頁原始碼處理完成,就算其他還沒載入完成,但要等的那個區塊已完成就會往下執行。這三個等待機制可以視情況來使用,若三個等待機制能處理適當,會提高爬蟲爬取效率。 三個常見的套件及框架:beautiful soup、selenium、scrapy 伺服端回應給用戶端的網頁原始碼是由許多標籤和標籤所形成的元素構成的,瀏覽器會知道它的擺放位置,是因為網頁是個階層結構。但要爬取的資料不是標籤,這時候就需要套件或框架來協助定位元素和去掉標籤。基本上使用python來開發網頁爬蟲時常見的有三種套件,分別有beautiful soup、selenium、scrapy。 beautiful soup對HTML及、XML的解析非常友善,容易入門,但只適用於靜態類型的網頁。現在有許多社群平台(ex. FB、IG)、電子商務網站,通常會透過滾動捲軸的方式讓網頁載入更多資料,beautiful soup就無法達到。這種情形就需要搭配selenium套件來進行爬取,因為selenium套件被用來設計進行網頁自動化測試,所以可以很實際模擬人類操作瀏覽器的動作,例如:開啟瀏覽器、滾動捲軸、輸入帳密或是點擊查詢按鈕等等,要爬取這樣的網站的話就非常適合搭配selenium套件進行操作,它最大特色是可以搭配javascript,所以才可以自動化滾動捲軸,讓網頁自動化載入更多的網頁內容進行爬取。scrapy框架比較適合大型爬蟲專案,因為他能夠爬取大量資料、具有非同步的功能,速度比較快、有效率,對於初學者來說會需要一段時間來學習。 最常見的網頁爬蟲開發流程 謝謝這週二下班讀書會的講師Mike,以下是他提供的相關學習資源:
amyamy
October 23, 2020
Python初學程式程式新手

Python初學總整理 第6講:爬蟲應用(下)

前言 哈囉,大家好,我是Teresa~爬蟲小專題的進度是上一集成功將Facebook的貼文載入,這集主軸就在蒐集貼文中有關於成效的資訊了。 其實在Google上搜尋相同的爬蟲目標,在各個網站中有很多程式碼可以參考,但Teresa真的是各種嘗試,卡了很多bug,挫折重重😰,還好後來隊友有幫助我修改程式碼,但還是希望總有一天能自己成功完成一個小專題。 上集回顧...... 爬蟲目標 抓取Facebook的貼文,展開貼文中所有留言與分享、表情符號數量,了解貼文的成效 達成方法 一、策略拆解 假設我想要手動取得這些資訊的話,會做出的行為有: 打開 Chrome 瀏覽器 開啟 Facebook 頁面並登入 點擊想分析的 Facebook 社團或粉絲專頁 將該社團或粉絲專頁的貼文載入 將貼文的留言展開 蒐集貼文的資訊(按讚數、分享次數以及留言數) 統整資訊 如何開啟Chrome瀏覽器、登入Facebook頁面、將貼文載入等前四步驟請參見Python初學者筆記EP. 5_爬蟲應用(上) 本集開始!…
Teresa
October 21, 2020
Python初學程式程式新手

Python初學總整理 第5講:爬蟲應用(上)

前言 自從上集學完函數和迴圈之後,覺得光只有學習,都可以理解好像沒有什麼問題,但如果要應用的話,就會不知道從何開始,因此Teresa開始想要嘗試寫個小作品看看,因此之後 Python初學者學習筆記會朝著實作的方向前進,當成自我練習還有紀錄。 爬蟲介紹 提到 Python,最經典且絕對不能漏掉的應用莫過於爬蟲了,那什麼是爬蟲呢? ---它是一種可以「自動」抓取網頁資訊的程式 現在資訊的變動快速,當在 Google等瀏覽器上搜尋任一關鍵字,搜尋到的結果都成千上萬筆,但人一天所擁有的時間終歸只有24小時,想要處理一件事的時候,很難將前置資料調查得盡善盡美,且當相同的動作必須重複上百遍、上千遍的時候,必定會又累又無趣。這時候如果有「自動化」程式的幫助,處理事情的效率便會提高。對於爬蟲的應用可以到這個網站看看。 爬蟲目標 抓取 Facebook的貼文,展開貼文中所有留言、分享數以及表情符號數量,了解貼文的成效 達成方法 一、步驟拆解 Teresa曾聽會寫程式的人說過:「程式只是工具,想要開始寫程式要先知道如何解決問題,如果不知道問題的解法,是沒辦法將解法化為程式的。」 如果我今天經營Facebook社團或粉絲專頁,我會想要了解每篇發出去的貼文成效如何,除了一些後台可得到的資訊外,貼文的互動率是最可以反應出成效的方式了。而在Facebook上貼文與互動率有關的指標不外乎就是:按讚數、分享次數以及留言數。後續的貼文分析,包含是不是因為主題較吸引人或是文案寫得較好等影響該篇貼文的互動率的評估指標,就不在此深究。 因此,假設我想要手動取得這些資訊的話,會做出的行為有: 打開 Chrome 瀏覽器 開啟 Facebook 頁面並登入 點擊想分析的 Facebook…
Teresa
October 13, 2020
Python初學程式程式新手

Python初學總整理 第4講:Python條件、迴圈與函數

哈囉,大家連假過得還好嗎?我是Teresa,初學者學習筆記更新到第四集囉~EP. 3 介紹了Python中常見的資料型態以及運算子,這集要來整理的是條件語句、迴圈以及函數的概念,讓我們一起看下去吧~ 條件語句 Python中的邏輯條件(比較運算子請詳見EP. 3)可以通過多種方式使用,最常見的方式是 if 語句和迴圈 # if 語句 a = 37 b = 20 if a > b: #如果此條件為真 print( “ a…
Teresa
October 5, 2020
Python初學程式程式新手

Python初學總整理 第3講:Python資料型態和運算子

哈囉,大家好,我是Teresa,EP. 2統整了如何建置Anaconda開發環境、簡介Jupyter Notebook介面,也以簡單的程式碼示範了Python在執行語法的注意事項:縮排、變數以及註解。EP. 3 要整理的是資料型態以及運算子,讓我們一起看下去吧~同樣也可以跟著簡單範例操作看看哦~ 資料型態 為什麼了解資料型態很重要?在程式語言中,變數可以儲存不同類型的資料型態,不同類型的變數可以處理不同的事情。雖然Python沒有宣告變數的指令,但在預設的情境下,Python還是會默認變數的資料型態。如果想要知道某變數的資料型態是什麼的話,可以用 type( ) 函數。 a = “ Teresa” print(type( a )) 雖然Python會默認變數的資料型態,但還是可以用函數指定資料型態,舉例如下: 以函數建立變數 資料型態 直接將值給變數 x = str(“ My…
Teresa
September 26, 2020
Python初學程式程式新手

Python初學總整理 第2講:Python開發環境

嗨,大家好,我是Teresa~EP. 1 簡單介紹了Python的簡介、優缺點以及可應用領域之後,EP. 2 要來建置我所選擇的開發環境:Anaconda、編輯器Jupyter notebook 以及 Python在執行語法時的注意事項,大家可以一起操作看看哦。 建置開發環境 我所選擇的開發環境是Anaconda套件組,原因是Anaconda就像是Python的資訊包,裡面除了Python本身,還有許多常用的模組、套件還內建Jupyter Notebook編輯器。這個開發環境也是免費且開源的,且支援Windows、MacOS、Linux平台。 安裝Anaconda Step 1:瀏覽器開啟Anaconda 官網,點選Download Step 2:下載檔案分為Python 3.x及64位元、32位元兩種版本,可以先看電腦的配置再依照需求點選適當版本 Step 3:點選下載好的<Anaconda3-2020.07-Windows-x86_64.exe>開始安裝 Step 4:點選Next > Step 5:在版權頁面點選…
Teresa
September 21, 2020
Python初學程式程式新手

Python初學總整理 第1講:Python簡介

前言 2020年TIOBE程式語言排名,第一名是Java,第二名是C,而第三名的Python是從2019年開始超越C++,也就是說Python成長快速且越來越熱門。 資料來源取自:HelloGitHub 早期的程式語言為了讓電腦看懂並發揮它十足的能力,讓程式語言變得艱澀難懂。 Python的出現受到許多人的喜愛,到底Python有什麼吸引人的特點呢?它又能拿來做什麼呢?讓我們繼續看下去吧! Python簡介 Python的創始人是Guido Van Rossum,在1989年聖誕節期間的阿姆斯特丹,他為了打發時間,決定開發一個新的程式,來做為ABC語言的後繼,有趣的事情是之所以會用Python(原為蟒蛇之意)取名,是源自於他喜歡BBC電視劇——Monty Python馬戲團。 ABC語言是一種程式語言與編程環境,語言的目的是在教導非專業的程式設計師學習如何開始寫程式,Python的創始人曾為ABC系統工作了好幾年,以他的視角來看,ABC語言既優美又強大。但他為什麼要另外開發Python呢?他認為ABC語言沒有成功的原因,追根究柢是因為程式碼非開放,因此他決定Python要避免這樣的錯誤,以現今的結果來看,開發過程漸趨透明,社群也對開發進度做出了極大的貢獻,這樣的決定確實取得了非常好的成果。 Python版本: Python v2.7(2020年結束維護): 實現完整的垃圾回收且支援Unicode,可以將未來不會被存取的程式回收,歸還記憶體空間,減少程式的錯誤外,也能減輕程式員的負擔。 Python v3.5(2008年12月3日發布) Python v3.8(最新版本): 從3.0開始Python的原始碼並不完全相容,因此如果從現在開始學Python的話,可以直接從最新的版本開始學。但最重要的事情還是:了解自己想要用程式解決什麼樣的問題,找到相對適合的程式語言。 Python特點 優點: 簡單易學易用:Python語法簡單易讀,就像閱讀通用的語言,因此當程式出現錯誤時,大部分只要專注於解決問題的邏輯本身,可以省下檢查語法錯誤的時間,但又不會喪失Python對語法的嚴格要求。 免費開源:Python開放原始碼,可以自由的copy套件、閱讀、修改原始碼,把前人的成果用於新的成品中。 可移植性:由於Python開源的特性,它不需要經過修改就能在不同平台(Windows、MacOS、Linux……)上運行。…
Teresa
September 15, 2020