HTTP为python中的html文件创建正确的请求
所以我花了一些时间试图学习如何编写http请求 我的目标是请求网页的html解析并从中提取数据 如果我没有文件的确切路径,我很难理解如何做到这一点,而我只有基本的url,比如www.google.com 在某种程度上,我试图做urllib.request所做的事情,但用python中的套接字编程手动完成HTTP为python中的html文件创建正确的请求,python,sockets,http,https,http-headers,Python,Sockets,Http,Https,Http Headers,所以我花了一些时间试图学习如何编写http请求 我的目标是请求网页的html解析并从中提取数据 如果我没有文件的确切路径,我很难理解如何做到这一点,而我只有基本的url,比如www.google.com 在某种程度上,我试图做urllib.request所做的事情,但用python中的套接字编程手动完成 #Playing with Sockets import socket target_port=80 target_url ='www.google.com' client=socket.
#Playing with Sockets
import socket
target_port=80
target_url ='www.google.com'
client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
client.connect((target_url,target_port))
request= "GET https://www.google.com HTTP/1.1\nHost:google.com\n\n"
message= request.encode()
client.send(message)
response=client.recv(4096)
print(response.decode())
首先,HTTP请求应该使用新的行分隔符
\r\n
(十六进制值0x0D
和0x0A
)。您只使用了\n
(0x0A
)
其次,请求文件的路径是相对于主机地址的。因此,当您调用client.connect((target\u url,target\u port))
连接到主机的HTTP服务器时,它可以使用相对路径接受您的请求
最终,您的请求应该是这样的
request=“GET/path/to/file.html HTTP/1.1\r\nHost:google.com\r\n\r\n”
您可能还需要一些附加的标题
查看更多信息。如果该链接没有将您带到正确的部分,那么我要特别讨论的是
htp1.1客户机
部分。示例HTTP交换
部分也很棒。实际上,您可能会发现整个页面非常有用。不清楚您所说的“我没有文件的确切路径”是什么意思。URL就是确切的路径。