07 Python Django 教學10 所有文章

[Django教學] 取得Django網頁資料並運行Python腳本

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

修改Django內templates設定:

首先建立一個html頁面,讓使用者可以輸入網址,接下來會利用這網址進行爬蟲

django_get_pythonscript
django_get_pythonscript
home > templates > simple_crawl.html
<!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的頁面都抓回來,並在網頁上呈現
django_get_pythonscript2
django_get_pythonscript2
home > templates > simple_crawl_result.html
<!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
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

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教學相關的延伸閱讀:

基本上這就是一個簡單的GET方法取得網頁輸入資料並運行Python腳本,感謝收看,有關Max行銷誌的最新文章,都會發佈在Max的Facebook粉絲專頁,如果想看最新更新,還請您按讚或是追蹤唷!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *