Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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
HTTP为python中的html文件创建正确的请求_Python_Sockets_Http_Https_Http Headers - Fatal编程技术网

HTTP为python中的html文件创建正确的请求

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.

所以我花了一些时间试图学习如何编写http请求

我的目标是请求网页的html解析并从中提取数据

如果我没有文件的确切路径,我很难理解如何做到这一点,而我只有基本的url,比如www.google.com

在某种程度上,我试图做urllib.request所做的事情,但用python中的套接字编程手动完成

#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就是确切的路径。