python加载HTML内容

使用python加载socket得到的html内容到浏览器中

以下回答结合了ChatGPT:
可以使用Python中的socket和http.client模块来获取HTML内容,并使用webbrowser模块在浏览器中显示。

下面是一个简单的示例代码:


import socket
import http.client
import webbrowser

# 创建一个socket连接到指定的服务器和端口
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('www.example.com', 80))

# 发送HTTP请求
http_request = b"GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n"
sock.sendall(http_request)

# 读取HTTP响应并获取HTML内容
response = sock.recv(1024)
html = b""
while response:
    html += response
    response = sock.recv(1024)

# 关闭socket连接
sock.close()

# 使用webbrowser模块在浏览器中打开HTML内容
webbrowser.open('data:text/html;base64,' + html.decode('utf-8').encode('base64').replace('\n', ''))

该代码连接到www.example.com的80端口,发送一个HTTP GET请求,读取HTTP响应并获取HTML内容,最后使用webbrowser模块在浏览器中打开HTML内容。注意,为了将HTML内容作为data URI传递给浏览器,我们将HTML内容转换为base64编码。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7634781
  • 这篇博客也不错, 你可以看下网络原理课程 Python socket编程实验 2019年
  • 除此之外, 这篇博客: Python socket和前端html中的 设置中文编码 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    cat /python/web/data.html 
    <!DOCTYPE html>
    <html lang='en'>
    <head>
      <meta charset='UTF-8' >
      <title>Title</title>
    </head>
    <body>
    <h1>socket web!</h1>
    <img src="https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fbpic.588ku.com%2Fback_pic%2F03%2F72%2F70%2F3657b96a43e51c9.jpg&refer=http%3A%2F%2Fbpic.588ku.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1613546358&t=4e7b7ecc959e3828feb2971d14551fa8">
    <a href='https://www.baidu.com/'>百度</a>
    </body>
    </html>
    

    不需要重新运行代码
    刷新下网页
    http://192.168.229.120:90/
    在这里插入图片描述


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^