一、urlError的处理

出现urlError产生的原因很多,比如:网络没法连接,连接不到服务器,或者服务器不存在。
在代码中,我们需要用try-except的语句来捕获相应的异常

import urllib2req = urllib2.Request('http://blog.csdn.net/cqcre')
try:urllib2.urlopen(req)
except urllib2.HTTPError, e:#使用hasattr属性判断code是否存在print e.code
except urllib2.URLError, e:print e.reason
else:print "OK"

上述代码,可以看到httperror,这里HTTPError是URLError的子类,在你利用urlopen方法发出一个请求时,服务器上都会对应一个应答对象response,其中它包含一个数字”状态码”。举个例子,假如response是一个”重定向”,需定位到别的地址获取文档,urllib2将对此进行处理,此处需要了解HTTP状态码相关知识。

二、Cookie的使用

cookie,一般是某些网站为了辨别用户身份,进行session跟踪,从而存储在客户端的数据。比如某些网站需要登录,才能访问某些页面。这里我们可以使用urllib2库保存我们登录的cookie,然后再进行抓取内容。

2.1、Opener

当你获取一个URL你使用一个opener(一个urllib2.OpenerDirector的实例)。在前面,我们都是使用的默认的opener,也就是urlopen,它是一个特殊的opener,可以理解成opener的一个特殊实例,传入的参数仅仅是url,data,timeout。

如果我们需要用到Cookie,只用这个opener是不能达到目的的,所以我们需要创建更一般的opener来实现对Cookie的设置。

2.2 Cookielib

cookielib模块的主要作用是提供可存储cookie的对象,以便于与urllib2模块配合使用来访问Internet资源。 Cookielib模块非常强大,我们可以利用本模块的CookieJar类的对象来捕获cookie并在后续连接请求时重新发送,比如可以实现模拟登录 功能。该模块主要的对象有CookieJar、FileCookieJar、MozillaCookieJar、LWPCookieJar。

它们的关系:CookieJar —-派生—->FileCookieJar —-派生—–>MozillaCookieJar和LWPCookieJar

2.2.1 获取Cookie保存到变量

import urllib2
import cookielib
#声明一个CookieJar对象实例来保存cookie
cookie = cookielib.CookieJar()
#利用urllib2库的HTTPCookieProcessor对象来创建cookie处理器
handler=urllib2.HTTPCookieProcessor(cookie)
#通过handler来构建opener
opener = urllib2.build_opener(handler)
#此处的open方法同urllib2的urlopen方法,也可以传入request
response = opener.open('http://www.baidu.com')
for item in cookie:print 'Name = '+item.nameprint 'Value = '+item.value

2.2.2 保存Cookie到文件

import cookielib
import urllib2#设置保存cookie的文件,同级目录下的cookie.txt
filename = 'cookie.txt'
#声明一个MozillaCookieJar对象实例来保存cookie,之后写入文件
cookie = cookielib.MozillaCookieJar(filename)
#利用urllib2库的HTTPCookieProcessor对象来创建cookie处理器
handler = urllib2.HTTPCookieProcessor(cookie)
#通过handler来构建opener
opener = urllib2.build_opener(handler)
#创建一个请求,原理同urllib2的urlopen
response = opener.open("http://www.baidu.com")
#保存cookie到文件
cookie.save(ignore_discard=True, ignore_expires=True)

ignore_discard的意思是即使cookies将被丢弃也将它保存下来,ignore_expires的意思是如果在该文件中 cookies已经存在,则覆盖原文件写入

2.2.3 从文件中读取cookie

import cookielib
import urllib2#创建MozillaCookieJar实例对象
cookie = cookielib.MozillaCookieJar()
#从文件中读取cookie内容到变量
cookie.load('cookie.txt', ignore_discard=True, ignore_expires=True)
#创建请求的request
req = urllib2.Request("http://www.baidu.com")
#利用urllib2的build_opener方法创建一个opener
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
response = opener.open(req)
print response.read()

这一篇又折腾折腾,结束了,可能看起来比较无聊,都是为了接下来的各种实战来做准备的,从下一篇开始,正式的进行网站的爬虫了。

推荐阅读:

【爬虫系列之一】爬虫开发环境的搭建
【爬虫系列之二】python基础知识的了解

更多精彩内容,欢迎大家关注我的微信公众号:喝醉的清茶

【爬虫系列之三】URLError异常处理以及Cookie的使用相关推荐

  1. Python2.x爬虫入门之URLError异常处理

    大家好,本节在这里主要说的是URLError还有HTTPError,以及对它们的一些处理. 1.URLError 首先解释下URLError可能产生的原因: (1)网络无连接,即本机无法上网 (2)连 ...

  2. Python爬虫入门五URLError异常处理

    本节在这里主要说的是 URLError 还有 HTTPError,以及对它们的一些处理 1.URLError 首先解释下 URLError 可能产生的原因: 网络无连接,即本机无法上网 连接不到特定的 ...

  3. scrapy爬虫系列之三--爬取图片保存到本地

    功能点:如何爬取图片,并保存到本地 爬取网站:斗鱼主播 完整代码:https://files.cnblogs.com/files/bookwed/Douyu.zip 主要代码: douyu.py im ...

  4. Python爬虫入门(5):URLError异常处理

    Python爬虫入门(1):综述 Python爬虫入门(2):爬虫基础了解 Python爬虫入门(3):Urllib库的基本使用 Python爬虫入门(4):Urllib库的高级用法 Python爬虫 ...

  5. Python爬虫入门五之URLError异常处理

    Python爬虫入门五之URLError异常处理 参考文章: (1)Python爬虫入门五之URLError异常处理 (2)https://www.cnblogs.com/pxuan/p/647362 ...

  6. Python爬虫学习系列教程-----------爬虫系列 你值的收藏

    静觅 » Python爬虫学习系列教程:http://cuiqingcai.com/1052.html 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把 ...

  7. Python爬虫入门(6):Cookie的使用

    Python爬虫入门(1):综述 Python爬虫入门(2):爬虫基础了解 Python爬虫入门(3):Urllib库的基本使用 Python爬虫入门(4):Urllib库的高级用法 Python爬虫 ...

  8. python 全栈开发,Day136(爬虫系列之第3章-Selenium模块)

    python 全栈开发,Day136(爬虫系列之第3章-Selenium模块) 一.Selenium 简介 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直 ...

  9. 完毕port(CompletionPort)具体解释 - 手把手教你玩转网络编程系列之三

       手把手叫你玩转网络编程系列之三    完毕port(Completion Port)具体解释                                                    ...

  10. requests 获取div_爬虫系列第五篇 使用requests与BeautifulSoup爬取豆瓣图书Top250

    上一篇我们学习了BeautifulSoup的基本用法,本节我们使用它来爬取豆瓣图书Top250. 一.网页分析 我们爬取的网页的url是https://book.douban.com/top250?i ...

最新文章

  1. c# yield关键字原理
  2. c#课程设计---猜猜看游戏
  3. python装饰器_python装饰器完全指南之一
  4. 使用Jmeter进行http接口测试
  5. 机器学习 数据模型_使用PyCaret将机器学习模型运送到数据—第二部分
  6. PHP简单功能的实现
  7. Spring Data Redis与Jedis的选择(转)
  8. WordPress 已过时?创始人与新架构拥护者开战
  9. leetcode 3Sum C++
  10. ubuntu 10.10 修改下载源的方法
  11. ftp ---- 配置文件(默认配置文件解读)
  12. codeigniter_MY_Model
  13. 捣鼓小米路由器开发版本
  14. esp32FreeRTOS教程——内核分配
  15. 小程序自定义下拉刷新
  16. OpenGL 头文件,库文件
  17. 《战争online超极巨兽》故事起源
  18. SpringBoot生成二维码 扫描并可下载文件
  19. Ubuntu18.04 安装NVIDIA英伟达驱动教程
  20. eclipse官方下载32位和64位的具体步骤

热门文章

  1. c#之有参和无参构造函数,扩展方法
  2. hdu 5823 color II 状压dp
  3. 智能建筑--常见协议
  4. linux 下 sudo 指令不需要输入密码的配置
  5. 程序员:如何成为一个全栈的工程师? 1
  6. Windows 2008 Domain Controller
  7. loadrunner中定义数组
  8. 【C#】Skip和Tack方法实现分页
  9. man时括号里的数字是啥意思
  10. python3--命名空间字典