时间:2022-08-14 09:29:41 | 栏目:Python代码 | 点击:次
某些网站会检测一段时间内某IP的访问次数,若访问次数过多会禁止访问,这时需要设置一些代理服务器,每隔一段时间换一个代理。IP代理的分类:
解决http
的无状态性,第一次向服务器发送请求时,服务器生成Cookie
作为请求头并储存到浏览器中;浏览器再次发送请求时将携带Cookie信息。
import urllib.request from http import cookiejar filename = 'cookie.txt' #获取Cookie def get_cookie(): #实例化一个MozillaCookieJar用于存储cookie cookie = cookiejar.MozillaCookieJar(filename) #创建handler对象 handler = urllib.request.HTTPCookieProcessor(cookie) #创建opener对象 opener = urllib.request.build_opener(handler) #请求网址 url = 'https://tieba.baidu.com/index.html?traceid=#' resp = opener.open(url) #发送请求 #存储cookie文件 cookie.save() #读取cookie def use_cookie(): #实例化MozillaCookieJar cookie = cookiejar.MozillaCookieJar() #加载cookie文件 cookie.load(filename) print(cookie) get_cookie() use_cookie()
①urllib.error.URLError:用于捕获由urllib.request产生的异常,使用reason属性返回错误原因
import urllib.request import urllib.error url = 'http://www.google.com' try: resp = urllib.request.urlopen(url) except urllib.error.URLError as e: print(e.reason)
输出结果:
[WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
②urllib.error.HTTPError:用于处理HTTP与HTTPS请求的错误,
有三个属性:
code
:请求返回的状态码reason
:返回错误的原因headers
:请求返回的响应头信息import urllib.request import urllib.error url = 'https://movie.douban.com/' try: resp = urllib.request.urlopen(url) except urllib.error.HTTPError as e: print('原因:',e.reason) print('响应状态码:',str(e.code)) print('响应头数据:',e.headers)