python - 如何在python中将html文件转换为代码?
问题描述
如何使用套接字将 html 文件转换为 python 代码。我能够使用请求库来实现。但是,它需要重写为套接字。我不明白怎么做。通过请求的实现代码将在下面。我还将留下可悲的尝试,通过使用 Google 的套接字来实现。然而,这个决定一点也不正确。!(帮助实现使用套接字。
import requests
reg_get = requests.get("https://stackoverflow.blog/")
text = reg_get.text
print(text)
import socket
request = b"GET / HTTP/1.1\nHost: https://stackoverflow.blog/\n\n"
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("https://stackoverflow.blog/", 80))
s.send(request)
result = s.recv(10000)
while (len(result) > 0):
print(result)
result = s.recv(10000)
在看到评论并听取您的意见后。我已经重写了以下代码。但是,我从来没有得到过html。我收到了有关该网站的信息。如何在python中获取html结构
import socket
import ssl
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
request = "GET /r/AccidentalRenaissance/comments/8ciibe/mr_fluffies_betrayal/ HTTP/1.1\r\nHost: www.reddit.com\r\n\r\n"
context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
s = context.wrap_socket(sock, server_hostname = "www.reddit.com")
s.connect(("www.reddit.com", 443))
s.sendall(request.encode())
contest = s.recv(1024).decode()
s.close()
print(contest)
结果
HTTP/1.1 200 OK
Connection: keep-alive
Cache-control: private, s-maxage=0, max-age=0, must-revalidate, no-store
Content-Type: text/html; charset=utf-8
X-Frame-Options: SAMEORIGIN
Accept-Ranges: bytes
Date: Sun, 03 Oct 2021 03:34:25 GMT
Via: 1.1 varnish
Vary: Accept-Encoding, Accept-Encoding
解决方案
URL 由协议、主机名、可选端口和可选路径组成。在 URLhttp://stackoverflow.blog/
中,https 是协议,stackoverflow.blog 是主机名,没有提供端口或路径。对于 http,端口默认为 80,路径默认为 /。使用套接字时,首先使用connect在端口建立与主机的连接,然后发送HTTP 命令以检索路径上的页面。检索页面的 HTTP 命令是“GET /”并接收来自服务器的响应。
请注意,我使用 http 而不是 https,因为 https 会在连接完成后但在“GET /”完成之前向上述内容添加安全设置和协商。使用 Requests 而不是尝试自己实现它是相当复杂的,也是一个很好的理由。如果你不想使用 Requests 但又不想下到 socket 的级别,看看 urllib3
推荐阅读
- opencv - opencv中的SIFT无法正常工作
- android - 如何从类中获取字符串?(Android studio) abbyy OCR识别
- android - 如何在不重复自己的情况下在子项目中拥有相同的依赖关系?
- r - 是否有可能在 R 中使用估算数据获得仅交互模型?
- xunit - 如何以特殊顺序运行 xUnit 测试
- javascript - GeoFire:等待未决的承诺
- openssl - 我正在尝试实现一对使用 SSL 创建自签名证书以在它们之间传递一些数据的 AWS 服务器
- bnf - 这三个非终结符(expr、term 和 factor)在这个整数算术表达式的 BNF 中是什么意思?
- java - 在 selenium JAVA 中提取文本 br 标签
- java - 在spring boot中从属性文件中注入值数组