# -*- 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。这是什么错误?这是服务器问题吗?所以它无法与我解决?
答案 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空格,空行,注释来使代码更具可读性。这对你有好处。
更多阅读:
urllib.request.Request
部分。