2014-01-29 17 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更容易入门)。 –

相关问题