跳到主要內容

文章

目前顯示的是 十月, 2020的文章

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

Photo by UX Indonesia on Unsplash 網際網路的盛行,日常生活中充滿了大量的資訊,也因此越來越多的使用者會利用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)的回應(Response)也非常重要,由於Python網頁…

[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.kkday.com/zh-tw/product…