2010-12-10 18 views
20

Sto imparando Python. Ho creato alcuni script che uso per analizzare vari siti Web che eseguo quotidianamente (man mano che le loro statistiche sono aggiornate) e guardo l'output nell'interprete Python. Mi piacerebbe creare un sito Web per visualizzare i risultati. Quello che voglio fare è eseguire il mio script quando vado sul sito e mostrare una tabella ordinata dei risultati.Come posso creare un'interfaccia web per un semplice script python?

Ho guardato Django e sto facendo parte del tutorial, ma mi sembra un sacco di spese generali per quello che dovrebbe essere un problema semplice. So che potrei semplicemente scrivere uno script Python per produrre HTML semplice, ma è davvero il modo migliore? Mi piacerebbe essere in grado di ordinare la tabella da varie colonne.

Ho anni di esperienza di programmazione (C, Java, ecc.), Ma ho pochissima esperienza nello sviluppo web.

Grazie in anticipo.

+1

Perché pensi che dovrebbe essere un problema semplice? – Falmarri

+0

Ciao, grazie per il feedback. Ho letto sui vari framework, ma non sono sicuro di aver davvero bisogno di un "framework"."Non ho alcun dato che ho bisogno di memorizzare (non c'è bisogno di un modello). Analizzo solo un sito per ottenere i dati, e non mi ci vuole quasi più tempo, quindi posso farlo ogni volta che viene visualizzato il sito (è solo un progetto personale.) Quello che voglio è qualcosa che posso usare per generare un tavolo ordinabile – Jonathan

risposta

12

Se si creano pagine non interattive, è possibile configurare facilmente qualsiasi server Web moderno per eseguire il proprio script python come CGI. Invece di caricare un file statico, il tuo server web restituirà l'output del tuo script python.

Questo non è molto sofisticato, ma se si sta semplicemente restituendo l'uscita senza bisogno del browser presentato oggi, questo è il modo più semplice (scalare sotto carico è una storia diversa).

Non è nemmeno necessario il modulo "cgi" di python, se non si ricevono dati dal browser. Qualcosa di più complicato di questo e dovresti usare un framework web.

Esempi e altri metodi

  • Simple Example: parte più difficile è la configurazione server web
  • mod_python: Ridurre il sovraccarico CGI (altrimenti, dirigenti apache il pitone interprete per ogni colpo)
  • python module cgi: invio di dati al tuo script python dal browser.

Ordinamento

Javascript side sorting: Ho usato questo libreria javascript per aggiungere tabelle ordinabili. Questo è il modo più semplice per aggiungere l'ordinamento senza richiedere lavoro aggiuntivo o altro HTTP GET.

Istruzioni:
Scarica questo file
Aggiungi ai web HTML
Aggiungere class = "ordinabile" a qualsiasi tavolo che desideri rendere ordinabile
Clicca sulle intestazioni per ordinare

+0

Grande, questo è quello che sto cercando. Lo proverò più tardi stasera, grazie! – Jonathan

8

Si potrebbe considerare Tornado se Django è troppo sovraccarico. Ho usato entrambi e sono d'accordo sul fatto che, se hai qualcosa di semplice/piccolo da fare e non conosci già Django, aumenterai in modo esponenziale il tuo tempo per la produzione. D'altra parte, puoi 'ottenere' Tornado in un paio d'ore e ottenere qualcosa di relativamente semplice in un giorno o due senza alcuna precedente esperienza con esso. Almeno, questa è stata la mia esperienza con esso.

Si noti che Tornado è ancora un compromesso: si ottiene molta semplicità in cambio dell'enorme cornucopia di funzionalità e scorciatoie che si ottengono con Django.

PS: oltre ad essere un "micro-framework", Tornado è anche il proprio server web, quindi non c'è niente da fare con wsgi/mod-cgi/fcgi .... basta scrivere i gestori delle richieste ed eseguirlo. Assicurati di vedere le demo incluse nella distribuzione.

16

Hai considerato Flask? Come Tornado, è sia un "micro-framework" che un semplice server web, quindi ha tutto ciò di cui hai bisogno fin da subito. http://flask.pocoo.org/

Questo esempio (destra fuori del homepage) praticamente riassume quanto sia semplice il codice può essere:

from flask import Flask 
app = Flask(__name__) 

@app.route("/") 
def hello(): 
    return "Hello World!" 

if __name__ == "__main__": 
    app.run() 
+0

Questa è una vecchia risposta ma Flask è ancora un ottimo strumento per ottenere rapidamente uno script per scrivere sul Web. – Mike

2

Django è un grande webframework, lo scopo di includere un sacco di cose becaus eyou spesso ha bisogno di loro, anche anche se a volte non lo fai.

Guarda Pyramid, precedentemente noto come BFG. È molto più piccolo http://pypi.python.org/pypi/pyramid/1.0a1

Altri microframeworks da verificare sono qui: http://wiki.python.org/moin/WebFrameworks

D'altra parte, in questo caso è probabilmente anche eccessivo. sembra che tu possa eseguire lo script una volta ogni dieci minuti, e scrivere un file HTML statico, e usare Apache.

+0

Hai ragione, la maggior parte delle soluzioni è esagerata. Devo solo eseguire lo script una sola volta per analizzare un sito con alcuni dati desiderati. Sto cercando è come trasformare quei dati (dopo averlo messo in pick-up, o averlo in memoria, o altro) in una tabella ordinabile. – Jonathan

+0

@ Jonathan: Forse un bel Javascript? Non vorrei, ma ho già conosco alcuni webframeworks, quindi li userò, non c'è alcuna curva di apprendimento per me. :) –

6

Avete visto il quadro bottle? È un micro framework e molto semplice.

0

Se non hanno bisogno di alcun intervento da parte del browser, sembra una pagina web quasi statica che capita di cambiare una volta al giorno. Avrai solo bisogno di un modo per estrarre il codice HTML dal tuo script, in un posto dove il tuo webserver può accedervi.)

Quindi dovresti usare qualche forma di templating; se hai bisogno di una struttura sopra la singola pagina, c'è lo static site/blog generators che puoi alimentare il tuo output nel formato Markdown, ad esempio, e chiamare il loro make html o simili.

1

Se non si è disposti a scrivere il proprio strumento, esiste uno strumento piuttosto avanzato per l'esecuzione degli script: http://rundeck.org/ È piuttosto semplice da avviare e può essere configurato anche per scenari complessi. Per il requisito della visualizzazione personalizzata (con risultati ordinabili), credo che sia possibile implementare un semplice plug-in per la traduzione dell'output dello script in elementi html.

Inoltre, per configurazioni semplici potrei raccomandare il mio strumento: https://github.com/bugy/script-server. Non ha molte funzionalità, ma è molto semplice per gli utenti finali e supporta l'esecuzione interattiva.

Problemi correlati