iT邦幫忙

0

Python Flask 跟 使用dreamweaver開發的網站的疑惑

最近正在學習Python,剛好有一小部份開始介紹到Python Flask上傳到heroku,但開始產生了一個小問題:

感覺起來,用Python 去寫一個網站,跟 我用dreamweaver把網頁寫一寫再用FTP上傳上去,那後者不是會比較簡單一點嗎? 因為顯示出來的結果不是都一樣? 如果是用Python去寫網頁,有什麼是比較實際的考量嗎??例如說安全性或是什麼之類的嗎?

** Python Flask ** 這個目前我只學習了2天,所以如果我問的這個問題感覺被冒犯了,希望能請見諒,因我想要知道的是,這一塊是否有值得再繼續鑽研

看更多先前的討論...收起先前的討論...
ckp6250 iT邦好手 1 級 ‧ 2021-05-21 10:59:20 檢舉
自用或家用的話,dreamweaver 還可以,
若是要商用或將來想從事程式設計工作,就不太合適。
Python 一百行可以達到的,dreamweaver 也許要一千行,這就是差異啊
還有後面的維護問題,你看一百行容易找出問題還是看一千行容易找出問題
哇哩~DW還有人在用

我都改用VS跟code好多年了

DW寫出來的HTML,跟WORD另存成HTML一樣可觀
裡面一堆TAG,都是可以省略(壓縮)掉
Python的程式確實是可以簡化得非常非常的多,但這樣我更好奇了,那學的PHP 不就可以丟了?!!!!
wrxue iT邦好手 1 級 ‧ 2021-05-21 11:19:47 檢舉
好久沒看到DW了 有必要為了上傳比較簡單(我實際上也不知道到底哪個比較簡單),用其他東西來換嗎?(維護性等等),對我來說,上傳容不容易一直都不在考量範圍內
寫PHP還要裝http server,而python開箱及用啊啊,還能直接把環境包到requirements.txt 裡~太贊了吧
上傳?

我就算是用linux做伺服器,用windows+code開發,只要弄個winscp+SSH,寫網頁"全端"就跟在自己的電腦上一樣簡單

上傳?很久沒用過了(十幾二十年前寫LAMP時才需要用FTP上傳 )
PHP不用丟啊,還那麼多後端在apache/nginx上跑,除非你們決心用FLASK / Django做後端,不然真的沒有一定要誰把誰拋棄的理由

至於在apache / nginx 上不能跑python ? 我經常在用也很好用耶
froce iT邦大師 1 級 ‧ 2021-05-21 11:40:04 檢舉
等一下...
DW不是拿來寫前端的嗎?怎麼和flask這種後端框架比?

> 寫PHP還要裝http server,而python開箱及用啊
沒有吧,我django弄完還要弄uwsgi、前面還有nginx...
php用fpm反而比較簡單。XD
我最初會想要開始學python 原因是想要學爬蟲,而先在網路上看了爬蟲的相關技術,大家都講python,所以才開始看Python,也因為python的爬蟲覺得學得還蠻上手的,所以開始再繼續往下學,而又再開始Flask. 而今天又再遇到了這麼多厲害的前輩們講的一些我開始聽不懂的名詞,例如:winscp+SSH,寫網頁"全端" 、 apache / nginx 上不能跑python ? 我經常在用也很好用耶

真心希望,我不要被技術給淘汰, 希望能像前輩們那麼的厲害
我覺得是自由度跟功能上的差異吧,dreamweaver的確可以快速地拉出漂亮的html網頁,但是你希望可以傳送Email、下載檔案、AI 機器學習這些功能卻會變得很難去處理。把從UI工具拉好的HTML拿給FLask來接 也是個很痛苦的過程,因為看懂那些HTML很麻煩。
這個拿去玩 http://music.mihodb.com/tts/
這是我用 linux + apache + php 做的前端,文字轉語音的部份是由python負責去趴google姐求來的,內容隨你貼,可下載mp3存檔(做影片時可以用來做語音旁白用,聲音不好聽的主播不用另外花錢找聲優)
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
japhenchen
iT邦超人 1 級 ‧ 2021-05-21 11:40:54
最佳解答

有些跟資料庫相關的事,用php來解決會很方便,有些卡到硬體跟爬蟲相關的事,我就真的不得不動用python來解決,各有利弊
像這個把資料查詢出來丟json給前端去呈現的工作,用php做,3行搞定(中間好幾行SQL是為了編輯方便才會折行,我習慣了)

讓python來讀寫資料庫,要多繞一些圈,還要加掛一些函式庫,我不覺得比較簡化

但如果是爬蟲的事,我用php寫,會寫到暈倒

function getNeverConfirmedData()
{
    global $pdo;
    $statement = $pdo->prepare(
        "SELECT 
            `id` as `流水號` 
            ,`applydate` as `申請時間`
            ,`ALIVER_NAME` AS `申請人`
            ,`ALIVER_TEL` AS `連絡電話`
            ,CASE `PAYMENTMETHOD` WHEN 0 THEN '預付' WHEN 1 THEN '現金袋' WHEN 2 THEN concat('匯款',`memo`) END `付款方式`
            ,`SUM` AS `金額`
            ,concat('detail://',`uid`) AS `明細`
         FROM `mydb`.`applyments` as `m`
         WHERE `m`.`CONFIRMED` = 0 ;"
        );
    $statement->execute();
    return json_encode($statement->fetchAll(PDO::FETCH_ASSOC));
}

看更多先前的回應...收起先前的回應...

aliver嚇人嗎?嗯,是很嚇人,活人,哈

不得不說,爬蟲真的還是用python才會簡單,在開始學python爬蟲之前,我原本的想法是: 希望能用自己熟的程式來學(php or Java), 先在網路上看了有關php的爬蟲,但光看介紹,我就倒退好幾步。還是學python吧~~ 還有youtue影片的相關教學。

但無論如何,謝謝前輩們耐心的跟我解說。

謝謝

不怕丟臉 ~ 這是我用來爬KKBOX抓某個歌手所有歌曲(好吧,大眾知名的)清單的即時爬蟲(用戶搜尋才去爬),用PHP+CURL+SIMPLE HTML DOM寫的

真的超繞口

function SeekAllSingers($singer, $type)
{
    $vurl = "https://www.kkbox.com/tw/tc/search.php?word=XXXXXX&search=song&cur_page=";
    $res = array();
    $misscnt = 0;
    $cont = true;
    $pageindex = range(1, 3);
    foreach ($pageindex as $pagex) {
        $aurl = str_replace("XXXXXX", $singer, $vurl) . $pagex;
        $html = str_get_html(getPageHTML($aurl))->find("td[class=song-data]");
        if ($cont and count($html) > 0) {
            foreach ($html as $td) {
                $vtd = str_get_html($td);
                $title = $vtd->find("a", 0)->innertext;
                $vsg = $vtd->find("div[class=song-artist-album]", 0)->find("a", 0)->title;
                $fullmatch = 0;
                $arrsinger = explode('+', $singer);
                $mch = count($arrsinger);
                if ($mch > 1) {
                    foreach ($arrsinger as $sk) {
                        $fullmatch = $fullmatch + (strpos($vsg, trim($sk)) !== false ? 1 : 0);
                    }
                } elseif ($mch === 1) {
                    $fullmatch = $mch;
                }
                if ($fullmatch >= $mch) {
                    $bname = stripSpecTag($type === "singers" ?
                        trim($vsg) :
                        trim(preg_replace("/\,/", " ", $vsg)) . ' ' . trim($title));
                    $bname = preg_replace('/\s{2,}/', ' ', $bname);
                    if (strpos($bname, $singer, 0) === false) {
                        $misscnt++;
                        $cont = rand(0, $misscnt) > 10 ? false : true;
                        if (!$cont) break;
                    }
                    if ($cont and in_array($bname, $res) == false and trim($bname) != "") {
                        array_push($res, $bname);
                    }
                }
            }
            if (!$cont) break;
        } else {
            break;
        }
    }
    return $res;
}

用python爬KKBOX(沒貼全,供人參考用,有些變數/list/dict沒跟上

    mainresp = requests.get('https://www.kkbox.com/tw/tc/')

    xtree = html.fromstring(mainresp.text)
    sectionHits = xtree.xpath('//div[@class="hit-card"]/div[1]/a[1]/@href')
    if len(sectionHits) > 0:
        for secx in sectionHits:
            DetailContent = requests.get(secx)
            if(len(DetailContent.text) > 500):
                dtree = html.fromstring(DetailContent.text)

                blist = list()
                altext = SongRE.sub(
                    "", str(dtree.xpath('//div[@class="four-more-meta"][1]/img[1]/@alt'))).strip()

                if altext in dicList:
                    blist = dicList[altext]


我剛剛仔細的看了大家的回覆,但有個問題我更想要問:
假設,我沒有誤解大家的意思,Flask 比較屬於後端在處理的。
那如果我這個網站的資料庫用的是mysql,前端的我可能是使用PHP寫,而後端是用Python的Flask去寫,兩者再共同連到mysql的資料庫裡面。

我這樣子的想法是正確的嗎?

PHP關前端什麼事?你是不是誤會了code behind(asp.net)跟code inline(php)的差別哩?

<?php
    
?>

只會在伺服器端執行,客戶端的瀏覽器是壓根看不見這段程式碼,伺服器只會把這段程式碼透過echo轉成HTML一並輸出,而不是前端執行PHP

喔~~原來如此~ 大概明白一點了!! 謝謝前輩!

這是我正在寫的東西,一個php檔就搞定前端跟後端要做的工作,第一個箭頭是登出,第二個是登入、第三個箭頭是抓未確認的報名表,第四個箭頭就是抓明細資料,如果什麼都不是,就顯示主頁面,主頁面裡就負責安排畫面,javascript就處理ajax抓資料及後台登入的工作....聽起來很難,其實也只是一些資料庫跟AD驗證的動作,腦袋清楚一點別迷路就好(我開車不用GPS,因為哪裡來往哪去都清清楚楚)
https://ithelp.ithome.com.tw/upload/images/20210521/20117954D845q3GZc0.jpg

清楚易懂,程式縮排也都很整齊,我大概明白了~

縮排是CODE的功能啦,CTRL+S時會幫我把程式縮排好再存檔

學了python之後,最大的好處是強迫一定要排整好,該縮排的一定會縮排~~

我要發表回答

立即登入回答