跳到主要內容

發表文章

目前顯示的是 2020的文章

[Scrapy教學2]實用的Scrapy框架安裝指南,開始你的第一個專案

Photo by Jeff Sheldon on Unsplash 繼 [Scrapy教學1]快速入門Scrapy框架的5個執行模組及架構 文章,瞭解Scrapy框架的5個主要模組相互之間的關係與執行流程後,本文將帶大家在Windows環境中,安裝Scrapy框架,並且提示可能會遇到的錯誤該如何解決,最後,建立屬於您的第一個Scrapy專案,來一窺其中的檔案結構。重點包含:

[Scrapy教學1]快速入門Scrapy框架的5個執行模組及架構

Photo by Štefan Štefančík on Unsplash 一般想要自動化蒐集網頁上的資料時, 普遍都會使用像BeautifulSoup或Selenium套件開發 Python網頁爬蟲來取得,但是,如果所要爬取的資料量較大,擁有複雜的邏輯處理及效率的要求,這時候就會建議使用Scrapy框架,來幫助開發人員建立一個維護性較好的Python網頁爬蟲。

[Python爬蟲教學]你該學會的Python網頁爬蟲取得網頁圖表數據方法

Photo by Markus Winkler on Unsplash 如果大家有在觀測或分析趨勢,會看到有些網頁會以圖表的方式來呈現資料,透過使用者將滑鼠移上去後,顯示每個點的數據,來提升可讀性及使用體驗,這時候,如果想要利用Python網頁爬蟲來爬取圖表上的數據,進行客製化的分析,該如何達成呢? 本文將以 Yahoo奇摩股市 的「美股大盤行情圖表」為例,帶大家了解網頁圖表的顯示原理,並且該如何利用這樣的原理,讓Python網頁爬蟲能夠取得資料。

[Pandas教學]5個實用的Pandas讀取Excel檔案資料技巧

Photo by LinkedIn Sales Navigator on Unsplash 日常生活中,不免俗的都會有需要整理大量資料的需求,而最常用的文書軟體就是Excel,這時候該如何有效讀取Excel檔中的資料,進行額外的整理及操作呢? 本文將以 政府開放資料平台-歷年國內主要觀光遊憩據點遊客人數月別統計 的資料內容為例, 利用Python的Pandas套件,來和大家分享實務上最常見的Excel讀取操作,藉此來提升資料處理的效率。

[Python爬蟲教學]善用多執行緒(Multithreading)提升Python網頁爬蟲的執行效率

Photo by Chris Spiegl on Unsplash Python網頁爬蟲的執行效率,相信是開發人員在蒐集網頁資料時所追求的,除了可以使用 GRequests 或 Asyncio 等套件打造非同步的Python網頁爬蟲外,應用 多執行緒(Multithreading)的技巧也是不錯的選擇。 所以本文想來和大家分享程序(Process)與執行緒(Thread)的差別,以及 多執行緒(Multithreading )的重要觀念,最後,實際應用在Python網頁爬蟲專案,提升執行效率。

BeautifulSoup vs Selenium vs Scrapy三大Python網頁爬蟲實作工具的比較

Photo by Prince Abid on Unsplash 網路的普及,為了要自動化的搜集資料,提升工作效率,相信Python網頁爬蟲是最常使用的方法之一,而要實作Python網頁爬蟲,最受歡迎的三大工具莫過於BeautifulSoup、Selenium及Scrapy,其中各自的主要特色以及使用時機,本文就來為大家進行簡單的分享與比較。

解析Python網頁爬蟲如何有效整合Pandas套件提升資料處理效率

Photo by Austin Distel on Unsplash 為了能夠自動化蒐集網頁上的資料,通常都會利用Python網頁爬蟲來幫忙完成,而蒐集到的資料如果想要進行排序、群組或篩選的動作,就需要花費不少的功夫來達成。 這時候,就能夠整合Pandas資料分析套件,將爬取的資料存入DataFrame資料結構,使用它所提供的方法,即可輕鬆操作其中的資料,除了提升處理資料的效率,也能夠讓程式碼更加簡潔。

[Pandas教學]掌握Pandas DataFrame讀取網頁表格的實作技巧

Photo by Windows on Unsplash 在 [Pandas教學]資料分析必懂的Pandas DataFrame處理雙維度資料方法 文章的分享中,可以得知Pandas DataFrame資料結構非常適合用於表格式 資料的儲存及處理,也因此被應用於許多的情境,而讀取網頁上的表格 (Table) 資料則是最常見的應用之一。

[Pandas教學]資料分析必懂的Pandas DataFrame處理雙維度資料方法

Photo by Slidebean on Unsplash 現在有許多的企業或商家,都會利用取得的使用者資料來進行分析,瞭解其中的趨勢或商機,由此可見,資料分析越來越受到重視,而這時候,能夠懂得使用資料分析工具就非常的重要。 在上一篇 [Pandas教學]資料分析必懂的Pandas Series處理單維度資料方法 文章中,分享了Pandas Series資料結構用於處理單維度資料集的實用方法,而本文則要來介紹Pandas套件的另一個非常重要的資料結構,也就是 DataFrame。

[Pandas教學]資料分析必懂的Pandas Series處理單維度資料方法

Photo by Myriam Jessier on Unsplash 在隨手可得的數據時代,資料分析逐漸成為顯學,利用視覺化軟體或是分析處理工具,將蒐集的資料轉變為有用的資訊,來協助使用者進行決策。 Pandas套件則是其中一種常用的資料分析處理工具,它是基於Python程式語言來建立的,非常容易使用且強大,主要應用於單維度(Series)與二維度(DataFrame)的資料處理。

[Python爬蟲教學]開發Python網頁爬蟲前需要知道的五個基本觀念

Photo by UX Indonesia on Unsplas h 網際網路的盛行,日常生活中充滿了大量的資訊,也因此越來越多的使用者會利用Python網頁爬蟲技術,來蒐集想要的資料,藉此來進行分析及應用,為了讓讀者能夠快速入門Python網頁爬蟲,本文想來和大家分享在開發前,需要知道的五個基本觀念,包含: 什麼是網頁爬蟲 網路的運作方式 網頁的基本結構 常見的套件及框架 網頁爬蟲開發流程 一、什麼是網頁爬蟲 網頁爬蟲可以把它想像成是一種網頁機器人,能夠依照特定的模式或規則,自動化擷取網頁原始碼,來進行解析取得資料,所以被大量的應用在網頁資料蒐集。 當然網頁爬蟲部一定只能使用Python來進行實作,其它像Java、C#及JavaScript等程式語言也可以,而因為Python語法簡潔及擁有許多成熟的套件與框架,所以筆者選擇Python來開發網頁爬蟲。 二、網路的運作方式 Python網頁爬蟲事實上就是模擬使用者來瀏覽網頁,這時候就需要瞭解網路的基本架構,分為用戶端(Client)及伺服端(Server)。 其中,用戶端(Client)就是使用者瀏覽網頁的裝置(例:本機電腦),當使用者點擊網頁時,也就代表請求(Request)的動作,存取該網頁連結的伺服端(Server),而伺服端(Server)接收連結得知使用者所要看的網頁後,將內容回應(Response)給用戶端(Client),如下圖: 這樣的網路運作方式就跟點餐的流程非常相似,當我們進到一間餐廳看著菜單,就像到一個網站瀏覽其中的網頁,接著,到櫃檯向老闆點餐的動作就像是看到喜歡的網頁,請求(Request)伺服端(Server)想看的網頁,最後,等待老闆烹飪完成送到餐桌上,像是伺服端(Server)端處理完成回應(Response)給使用者。 而在開發Python網頁爬蟲時,這邊有兩個重要的觀念,分別是: 請求方法(Request Method) 等待回應(Waits) 請求方法(Request Method)基本上分為四種,包含GET(查詢)、POST(新增)、PUT(修改)及DELETE(刪除),由於Python網頁爬蟲大部分皆是查詢伺服端(Server)想要存取的網頁,所以請求方法(Request Method)都是使用GET(查詢)。 另外,等待(Wait)伺服端(Server)的回應(Respons

[Django+Python網頁爬蟲教學]打造具有網頁爬蟲功能的關鍵字查詢網頁

Photo by Burst on Unsplash Python網頁爬蟲在日常生活中的應用非常普遍,用來自動化蒐集所需的資料,這時候如果能夠提供使用者一個介面,即可以依據不同的需求來爬取相應的資料,提升服務的體驗及彈性。

[Python爬蟲教學]快速搞懂AJAX動態載入網頁的爬取秘訣

Photo by LinkedIn Sales Navigator on Unsplash 在使用Python網頁爬蟲爬取網頁時,有些網頁為了提升使用體驗及維持執行效能,會使用AJAX的技術, 非同步向伺服器傳送參數,取得資料來進行顯示, 使用者不會感受到畫面有任何的閃爍或停頓,依然能夠正常的使用網頁。 不過想要爬取這種類型的網頁,點擊滑鼠右鍵檢視原始碼時,會看到滿滿的Unicode編碼資料,沒有HTML標籤,這時候要來爬取網頁時,會完全抓不到資料。 由於筆者在爬取 KKday網站 的一日遊票券時,就是遇到這樣的情況,所以想藉此來和大家分享Python網頁爬蟲該如何爬取AJAX類型的網頁,其中的開發流程如下: 分析網頁 分析AJAX回傳結果 開發Python網頁爬蟲 一、分析網頁 首先,前往 KKday網站 ,假設在搜尋的地方輸入「新竹市」進行搜尋後,在網頁左側的「所有商品類別」中,選擇「觀光旅行」下的「一日遊」,就可以查到新竹市一日遊的相關票券,如下圖: 這時候,點擊滑鼠右鍵檢視網頁原始碼時,會完全找不到網頁上所顯示的票券名稱,都是Unicode編碼,這就是典型的AJAX類型網頁,也因為瀏覽器有辦法解析,所以網頁能夠正常的顯示中文字。 為了觀察網頁載入時,網頁向伺服器發送的請求(Request),點擊F12鍵開啟開發者模式,並且在原網頁點擊F5鍵重新整理,就可以在開發者模式的Network頁籤下,看到每一個請求(Request),如下圖: 接著,就要來找哪一個請求(Request)的回應(Response)是網頁上的資料,以上圖第6個請求(Request)為例,點擊後,可以在「 Headers」 看到它的請求(Request)內容,如下圖: 而要看這個請求(Request)的回應內容,可以切換到「Preview」頁籤來檢視,如下圖: 從上圖即可看到網頁上所顯示的票券資料,也就代表如果要使用Python網頁爬蟲來發送請求(Request)時,就是要使用「Headers」頁籤下的「Request URL」網址,如下圖: 從請求網址(Request URL)可以看到其中包含了幾個查詢的條件,目前只有輸入關鍵字(keyword)及選擇商品類別(cat),其它查詢條件都沒有輸入或保留預設值,所以,可以將請求網址(Request URL)簡化為: 「https://www.k

[Python爬蟲教學]有效利用Python網頁爬蟲幫你自動化下載圖片

Photo by Soragrit Wongsa on Unsplash 圖像辨識的技術,現在已經廣泛的應用在日常生活中,舉例來說,Google相簿就有使用圖像辨識的技術,來協助使用者標記景點或人物,或是Facebook使用圖片辨識來取出圖片中的文字,來找出違反政策的貼文,改善動態消息的內容等。 而要讓機器能夠辨識出圖片中的內容,就需要有大量的圖片進行機器學習,這時候就可以利用Python網頁爬蟲的技術,蒐集網路上所需的圖片,進而輸入機器中學習。 所以本文想來和讀者分享,如何利用Python網頁爬蟲來自動化下載圖片,其中的開發流程為: 分析 圖片來源網站 爬取圖片來源網址 下載圖片至資料夾中 一、分析 圖片來源網站 本文以 Unsplash 圖片網站為例,其中包含許多種類的高解析度圖片,如下: 假設在搜尋的地方輸入car,就可以找到汽車相關的圖片,如下: 這時候可以觀察網址的地方,最後會加上使用者所輸入的查詢關鍵字,如下圖: 接著,來看一下每張圖片的HTML原始碼結構,如下圖: 可以看到,圖片標籤(img)的樣式類別(class)為「 _2VWD4 _2zEKz 」,Python網頁爬蟲就能夠依據這個 樣式類別(class)來進行定位,取得圖片。 二、爬取圖片來源網址 瞭解所要爬取的 Unsplash 圖片網站結構後,本文以Visual Studio Code,開啟Python網頁爬蟲專案資料夾,在Terminal的視窗中,利用以下的指令安裝所需的套件 : $ pip install requests $ pip install beautifulsoup4 $ pip install lxml 其中Requests套件用來發送請求給網頁,回應的結果就是使用BeautifulSoup套件爬取內容,而lxml則是支援 BeautifulSoup套件的HTML/XML解析器。 安裝完成後,建立app.py檔案,並且引用以下的模組(Module) : from bs4 import BeautifulSoup import requests import os 範例中引用的os模組(Module),提供操作檔案及目錄的方法,可以協助建立資料夾及存放下載的圖片。 為了提供一個互動的介面,讓使用者能夠輸入想要下載的圖片,可以利用Python內建的input()方法(Met

[Python爬蟲教學]7個降低Python網頁爬蟲被偵測封鎖的實用方法

Photo by Denise Jans on Unsplash 現在的網頁五花八門,其中充滿了許多有價值的資料,因此有許多的使用者都會使用 Python 網頁爬蟲的技術來進行取得,而這也衍生了可能因為過量的請求 (Request) ,導致網站的伺服器過載,而產生問題。 所以,越來越多的網站開始偵測網頁爬蟲,將其封鎖,這時候,在開發 Python 網頁爬蟲時,該如何降低被偵測到的風險呢?

[Python爬蟲教學]整合asyncio與aiohttp打造Python非同步網頁爬蟲

Photo by Campaign Creators on Unsplash 實務上開發Python網頁爬蟲,使用一般的同步處理 (Synchronous) 方式爬取大量的資料時,會發現需花費蠻久的時間,這是因為同步處理 (Synchronous) 需等待網頁回應後,才能繼續執行下一個任務,而在等待的過程中,執行緒是完全停滯的,不會去做其它的任務,所以,為了提升執行的速度,就會使用非同步處理 (Asynchronous) 來進行開發。

[Python爬蟲教學]非同步網頁爬蟲使用GRequests套件提升爬取效率的實作技巧

Photo by Zan on Unsplash 網頁相信是許多人取得訊息的主要來源,為了追蹤、分析或取得想要的資訊,Python網頁爬蟲技術 被 廣泛的使用,而如果所要爬取的資料量非常大時,效能就會變得非常的重要,而非同步(Asynchronous)處理則是用來提升效率的常用方法。

[Python爬蟲教學]學會使用Selenium及BeautifulSoup套件爬取查詢式網頁

Photo by Austin Distel on Unsplash 在多樣化的網頁中,為了避免一次載入大量的資料影響執行效能,除了可以使用分頁,或像電子商務及社群平台,透過滾動捲軸的方式動態載入資料外,另一種常見的做法,就是增加查詢的功能。

[Python爬蟲教學]解析如何串接Google Sheet試算表寫入爬取的資料

Photo by William Iven on Unsplash 雲端相信大家都不陌生,日常生活中有許多的應用程式,都是運行在雲端平台上,讓使用者可以不受地點的限制,只要能夠連上網路,就可以使用雲端上的服務。

[Python爬蟲教學]活用openpyxl套件將爬取的資料寫入Excel檔案

Photo by UX Indonesia on Unsplash 在開發 Python 網頁爬蟲時,除了可以將取得的資料儲存在資料庫外,有時候,也會想要匯出成 Excel 檔案,進而使用其中的圖形化功能,來製作統計圖表,有效率的進行資料分析。