使用Python套接字从URL获取HTML内容

时间:2018-01-21 18:40:50

标签: python sockets

有没有办法使用Python中的套接字从URL(而不是主机名)中检索网页内容? socket.connect()仅适用于主机名。我可以从www.python.org获取内容,但不能访问www.python.org/about。

谢谢!

1 个答案:

答案 0 :(得分:1)

K找到了答案。我应该在发送到服务器的GET请求中指明路径。

在www.python.org/about/中,www.python.org是主机名,而/ about /是路径。因此,要发送的字符串将是" GET / about HTTP ..."。类似的东西:

import socket
from urllib import parse # for separating path and hostname
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
url = parse.urlparse(link)
s.connect((url[1], 80))
msg = "GET " + link[2] + " HTTP/1.0\r\n\r\n"
s.sendall(msg)
s.recv(4096)