2014-01-29 3 views
13

Ich habe BeautifulSoup für Python 3.3 verwendet, um gewünschte Informationen von einer Webseite erfolgreich zu ziehen. Ich habe BeautifulSoup auch benutzt, um neuen HTML Code zu erzeugen, um diese Informationen anzuzeigen. Momentan druckt mein Python-Programm den HTML-Code aus, den ich kopieren, einfügen und als HTML-Datei speichern muss. Von dort aus kann ich ihn dann in einem Browser testen.Starten Sie HTML-Code im Browser (der von BeautifulSoup generiert wird) direkt aus Python

Also meine Frage ist das, gibt es eine Möglichkeit in Python den HTML-Code von BeautifulSoup in einem Webbrowser zu starten, so dass ich nicht durch die Copy-Paste-Methode gehen muss, die ich jetzt verwende?

+0

Weitere Optionen hier: [Kann schöne Suppe Ausgabe an den Browser gesendet werden?] (Http://stackoverflow.com/questions/25706214/can-beautiful-soup-output-s-sent-to-browser/25706243#25706243) – alecxe

Antwort

13

webbrowser.open Verwendung:

import os 
import webbrowser 

html = '<html> ... generated html string ...</html>' 
path = os.path.abspath('temp.html') 
url = 'file://' + path 

with open(path, 'w') as f: 
    f.write(html) 
webbrowser.open(url) 
+0

Danke. Dies ist die einfache Lösung, nach der ich jetzt gesucht habe. – JohnnyW

0

Verwenden Flask Ihren Code in eine lokale Web-Anwendung aktivieren:

from flask import Flask 
app = Flask(__name__) 

@app.route('/') 
def scrape_and_reformat(): 
    # call your scraping code here 
    return '<html><body> ... generated html string ... </body></html>' 

if __name__ == '__main__': 
    app.run() 

Führen Sie das Skript, und mit Ihrem Browser auf http://127.0.0.1:5000/.

+0

oder einfach SimpleHTTPServer? – reptilicus

+0

@reptilicus, FYI, kein SimpleHTTPServer in Python 3.x, aber ['http.server'] (http://docs.python.org/3/library/http.server.html). – falsetru

0

(dies wuchs genug Ich dachte, ich aufgeteilt werden soll als separate Antwort aus :)

Wie @reptilicus weist darauf hin, können Sie die http.server Modul eingebauten wie folgt verwenden:

  1. Erstellen Sie ein Webdateiverzeichnis und speichern Sie Ihre .html-Datei darin.

  2. Öffnen Sie ein Befehlszeilenfenster und tun

    cd /my/web/directory 
    python -m http.server 8000 
    
  3. mit Ihrem Browser auf http://127.0.0.1:8000

Dies funktioniert nur für statische Dateien; Es wird Ihr Skript nicht ausführen und die Ergebnisse (wie Flask) zurückgeben.

+0

Danke. Dies ist das erste Mal, dass ich versucht habe, etwas mit HTML in Python zu tun, so dass dieser http: Server jetzt ein wenig über meinem Kopf ist. Wäre das ein nützliches Modul um zu lernen, ob ich meinen Code online stellen möchte? – JohnnyW

+0

@ user3108789: Es ist wirklich nicht schwer; es dauert buchstäblich etwa 15 Sekunden. Befolge die obigen Schritte und probiere es aus! Um an "tatsächlichen Hosting" -Sites zu arbeiten, würde ich stattdessen Flask verwenden (wie oben); Sobald Sie ein wenig Erfahrung haben, versuchen Sie Django (aber das ist eine viel größere Umgebung, mit einer größeren Lernkurve. Flask ist viel einfacher zu beginnen). –

Verwandte Themen