“ConnectionResetError”我该怎么办?

时间:2015-07-28 10:12:41

标签: python

# -*- coding: UTF-8 -*-

import urllib.request
import re
import os

os.system("cls")

url=input("Url Link : ")

if(url[0:8]=="https://"):
    url=url[:4]+url[5:]

if(url[0:7]!="http://"):
    url="http://"+url
try :
    try :
        value=urllib.request.urlopen(url,timeout=60).read().decode('cp949')
    except UnicodeDecodeError :
        value=urllib.request.urlopen(url,timeout=60).read().decode('UTF8')
    par='<title>(.+?)</title>'

    result=re.findall(par,value) 
    print(result)

except ConnectionResetError as e:
    print(e)

TimeoutError消失了。但是出现了ConnectionResetError。这是什么错误?这是服务器问题吗?所以它无法与我解决?

1 个答案:

答案 0 :(得分:1)

포기하세요!不要放弃!

某些网站需要特定的HTTP标头,在本例中为User-agent。因此,您需要在请求中设置此标头。

像这样更改您的请求(代码的17 - 20行)

# Make request object
request = urllib.request.Request(url, headers={"User-agent": "Python urllib test"}) 

# Open url using request object
response = urllib.request.urlopen(request, timeout=60)

# read response
data = response.read()

# decode your value
try:
    value = data.decode('CP949')
except UnicodeDecodeError:
    value = data.decode('UTF-8')

您可以将"Python urllib test"更改为您想要的任何内容。几乎每个服务器都使用User-agent进行统计。

最后,考虑使用appropritate空格,空行,注释来使代码更具可读性。这对你有好处。

更多阅读: