我使用BeautifulSoup for Python 3.3成功从网页中提取所需信息。我还使用BeautifulSoup生成新的HTML代码来显示此信息。目前,我的Python程序打印出HTML代码,然后我必须将其复制,粘贴并保存为HTML文件,然后从那里,我可以在浏览器中对其进行测试。
所以我的问题是,在Python中是否有办法在Web浏览器中启动BeautifulSoup生成的HTML代码,这样我就不必经历我现在使用的复制和粘贴方法了?
答案 0 :(得分:20)
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模块,如下所示:
创建一个Web文件目录并将.html文件保存在其中。
打开命令行窗口并执行
cd /my/web/directory
python -m http.server 8000
将浏览器指向http://127.0.0.1:8000
这仅适用于静态文件;它不会运行你的脚本并返回结果(就像Flask那样)。