直接从Python在浏览器(由BeautifulSoup生成)中启动HTML代码

时间:2014-01-29 16:49:50

标签: python html python-3.x beautifulsoup

我使用BeautifulSoup for Python 3.3成功从网页中提取所需信息。我还使用BeautifulSoup生成新的HTML代码来显示此信息。目前,我的Python程序打印出HTML代码,然后我必须将其复制,粘贴并保存为HTML文件,然后从那里,我可以在浏览器中对其进行测试。

所以我的问题是,在Python中是否有办法在Web浏览器中启动BeautifulSoup生成的HTML代码,这样我就不必经历我现在使用的复制和粘贴方法了?

3 个答案:

答案 0 :(得分:20)

使用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)

替代使用NamedTemporaryFile(使文件最终被OS删除):

import tempfile
import webbrowser

html = '<html> ...  generated html string ...</html>'

with tempfile.NamedTemporaryFile('w', delete=False) as f:
    url = 'file://' + f.name
    f.write(html)
webbrowser.open(url)

答案 1 :(得分:1)

使用Flask将您的代码转换为本地Web应用程序:

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/

答案 2 :(得分:0)

(这已经足够长了我认为我应该把它作为一个单独的答案分开:)。

正如@reptilicus指出的那样,您可以使用内置的http.server模块,如下所示:

  1. 创建一个Web文件目录并将.html文件保存在其中。

  2. 打开命令行窗口并执行

    cd /my/web/directory
    python -m http.server 8000
    
  3. 将浏览器指向http://127.0.0.1:8000

  4. 这仅适用于静态文件;它不会运行你的脚本并返回结果(就像Flask那样)。