2010-12-10 14 views
20

Ich lerne Python. Ich habe einige Skripte erstellt, die ich benutze, um verschiedene Webseiten zu analysieren, die ich täglich ausführe (da ihre Statistiken aktualisiert werden), und schaue auf die Ausgabe im Python-Interpreter. Ich möchte eine Website erstellen, um die Ergebnisse anzuzeigen. Ich möchte mein Skript ausführen, wenn ich auf die Website gehe, und eine sortierbare Tabelle der Ergebnisse anzeigen.Wie erstelle ich eine Webschnittstelle zu einem einfachen Python-Skript?

Ich habe Django angeschaut und bin Teilweise durch das Tutorial, aber es scheint wie eine schreckliche Menge Overhead für was ein einfaches Problem sein sollte. Ich weiß, dass ich einfach ein Python-Skript schreiben könnte, um einfaches HTML auszugeben, aber ist das wirklich der beste Weg? Ich möchte die Tabelle nach verschiedenen Spalten sortieren können.

Ich habe Jahre Programmiererfahrung (C, Java, etc.), aber habe sehr wenig Web-Entwicklungserfahrung.

Vielen Dank im Voraus.

+1

Warum sollte es Ihrer Meinung nach ein einfaches Problem sein? – Falmarri

+0

Hallo, danke für die Rückmeldung. Ich habe über die verschiedenen Frameworks gelesen, aber ich bin mir nicht sicher, ob ich wirklich einen "Framework" brauche."Ich habe keine Daten, die ich speichern muss (keine Notwendigkeit für ein Modell). Ich analysiere nur eine Website, um die Daten zu erhalten, und es dauert fast keine Zeit, so kann ich es jedes Mal, wenn die Website angezeigt wird nur ein persönliches Projekt. Was ich will, ist etwas, das ich verwenden kann, um eine sortierbare Tabelle zu erzeugen. – Jonathan

Antwort

12

Wenn Sie nicht interaktive Seiten erstellen, können Sie problemlos jeden modernen Webserver einrichten, um Ihr Python-Skript als CGI auszuführen. Anstatt eine statische Datei zu laden, gibt Ihr Webserver die Ausgabe Ihres Python-Skripts zurück.

Dies ist nicht sehr anspruchsvoll, aber wenn Sie einfach die Ausgabe zurückgeben, ohne Browser Datum gesendet, ist dies der einfachste Weg (Skalierung unter Last ist eine andere Geschichte).

Sie brauchen nicht einmal das "CGI" -Modul von Python, wenn Sie keine Daten vom Browser erhalten. Etwas komplizierter als das und Sie sollten ein Web-Framework verwenden.

Beispiele und andere Methoden

  • Simple Example: schwierigste Teil Webserver Konfiguration
  • mod_python: auf CGI-Overhead Geverringert (sonst Apache execs für jeden Treffer der Python-Interpreter)
  • python module cgi: Senden von Daten an Ihr Python-Skript über den Browser.

Sortierung

Javascript side sorting: Ich habe diese Javascript-Bibliothek verwendet sortierbare Tabellen hinzuzufügen. Dies ist die einfachste Möglichkeit, die Sortierung hinzuzufügen, ohne dass zusätzliche Arbeit oder ein anderes HTTP-GET erforderlich ist.

Anleitung:
Diese Datei herunterladen
zu Ihrem HTML hinzufügen
hinzufügen class = „sortierbar“ auf jede Tabelle, die Sie sortierbar
Klicken Sie auf die Überschriften machen möchten

+0

Großartig, das ist, was ich suche. Ich werde es später heute Abend ausprobieren, danke! – Jonathan

8

Sie könnten Tornado betrachten, wenn Django zu viel Overhead ist. Ich habe beide verwendet und stimme zu, dass wenn du etwas Einfaches/Kleines zu tun hast und Django noch nicht kennst, wird es deine Produktionszeit exponentiell erhöhen. Auf der anderen Seite können Sie Tornado in ein paar Stunden "bekommen" und etwas relativ Einfaches in ein oder zwei Tagen ohne vorherige Erfahrung damit machen. Zumindest habe ich damit meine Erfahrung gemacht.

Beachten Sie, dass Tornado immer noch ein Kompromiss ist: Sie erhalten eine Menge Einfachheit im Austausch für das riesige Füllhorn von Funktionen und Verknüpfungen, die Sie mit Django erhalten.

PS - Tornado ist nicht nur ein 'Mikroframework', sondern auch ein eigener Webserver, also gibt es kein Wischen mit wsgi/mod-cgi/fcgi .... schreiben Sie einfach Ihre Requesthandler und führen Sie sie aus. Stellen Sie sicher, dass die Demos in der Distribution enthalten sind.

16
zu sortieren

Haben Sie Flask in Betracht gezogen? Wie Tornado ist es sowohl ein "Mikro-Framework" als auch ein einfacher Webserver, so dass es alles, was Sie brauchen, direkt aus der Box hat. http://flask.pocoo.org/

Dieses Beispiel (rechts von der Startseite) ziemlich fasst, wie einfach der Code sein kann:

from flask import Flask 
app = Flask(__name__) 

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

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

Dies ist eine alte Antwort aber Flask ist immer noch ein großartiges Tool, um schnell ein Skript zum Schreiben ins Web zu bekommen. – Mike

2

Django ist ein großer webframework, bedeutete jede Menge Dinge zu schließen becaus eyou sie oft braucht, auch obwohl manchmal nicht.

Betrachten Sie Pyramid, früher bekannt als BFG. Es ist viel kleiner. http://pypi.python.org/pypi/pyramid/1.0a1

Andere microframeworks sind hier zu überprüfen: http://wiki.python.org/moin/WebFrameworks

Auf der anderen Seite, in diesem Fall ist es wahrscheinlich auch viel des Guten. klingt so, als könnten Sie das Skript alle zehn Minuten ausführen, eine statische HTML-Datei schreiben und einfach Apache verwenden.

+0

Sie haben recht, die meisten Lösungen sind übertrieben. Ich muss das Skript wirklich nur einmal ausführen, um eine Site mit einigen Daten zu parsen, die ich möchte Ich suche, wie man diese Daten in eine sortierbare Tabelle umwandelt (nachdem ich sie gebeizt habe, oder im Gedächtnis oder was auch immer) – Jonathan

+0

@ Jonathan: Vielleicht ein nettes Javascript? Ich würde nicht, aber ich schon kenne einige Webframeworks, also würde ich sie verwenden, es gibt keine Lernkurve für mich :) –

6

Haben Sie gesehen bottle Rahmen? Es ist ein micro framework und sehr einfach.

0

Wenn Sie aus dem Browser jede Eingabe nicht benötigen, Das klingt wie eine fast statische Webseite, die sich zufällig einmal am Tag ändert. Sie brauchen nur eine Möglichkeit, HTML aus Ihrem Skript zu holen, an einen Ort, wo Ihr Webserver darauf zugreifen kann.)

Sie würden also eine Form von templating; Wenn Sie eine Struktur über der einzelnen Seite benötigen, gibt es static site/blog generators, die Sie Ihre Ausgabe in, sagen wir, Markdown-Format, und rufen Sie ihre make html oder dergleichen.

1

Wenn Sie nicht bereit sind, Ihr eigenes Werkzeug zu schreiben, gibt es ein ziemlich fortgeschrittenes Werkzeug für die Ausführung Ihrer Skripte: Es ist ziemlich einfach zu starten und kann auch für komplexe Szenarien konfiguriert werden. Für die Anforderung der benutzerdefinierten Ansicht (mit sortierbaren Ergebnissen), glaube ich, dass Sie ein einfaches Plugin für die Übersetzung von Skript-Ausgabe in HTML-Elemente implementieren können.

Auch für einfache Setups kann ich mein eigenes Tool empfehlen: https://github.com/bugy/script-server. Es verfügt nicht über viele Funktionen, ist aber für Endbenutzer sehr einfach und unterstützt die interaktive Ausführung.

Verwandte Themen