Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
直接从Python在浏览器中启动HTML代码(由BeautifulSoup生成)_Python_Html_Python 3.x_Beautifulsoup - Fatal编程技术网

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

直接从Python在浏览器中启动HTML代码(由BeautifulSoup生成),python,html,python-3.x,beautifulsoup,Python,Html,Python 3.x,Beautifulsoup,我使用了用于Python 3.3的BeautifulSoup,成功地从网页中获取所需的信息。我还使用BeautifulSoup生成新的HTML代码来显示此信息。目前,我的Python程序打印出HTML代码,然后将其复制、粘贴并保存为HTML文件,然后在浏览器中对其进行测试 所以我的问题是,Python中有没有一种方法可以在web浏览器中启动BeautifulSoup生成的HTML代码,这样我就不必使用现在使用的复制粘贴方法了?使用: 用于将代码转换为本地web应用程序: from flask i

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

所以我的问题是,Python中有没有一种方法可以在web浏览器中启动BeautifulSoup生成的HTML代码,这样我就不必使用现在使用的复制粘贴方法了?

使用:

用于将代码转换为本地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()
从烧瓶导入烧瓶
app=烧瓶(名称)
@应用程序路径(“/”)
def刮取和重新格式化()
#在这里调用您的刮码
返回“。。。生成的html字符串…'
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
app.run()
运行脚本,并将浏览器指向
http://127.0.0.1:5000/

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

正如@爬行动物所指出的,您可以按如下方式使用内置模块:

  • 创建一个web文件目录并将.html文件保存在其中

  • 打开命令行窗口并执行以下操作

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


  • 这只适用于静态文件;它不会运行您的脚本并返回结果(就像Flask一样)。

    或者只是SimpleHTTPServer?@爬行动物,仅供参考,Python 3.x中没有SimpleHTTPServer,但是。谢谢。这是我现在正在寻找的简单解决方案。with delete=False在这里可能更可取,因为它(很可能)最终会被OS@Jay,谢谢你的评论。更新了答案,以包含使用NamedTemporaryFile的替代方案。我需要将tempfile.NamedTemporaryFile('w',delete=False,suffix=“.html”)作为f:使用
    ,以便在浏览器中正确呈现html。否则,我只是在浏览器中看到了原始html字符串。@marvin,谢谢你的评论。我相应地更新了答案。谢谢。这是我第一次尝试在Python中使用HTML做任何事情,所以这个http:server现在有点让我不知所措。如果我打算最终把代码放到网上,这会是一个有用的学习模块吗?@user3108789:这真的不难;这实际上需要15秒的时间。按照上面的步骤来尝试!要在“实际托管”站点上工作,我将使用Flask(如上所述);一旦您有了一点经验,请尝试Django(但这是一个更大的环境,具有更大的学习曲线。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()
    
    cd /my/web/directory
    python -m http.server 8000