Image for post
Image for post

在閱讀本文之前,請先確保已經閱讀過下面這篇文章,了解Django的基本運作狀況。

Repo:

先備知識:

經過一連串的測試,終於把這個爬蟲做成Django版本了。建立Django專案後,主要會修改到4個檔案:

加入APP到INSTALLED_APPS、設定templates資料夾目錄、修改LANGUAGE_CODE、TIME_ZONE、設定static資料夾目錄

幾乎所有外部程式都在這個views.py裡面執行,通常會包含多個函式。

寫成函式的原因是因為等等的urls.py在進行網址連接時,第二個參數必須是函式。我們的程式也都是透過第二個參數函式執行

處理APP網站執行時的網址path()

位於templates底下。這個檔案作為程式啟動的首頁,裡面會有表單輸入功能,會將其存成變數,在views.py中執行。

位於templates底下。這個檔案是作為爬蟲程式執行完顯示的結果頁面。

Django的模板讀取變數的語法為:{{變數名稱}}

所以如果我要在template資料夾中的html檔案顯示python處理的程式內容要用:

實作

於manage.py所在位置輸入下列指令產生templates資料夾

settings.py加入Application應用程式

設定templates路徑讓Django能讀取到模板(.html)檔案

至於main函式跟POST_crawl函式的內容是什麼,我們等等會提到。

從下面的程式我們可以看到,main函式就是開啟index.html、POST_crawl就是透過selenium進行職缺搜尋,保存結果後,將結果呈現於result.html。

完整的views.py請參考以下

index.html

其實就是基礎的html表單格式,需要注意的是form action的部分。我們採用/POST_crawl/,與前面urls.py當中的path(‘POST_crawl/’,POST_crawl),是同一個部分。

method採用post進行傳送。

{% csrf_token %}則是django用來處理post的語法。

輸入職缺名稱後方有一個name=”title”的部分是讓我們在views.py當中,讀取職缺名稱的變數

result.html

{% for job in text %}指的是我在views.py中有一個變數text,用來保存職缺,透過這個for迴圈讀取出所有內容,保存成job變數

{{job}}搭配<br>,可以將所有的內容顯示在網頁當中,<br>讓文字跳到下一行,而不會產生一片混亂的情形

{{ % endfor %}}代表迴圈結束

Written by

Machine Learning / Deep Learning / Python / Flutter cakeresume.com/yanwei-liu

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store