一、 urllib—异常
1. urllib.error.HTTPError
2. urllib.error.URLError
# _*_ coding : utf-8 _*_
# @Time : 2025/2/14 11:33
# @Author : 20250206-里奥
# @File : demo26_异常
# @Project : PythonProject10-14
import urllib.request
import urllib.error
from demo17_qingqiuduixaingdedingzhi import request
# https://blog.csdn.net/CSDNy666999/article/details/145624779?spm=1001.2014.3001.5501
# url
# url = "https://blog.csdn.net/qq_71745595/article/details/143988362"
# 错误网址:测试异常用
# url = "https://blog.csdn.net/qq_71745595/article/details/143988362111"
# 测试第2种异常,域名错/参数错时,报错
url = "http://hahaha111.com"
#headers
headers = {
"User-Agent":
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0"
}
# 请求对象定制
import urllib.request
#捕获异常
try:
request = urllib.request.Request(url=url,headers=headers)
#模拟浏览器向服务器发送请求
response = urllib.request.urlopen(request)
# 响应数据
content = response.read().decode('utf-8')
# 打印
print(content)
#导入urllib.error
# 第1种异常
except urllib.error.HTTPError:
print("系统正在升级...")
# 第2种异常;主机地址错误或参数错误时,报错
except urllib.error.URLError:
print("系统仍在升级...")
二、 urllib—cookie登录
# _*_ coding : utf-8 _*_
# @Time : 2025/2/14 12:49
# @Author : 20250206-里奥
# @File : demo26_微博的cookie登录
# @Project : PythonProject10-14
# 访问不成功。 原因:请求头信息不够
# 个人信息页码是utf-8格式,但是报了编码错误。 原因:跳转到登录页面,并未进入个人信息页面(登录页面不是utf-8,所以报错)
import urllib.request
from demo17_qingqiuduixaingdedingzhi import request, response
# 应用场景:采集数据时,绕过登录,进入某个页面
# url
url = "https://weibo.com/u/5591107118"
#headers
headers = {
# cookie中携带着登录信息
# 如果有登录后的cookie,就可以进入任何页面
#referer 防盗链; 判断当前路径,是不是由上一个进来的
# 一般情况下,做图片的防盗链
}
# 请求对象定制
request = urllib.request.Request(url=url,headers=headers)
# 模拟浏览器向服务器发送请求
response = response.request.urlopen(request)
# 获取响应数据
content = response.read().decode('utf-8')
# 将数据存到本地
with open('微博_' + '.html','w',encoding='utf-8') as fp:
fp.write(content)
# 批量修改请求头信息的格式
# 工具:editplus。 使用:文件——标准文档——CTRL + A——CTRL + H——勾选正则表达式——选择第一个——选择第一个——全部替换