考虑一个安装在端口8888上的远程服务器上的jupyter笔记本。假设此远程服务器在端口80上也有一个Web服务器。还要考虑端口8888是公开的,但端口80不公开,只能访问从本地主机(正在运行jupyter笔记本的本地主机)。是否可以从在本地Web浏览器中打开的Jupyter笔记本中导航此本地Web服务器?
我试图找到一些关于stackoverflow的解决方案,但找不到适合我情况的解决方案。
我发现了很多类似IPython.display中使用IFrame的东西,也类似于使用urlopen
中的东西,但是它并没有像我预期的那样工作,我无法像我们在Web服务器中那样在Web服务器中导航标准的网络浏览器。
我想我需要端口转发,代理或在python笔记本中运行的以python实现的隧道之类的东西。
from six.moves.urllib.request import urlopen
url='http://localhost:80'
response = urlopen(url)
content = str(response.read())
from IPython.core.display import display, HTML
display(HTML(content))
它会在jupyter笔记本中打印HTML,但我们无法像预期的那样导航:
from IPython.display import IFrame
url = 'https://www.wikipedia.org'
IFrame(url, width=800, height=400)
一些建议?
答案 0 :(得分:0)
您可以在笔记本中显示任意HTML。
作为对您的评论的回应,您可以通过标准的GET请求页面,并通过IPython HTML标签进行显示吗?
由于请求将在本地执行 ,因此笔记本可以获取内容。根据页面的复杂程度(例如静态资产路径),它将呈现html:
import requests
content = requests.get('https://localhost:80/').text
from IPython.display import HTML, display
display(HTML(content))
作为替代方案,可以使用简单的代理服务器,例如https://ngrok.com/
在代码中创建标准的HTML超链接:
from IPython.display import HTML, display
display(HTML("<a target='_blank' href='https://google.com'>google</a>"))
或者,markdown块允许标准HTML标签添加相同的<a>
超链接。