跳到主要內容

文章

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

[Python爬蟲教學]整合Python Selenium及BeautifulSoup實現動態網頁爬蟲

Photo by LAUREN GRAY on Unsplash 相信大家都知道,取得資料後能夠進行許多的應用,像是未來的趨勢預測、機器學習或資料分析等,而有效率的取得資料則是這些應用的首要議題,網頁爬蟲則是其中的一個方法。 網頁爬蟲就是能夠取得網頁原始碼中的元素資料技術,但是,有一些網頁較為特別,像是社群平台,需先登入後才能進行資料的爬取,或是電商網站,無需登入,但是要透過滾動捲軸,才會動態載入更多的資料,而要爬取這樣類型的網頁爬蟲,就稱為動態網頁爬蟲。 該如何實作呢? 本文將使用 Python Selenium 及 BeautifulSoup套件 來示範動態網頁爬蟲的開發過程,重點包含: BeautifualSoup vs Selenium 安裝 Selenium 及 Webdriver 安裝 BeautifulSoup Selenium get() 方法 Selenium 元素定位 Selenium send_keys() 方法 Selenium execute_script 方法 BeautifulSoup find_all() 方法 BeautifulSoup getText() 方法 一、 BeautifualSoup vs Selenium BeautifulSoup套件 相信對於 開發 網頁爬蟲的人員來說,應該都有聽過,能夠解析及取得 HTML 原始碼各個標籤的元素資料,擁有非常容易上手的方法 (Method) ,但是,對於想要爬取 動態 網頁資料來說,則無法達成,因為 BeautifulSoup套件 並沒有模擬使用者操作網頁的方法 (Method) ,像是輸入帳號密碼進行登入或滾動捲軸等,來讓網頁動態載入資料,進行爬取的動作。 所以,這時候,就可以使用被設計於自動化測試的 Selenium 套件,來模擬使用者的動作,進行登入後爬取資料或滾動卷軸,並且能夠執行 JavaScript 程式碼,這些就是 Selenium 與 BeautifulSoup套件 最大不同的地方。對於開發 Python 動態爬蟲來說,就可以結合 Selenium套件 以上的特點,讓網頁動態載入資料後,再利用 BeautifulSoup套件簡潔的 方法 (Method) ,將所需的資料爬取下來。 本文就是利用這樣的概念,利用 Selenium 套件登入 Facebook 後,前往

[Django教學18]善用Django Filter來快速建構多條件的查詢功能

Photo by Nathana Rebouças on Unsplash 在數據爆炸的時代裡,許多的網站、社群平台及資訊系統等,擁有了大量的資料,為了要精準的找到符合所需的資料來進行分析、處理或存檔,這時候就非常需要仰賴查詢的功能,提供適當的條件來讓使用者進行資料篩選。 使用 Python 的 Django 框架來進行網站開發,想要提供這種多條件的查詢功能,則可以使用 django-filter 套件,它是一個能夠基於資料模型 的 欄位, 動態依照條件來 進行資料集的篩選,除了能夠 簡化 在檢視函式 (View Function) 中撰寫大量的查詢語法,也提升了開發效率。 所以本文將利用 django-filter 套件,來建置多條件的電影查詢功能,來示範它的使用方式。其中的實作包含: 安裝 django-filter 建立資料模型 (Models) 建立過濾器 (Filters) 建立檢視函式 (Views) 建立樣板 (Templates) 客製化過濾器 一、安裝 django-filter 首先,利用以下的指令來安裝 django-filter : $ pip install django-filter 安裝成功後,開啟 Django 專案中的 settings.py 檔案,在 INSTALL_APPS 的地方,加入 django-filters ,如下範例: INSTALLED_APPS = [     'django.contrib.admin',     'django.contrib.auth',     'django.contrib.contenttypes',     'django.contrib.sessions',     'django.contrib.messages',     'django.contrib.staticfiles',     'movies.apps.MoviesConfig',     'django_filters', ] 二、建立資料模型 (Models) 本文所使用的資料模型,如下範例: from django.db import models class Movie(model

[Django教學17]Django專案整合Amazon S3雲端服務5步驟就上手

Photo by Christian Wiediger on Unsplash Amazon 相信大家都知道,是一個非常大的電商平台,同時,也提供了許多的雲端服務,常見的像儲存服務 (S3)、 虛擬伺服器 (EC2) 及運算服務 (Lambda) 等,讓全世界的開發人員,透過整合 Amazon 的雲端服務,來提升應用程式的彈性及效能。 所以本文以 [ Django 教學 9 ] 6 個步驟搞懂 Django 上傳圖片的功能 部落格文章為基礎,分享如何將 Django 專案中的靜態檔案,如 JavaScript、CSS 及 Image (圖片)檔等,儲存至 Amazon S3 服務,讓 Django 專案有較佳的儲存彈性,而不會隨著靜態檔案的增加,使得專案無限的擴張。其中的整合步驟包含: 建立 Amazon S3 Bucket 建立 Amazon IAM 安裝 django-storages 儲存 Django 的上傳檔案到 Amazon S3 儲存 Django靜態檔案 到 Amazon S3 一、建立 Amazon S3 Bucket 在開始進行實作前,需事先到 AWS 管理主控台 註冊帳號,首頁如下圖: 點擊「建立新帳戶」,按照步驟填寫相關資料即可。建立成功且登入後,就可以看到如下圖的畫面: 接著在「尋找服務」的地方就可以查詢所需的 Amazon 服務,所以輸入 S3 就可以找到,如下圖: 點擊後,會看到 Amazon S3 服務的首頁,可以進行相關的設定及操作。首先,要建立一個儲存體,就像儲存資料一定要先建立一個資料庫一樣,選擇「建立儲存體」,如下圖: 輸入儲存體的名稱及選擇「 us-west-2 」區域,剩下的保留預設值,點擊右下角的「建立儲存體」按鈕即可,如下圖: 建立成功後,就可以在 Amazon S3 的首頁看到剛剛所建立的儲存體,如下圖: 接下來,就要設定這個 Amazon S3 儲存體的存取權限。點擊儲存體的名稱,並且切換到「許可」頁籤下的「 CORS 組態」,如下圖: 貼上範例中的以下 CORS 組態: <?xml version="1.0" encoding="UTF-8"?> <CORSConfiguration> <CORSRule>     <Allowed

[Django教學16]建構Django網站該知道的Email寄送方式

Photo by Austin Distel on Unsplash 相信大家在使用各大網站時,都會收到各式各樣的電子郵件訊息,像是註冊成功、限時優惠活動、新產品推出或登入通知等,可見發送電子郵件功能在網站與使用者的溝通上扮演非常重要的角色。 使用 Python 開發網站時,想要在 Django 框架中加入電子郵件的服務,該如何實作呢?本文將以 [ Django 教學 8 ] Django UserCreationForm 實作網站登入驗證及註冊功能分享 文章為範例,在註冊成功時,傳送電子郵件通知使用者。其中的重點包含: Django Email SMTP設定 Django Email 寄送方式 Django Email 樣板 客製化 一、 Django Email SMTP 設定 在進行實作前,需先利用寄件者的 Gmail 帳號取得應用程式的 Gmail 密碼,否則任何應用程式透過 Gmail 進行郵件傳送時,會被認為不安全而被 Google 封鎖,而取得的步驟可以參考 [ Python 實戰應用] Python 寄送 Gmail 電子郵件實作教學 文章的第二節。 要讓 Django 所建置出來的網站擁有寄送電子郵件的服務,就需要設定 SMTP 傳輸協定, 而本文將 使用 Gmail 所提供的 SMTP 伺服器來進行傳送。 開啟 Django 專案中的 settings.py 檔案,增加以下的 SMTP 設定: # SMTP Configuration EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = 'smtp.gmail.com' #SMTP伺服器 EMAIL_PORT = 587 #TLS通訊埠號 EMAIL_USE_TLS = True #開啟TLS(傳輸層安全性) EMAIL_HOST_USER = 'example@gmail.com' #寄件者電子郵件 EMAIL_HOST_PASSWORD = '****' #Gmail應用程式的密碼 設定完成後,當 Django 網站要寄送電子郵件時, Gmail 的 SMTP

[Django教學15]Django連接PostgreSQL資料庫手把手教學

Photo by Matthew Guay on Unsplash 大家在使用 Python 的 Django 框架 來建置網站時,預設會提供 SQLite 輕量資料庫來進行開發,通常適用在規模不大的小型應用程式上,但是,隨著網站功能的擴大或用戶數的增加,就會需要使用像 PostgreSQL、MariaDB、 MySQL 及 Oracle 等企業級的資料庫,來提升資料的存取效能,好消息是,這四家資料庫 Django 官方皆有支援。 所以本文將以 PostgreSQL 資料庫,來示範如何在 Django 框架中,將預設連接的 SQLite 資料庫,改為 PostgreSQL 資料庫,讓 Django 所建置出來的網站,能有較佳的資料處理。其中主要的步驟包含: 安裝 PostgreSQL 建立 PostgreSQL 資料庫 設定 Django 連接 PostgreSQL 一、安裝 PostgreSQL 首先,前往 PostgreSQL 官方下載 網站,如下圖: 依照作業系統來下載安裝檔即可,本文將以 Windows 作業系統為例進行說明。開啟安裝檔後,可以看到如下圖的畫面: 安裝過程基本上都保留預設值,並且下一步就好。其中,有一個步驟會需要設定 PostgreSQL 的密碼,如下圖: 設定完成,點擊下一步來設定 Port 號,這邊同樣保留預設值,如下圖: 經過一段時間的安裝後,會看到設定完成的畫面,如下圖: 點擊 Finish ,接著在下拉選單中選擇 PostgreSQL ,如下圖: 點擊下一步,在 Database Server 的地方,選擇最新版的 PostgreSQL 資料庫伺服器,如下圖: 最後,勾選 Skip Installation ,如下圖: 接著,點擊 Finish 就 完成 PostgreSQL 的安裝了。 二、建立 PostgreSQL 資料庫 PostgreSQL 安裝完成後,接下來就可以為 Django 專案建立資料庫,來儲存專案所需的資料。 在剛剛的 PostgreSQL 安裝過程中,有幫我們安裝了一個 pgAdmin 工具,讓開發人員能夠有效率的進行 PostgreSQL 資料庫操作。 開啟的方式除了在 Windows 開始的地方搜尋 pgAdmin 關鍵字外,也可以在安裝目錄