Django熟練後會發現基本上都是在針對urls,views,templates去做修改,也就是MTV架構中的T (Templates)和V (Views),而M (Model)是資料庫的部分,未來會在其他的章節內提到,那我們就開始如何用GET方法取得網頁輸入資料並運行Python腳本
對Django比較不熟的朋友,可以先閱讀以下幾篇:
Table
修改Django內templates設定:
首先建立一個html頁面,讓使用者可以輸入網址,接下來會利用這網址進行爬蟲

home > templates > simple_crawl.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<!DOCTYPEhtml> <htmllang="en"> <head> <metacharset="UTF-8"> </head> <body> <p>要爬取的網頁是_POST:</p> <form action="/home/POST_crawl/"method="post">{% csrf_token %} 輸入網址:<input type="text" name="title"> <br> <input type="submit"value="送出"> </form> </body> </html> |
再來建立一個爬蟲爬取完頁面的呈現html,可以看到爬蟲將網址內所有h2的頁面都抓回來,並在網頁上呈現

home > templates > simple_crawl_result.html
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h2>您爬取的網頁h2內容如下:</h2> {%for key in post %} <p> {{key}} </p> {%endfor%} </body> </html> |
修改Django內urls設定:
可以看到當path為’ ‘時會去找view裡面的simple_crawl,當path為’POST_crawl/’時會去找view裡面的POST_crawl
home > urls.py
1 2 3 4 5 6 7 |
from django.urls import path from.import views urlpatterns = [ path('',views.simple_crawl), path('POST_crawl/',views.POST_crawl), ] |
修改Django內views設定:
可以看到 def POST_crawl(request): 將在’simple_crawl.html’頁面內獲得的網址,利用request.POST[“title”]來獲取網址,並進行爬蟲後將結果存在post內。
home > view.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
from django.shortcuts import render from django.shortcuts import render,HttpResponse from bs4 import BeautifulSoup import requests def simple_crawl(request): return render(request, 'simple_crawl.html') def POST_crawl(request): url = request.POST["title"] res = requests.get(url) soup = BeautifulSoup(res.text, "html.parser") post = [] H_tag = soup.find_all('h2') for h in H_tag: post.append(h.text) return render(request, 'simple_crawl_result.html',locals()) |
最後就是運行指令:
python manage.py runserver
Django教學相關的延伸閱讀:
- [Django教學] 5分鐘快速入門,打造一個簡單Python網頁
- [Django教學] 如何在Django網頁上運行python腳本
- [Django教學] 取得Django網頁資料並運行Python腳本
- [Flask教學] 簡單的GET和Post方法取得Flask網頁資料
基本上這就是一個簡單的GET方法取得網頁輸入資料並運行Python腳本,感謝收看,有關Max行銷誌的最新文章,都會發佈在Max的Facebook粉絲專頁,如果想看最新更新,還請您按讚或是追蹤唷!