网站建设及解析流程,房产网站系统哪个好,文化建设方案,网站开发建设类合同目录
一、urllib异常
二、urllib cookie登录
三、urllib handler 处理器的基本使用
四、urllib 代理和代理池
参考 一、urllib异常 URLError/HTTPError 简介#xff1a; 1.HTTPError类是URLError类的子类 2.导入的包urllib.error.HTTPError urllib.error.URLError 3.h…目录
一、urllib异常
二、urllib cookie登录
三、urllib handler 处理器的基本使用
四、urllib 代理和代理池
参考 一、urllib异常 URLError/HTTPError 简介 1.HTTPError类是URLError类的子类 2.导入的包urllib.error.HTTPError urllib.error.URLError 3.http错误http错误是针对浏览器无法连接到服务器而增加出来的错误提示。引导并告诉浏览者该页是哪里出了问题。 4.通过urllib发送请求的时候有可能会发送失败这个时候如果想让你的代码更加健壮可以通过try-except进行捕捉异常异常有两类URLError和HTTPError 完整代码
# 异常
# URLError/HTTPErrorfrom urllib.error import URLError
from urllib.error import HTTPError
import urllib.request# 正确url
# url https://blog.csdn.net/m0_45447650/article/details/1342414341# 地址错误
url https://blog.csdn.net/m0_45447650/article/details/1342414341
# 主机名错误
# url https://blob.csdn.net/m0_45447650
headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.76
}
try:# 请求对象定制request urllib.request.Request(url, headers headers)# 获取网页源码response urllib.request.urlopen(request)content response.read().decode(utf-8)print(content)
except HTTPError:print(url地址写错了)
except URLError:print(url主机名错了) 二、urllib cookie登录 # 微博的cookie登录 # 应用场景 数据采集时绕开登录进入到某个页面 完整代码
# 微博的cookie登录
# 应用场景 数据采集时绕开登录进入到某个页面# 个人信息界面是utf-8但还是报编码错误因为并没有进入到个人信息页面而是跳转到登录页面登录页面不是utf-8所以报错。
# 什么情况下访问不成功请求头的信息不够才会访问不成功
# refere :防盗链判断当前路径是不是由上一个路径进来的一般情况下是做图片的防盗链
import urllib.request
url https://weibo.com/你的微博主页
headers {User-Agent: 主页的UA,Cookie:主页的CK,Referer:https://weibo.com/
}
request urllib.request.Request(url, headers headers)
response urllib.request.urlopen(request)
content response.read().decode(utf-8)
with open (weibo.html, w,encodingutf-8) as file:file.write(content)
三、urllib handler 处理器的基本使用 为什么要学handler urllib.request.urlopen(url) 不能定制请求头 urllib.request.Request(urlheaderdata) 可以定制请求头 handler 定制更高级的请求头随着业务逻辑的复杂请求对象的定制已经满足不了我们的需求动态cookie和代理不能使用请求对象的定制 使用handler三步 1.获取handler对象 2.获取opener对象 3.调用open方法 完整代码
# 使用handler访问百度获取网页源码import urllib.request
url http://www.baidu.com
headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.76
}# 请求对象定制
request urllib.request.Request(url, headersheaders)# handler build_opener open
# 1.获取handler对象
handler urllib.request.HTTPHandler()
# 2.获取opener对象
opener urllib.request.build_opener(handler)
# 3.调用open方法
response opener.open(request)content response.read().decode(utf-8)
print(content)
四、urllib 代理和代理池 1.代理的常用功能? 1.突破自身IP访问限制访问国外站点 2.访问一些单位或团体内部资源 扩展:某大学FTP(前提是该代理地址在该资源的允许访问范围之内)使用教育网内地址段免费代理股务器就可以用于对教育网开放的各类FTP下载上传以及各类资料查询共亨等服务 3.提高访问速度 扩展: 通常代理服务器都设置一个较大的硬盘缓冲区当有外界的信息通过时同时也将其保存到缓冲区中当其他用户再访问相同的信息时 则直接由缓冲区中取出信息传给用户以提高访问速度 4.隐感真实IP 扩展:上网者也可以通过这种方法隐藏自己的IP免受攻击 2.代码配置代理 创建Reuqest对象 创建ProxyHandler对象 用handler对象创建opener对象 使用opener.open函数发送请求 使用handler模拟客户端向服务器发送请求
# handler build_opener open
handler urllib.request.ProxyHandler(proxiesproxies)
opener urllib.request.build_opener(handler)
response opener.open(request)
设置一个简单的代理池
# 代理池
proxies_pool [# key:主机端口号{http:61.216.185.88:60808},{http:182.140.244.163:8118}
]
import random
proxies random.choice((proxies_pool))
完整代码
import urllib.request
url https://www.baidu.com/s?wdip
headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.76
}# 请求对象定制
request urllib.request.Request(url, headersheaders)
# response urllib.request.urlopen(request)# 获取免费快代理 https://www.kuaidaili.com/free/
# 代理 ip 以字典的方式存在
proxies {# key:主机端口号http:61.216.185.88:60808
}
# 代理池
proxies_pool [# key:主机端口号{http:61.216.185.88:60808},{http:182.140.244.163:8118}
]
import random
proxies random.choice((proxies_pool))
# handler build_opener open
handler urllib.request.ProxyHandler(proxiesproxies)
opener urllib.request.build_opener(handler)
response opener.open(request)content response.read().decode(utf-8)
print(content)
# with open (weibo.html, w,encodingutf-8) as file:
# file.write(content)
参考
尚硅谷Python爬虫教程小白零基础速通含python基础爬虫案例