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
如何使用python套接字获取html代码_Python_Sockets_Getaddrinfo - Fatal编程技术网

如何使用python套接字获取html代码

如何使用python套接字获取html代码,python,sockets,getaddrinfo,Python,Sockets,Getaddrinfo,因此,我尝试只使用python套接字而不使用任何其他库(如urllib)获取google的源代码。我不明白为什么我的GET请求不起作用,我尝试了所有可能的方法。这是我的代码,它很小,我不想得到太多的细节。只是在寻找一个用来获取源代码的协议。我假设它将是GET方法,但它不起作用。我需要一个类似于urllib.request但仅使用python套接字的响应 如果我将“”传递给socket.gethostbyname(),它将在getaddrinfo上失败 另外,当我试图从python.org获取请

因此,我尝试只使用python套接字而不使用任何其他库(如urllib)获取google的源代码。我不明白为什么我的GET请求不起作用,我尝试了所有可能的方法。这是我的代码,它很小,我不想得到太多的细节。只是在寻找一个用来获取源代码的协议。我假设它将是
GET
方法,但它不起作用。我需要一个类似于urllib.request但仅使用python套接字的响应

  • 如果我将“”传递给socket.gethostbyname(),它将在getaddrinfo上失败
  • 另外,当我试图从python.org获取请求时,while循环永远不会结束


以下几点对我很有用:

import socket
s=socket.socket()
host=socket.gethostbyname('www.google.com')
port=80
s.connect((host,port))
s.sendall("GET /\r\n")
val = s.recv(10000)
# Split off the HTTP headers
val = val.split('\r\n\r\n',1)[1]

以下几点对我很有用:

import socket
s=socket.socket()
host=socket.gethostbyname('www.google.com')
port=80
s.connect((host,port))
s.sendall("GET /\r\n")
val = s.recv(10000)
# Split off the HTTP headers
val = val.split('\r\n\r\n',1)[1]

https://www.google.com
不是主机名(它是一个URL),因此当然
gethostbyname
会失败。除非在Python中将多个语句放在一行中,否则不需要分号:)
https://www.google.com
不是主机名(它是URL),当然,
gethostbyname
会失败。除非在Python中的一行上放置多个语句,否则不需要分号:)但这不会返回源代码,它返回的内容与我的代码返回的内容完全相同:)我试过了,我想我真正想要的是类似urllib.request()的东西并返回网站的完整来源。我从google.com收到302 Moved消息,这与我使用urllib时不同,urllib提供了完整的源代码。我得到了200 OK(以及谷歌主页的html)和这里显示的确切代码,所以我不确定你为什么会得到302 Moved这是我得到的b'\n302 Moved\n302 Moved\n文档已经移动了\n>\r\n\r\n'看起来像谷歌所想的(正确或错误)您在法国(请参阅)。更改浏览器中的设置可能会解决此问题(我相信这只是基于IP地址的,对于浏览器或Python也是如此),或者您可以直接访问google.fr以获取该页面的源代码,但这不会返回源代码,它返回的内容与我的代码返回的内容完全相同:)我尝试了这个,我认为我真正想要的是像urllib.request()一样工作的内容,并返回网站的完整源代码。我从google.com收到302 Moved消息,这与我使用urllib时不同,urllib提供了完整的源代码。我得到了200 OK(以及谷歌主页的html)和这里显示的确切代码,所以我不确定你为什么会得到302 Moved这是我得到的b'\n302 Moved\n302 Moved\n文档已经移动了\n>\r\n\r\n'看起来像谷歌所想的(正确或错误)您在法国(请参阅)。更改浏览器中的设置可能会解决此问题(我相信它只是基于IP地址,这与浏览器或Python相同),或者您可以直接访问google.fr以获取该页面的源代码