PYTHON爬虫学习——urllib库之Debuglog与URLError实战练习
来源:互联网 发布:mac os破解版 编辑:程序博客网 时间:2024/06/03 21:32
算是补前段时间学习爬虫的坑吧,这几天捡回来发现好多东西都忘了,所以写写记录下来,主要是跟着《精通PYTHON网络爬虫》这本书来学习
版本:PYTHON 3.5.2
工具:Spyder
代码如下:
import urllib.request
import urllib.parse
import urllib.error
httpsn=urllib.request.HTTPHandler(debuglevel=1)
httphn=urllib.request.HTTPSHandler(debuglevel=1)
opener=urllib.request.build_opener(httpsn,httphn)
urllib.request.install_opener(opener)
url='https://nba.hupu.com/'
rep=urllib.request.Request(url)
rep.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36')
try:
data=urllib.request.urlopen(rep).read()
except urllib.error.URLError as e:
if hasattr(e,'code'):
print(e.code)
if hasattr(e,'reason' ):
print(e.reason)
with open(r'C:\Users\10357\Desktop\3.html','wb')as file:
file.write(data)
print("finished!")
1).先分别使用urllib.request.HTTPHandler和urllib.request.HTTPSHandler,并且将debuglevel设置为1.
2)之后使用urllib.request.build_opener创建出自定义的opener对象,将1)中内容设定为参数,接着用urllib.request.install_opener创建全局默认的opener对象,因此我们可以在使用urlopen时也可以使用我们自己安装的opener对象
3)接着使用urllib.request.Request来读取url信息,用add_header添加对应的浏览器头部信息
4)然后使用URLError进行异常处理:先做一个判断,如果有e.code则输出对应信息,没有则自动忽略。e.reason()同理。并且使用hasattr()来判断是否有这些属性
5)最后将爬取到的虎扑篮球网页保存到桌面,输出finished!
心得:感觉urllib库中比较关键的地方就是url.request.build——opener()和add_header()这俩部分吧,前者可以修改报头,后者可以实现对应的浏览器模拟,减少被网站反爬的可能性。debuglog则是可以让我们实时观察到运行日志;try..except是经常用来进行异常处理,配合URLError,可以及时发现爬虫中出现的与url有关的异常,非常的好用。
更高级点的内容之后慢慢补吧。。
- PYTHON爬虫学习——urllib库之Debuglog与URLError实战练习
- python爬虫-urllib库学习
- Urllib库与URLError异常处理
- Python爬虫教程——入门五之URLError异常处理
- Python爬虫之URLError异常处理
- Python爬虫入门——URLError异常处理
- python爬虫urllib库学习(源码)
- Python爬虫-urllib库
- Python 图片爬虫实战(使用 urllib 库)
- Python学习之urllib库
- Python爬虫教程——入门三之Urllib库的基本使用
- Python爬虫教程——入门四之Urllib库的高级用法
- Python爬虫之urllib介绍
- Python爬虫(二)——urllib库,Post与Get数据传送区别,设置Headers,urlopen方法,简单爬虫
- 爬虫实战之四--urllib库的使用详解
- python轻量级爬虫学习笔记 之 urllib的应用
- python爬虫之urllib模块和requests模块学习
- python库——urllib学习
- 李嘉诚汕头大学2017毕业演讲
- 2009国家公务员面试过关点点通
- CSS3学习
- Java虚拟机
- 使用Authenticator和send静态方法发送邮件
- PYTHON爬虫学习——urllib库之Debuglog与URLError实战练习
- springmvc拦截器
- 关于IntelliJ IDEA如何生成jsp头信息
- eclipse8.5-svn连接插件与mysql-5.6.17-win32安装方法
- 前端工程师如何定位自己等级层次
- 万能适配器(二)
- 分析一下到底是上升沿还是下降沿读写数据
- Redis详细介绍
- Python2.7抓取豆瓣美女图片