2014-01-29 16 views
13

我已經使用BeautifulSoup for Python 3.3成功從網頁中提取所需的信息。我還使用BeautifulSoup生成新的HTML代碼來顯示此信息。目前,我的Python程序打印出HTML代碼,然後我必須複製,粘貼並保存爲HTML文件,然後從那裏,我可以在瀏覽器中測試它。直接從Python中啓動瀏覽器中的HTML代碼(由BeautifulSoup生成)

所以我的問題是,有沒有辦法在Python中啓動BeautifulSoup在Web瀏覽器中生成的HTML代碼,以便我不必通過我現在使用的複製和粘貼方法?

+0

更多選項:[可以美麗的湯輸出發送到瀏覽器?](http://stackoverflow.com/questions/25706214/can-beautiful-soup-output-be-sent-to-browser/25706243#25706243 ) – alecxe

回答

13

使用webbrowser.open

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

謝謝。這是我現在正在尋找的簡單解決方案。 – JohnnyW

0

使用Flask把你的代碼放到一個本地網絡應用程序:

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() 

運行腳本,並在http://127.0.0.1:5000/指向您的瀏覽器。

+0

或只是SimpleHTTPServer? – reptilicus

+0

@reptilicus,FYI,在Python 3.x中沒有SimpleHTTPServer,但['http.server'](http://docs.python.org/3/library/http.server.html)。 – falsetru

0

(這個增長足夠我想我應該關分割它作爲一個單獨的答案:)

由於@reptilicus指出的那樣,你可以使用內置的http.server模塊如下:

  1. 創建一個網絡文件目錄並保存你的.html文件。

  2. 打開命令行窗口,並做

    cd /my/web/directory 
    python -m http.server 8000 
    
  3. 點瀏覽器在http://127.0.0.1:8000

這隻適用於靜態文件;它不會運行腳本並返回結果(如Flask所做的那樣)。

+0

謝謝。這是我第一次嘗試在Python中使用HTML做任何事情,所以這個http:server現在有點過分了。如果我打算最終讓我的代碼在線,這是否會成爲一個有用的模塊? – JohnnyW

+0

@ user3108789:這真的不難;它需要大約15秒的時間來完成。按照上述步驟操作!要在'實際託管'網站上工作,我會使用Flask(如上所述);一旦你有一些經驗,試試Django(但是這是一個更大的環境,具有更大的學習曲線,Flask更容易入門)。 –

相關問題