(Python)每个地址上都有socket.gai错误…除了http://www.reddit.com?

(Python)每个地址上都有socket.gai错误…除了http://www.reddit.com?,python,http,sockets,Python,Http,Sockets,我只是随便玩玩,试图从网站上获取信息。不幸的是,使用以下代码: import sys import socket import re from urlparse import urlsplit url = urlsplit(sys.argv[1]) sock = socket.socket() sock.connect((url[0] + '://' + url[1],80)) path = url[2] if not path: path = '/' print path so

我只是随便玩玩,试图从网站上获取信息。不幸的是,使用以下代码:

import sys
import socket
import re
from urlparse import urlsplit

url = urlsplit(sys.argv[1])


sock = socket.socket()
sock.connect((url[0] + '://' + url[1],80))
path = url[2]
if not path:
    path = '/'

print path
sock.send('GET ' + path + ' HTTP/1.1\r\n'
    + 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.3.154.9 Safari/525.19\r\n'
    + 'Accept: */*\r\n'
    + 'Accept-Language: en-US,en\r\n'
    + 'Accept-Charset: ISO-8859-1,*,utf-8\r\n'
    + 'Host: 68.33.143.182\r\n'
    + 'Connection: Keep-alive\r\n'
    + '\r\n')
我得到以下错误:

回溯(最近一次呼叫最后一次):
文件 “D:\Development\Python\PyCrawler\PyCrawler.py”, 第10行,在 sock.connect((url[0]+'://'+url[1],80))文件“”,第1行, 在连接套接字中。错误:(11001, “getaddrinfo失败”)


唯一一次我没有得到错误是如果传递的url是。我尝试过的其他每个url都会出现socket.gai错误。有人能解释一下吗?并可能给出解决方案?

您忘记解析主机名:

addr = socket.gethostbyname(url[1])
...
sock.connect((addr,80))
不要这样做,而是这样做:

sock.connect((url[1], 80))
connect
需要主机名,而不是URL


实际上,您可能应该使用比套接字更高级别的东西来执行HTTP。也许吧。

请不要这样做

urllib和urllib2是您的朋友


如果您有问题,请阅读。

您是否更改过密码?如果它有一个Reddit条目,但没有太多其他条目,这可能解释了该站点的独特结果。

使用urllib2。或者。

我也试过了。它让我到处都有被拒绝访问的错误。
sock.connect((url[1], 80))