urllib2的timeout

timeout参数用于设置超时。我们在爬取一些响应较慢的网站的时候,需要设置一个比较长的超时时间。

response = urllib2.urlopen(request, timeout=10)

上述代码设置timeout为10秒。

设置Debug

import urllib2httpHandler = urllib2.HTTPHandler(debuglevel=1)
opener = urllib2.build_opener(httpHandler)
urllib2.install_opener(opener)urllib2.urlopen("http://www.zhihu.com")

URLError和HTTPError处理

事实上,并不是所有urllib2发起的请求都能得到服务器的回应。
例如

  • 网络无链接

  • 连接不到服务器

  • 链接不存在

  • 请求的方法不对

等情况都会造成urllib2抛出错误。
urllib2提供了两个Exception用于处理响应的错误。

  • URLError
    URLError是HttpError的父类。上面说到的handlers出错就会抛出URLError。

  • HTTPError
    HTTPError是URLError的子类。用于处理Http相关的错误。

HTTPError除了reson属性外还有code属性。
code属性即http状态码。更多状态码可以阅读:http://www.cnblogs.com/shanyo...

下面我们来展示一下示例代码:

import urllib2headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36"
}
request = urllib2.Request("http://blog.csdn.net/cqcre", headers = headers)httpHandler = urllib2.HTTPHandler(debuglevel=1)
opener = urllib2.build_opener(httpHandler)
urllib2.install_opener(opener)try:response = urllib2.urlopen(request)print response.getcode()
except urllib2.HTTPError, e:print e.code, e.reason
except urllib2.URLError, e:print e.reason

值得注意的是 HTTPError是URLError的子类,因此在捕获Exception的时候需要将子类放在前面避免Exception先被父类捕获。

爬虫养成记 - urllib2的调试和错误处理相关推荐

  1. 爬虫养成记--千军万马来相见(详解多线程)

    本文由图雀社区[1]成员 灿若星空[2] 写作而成,欢迎加入图雀社区,一起创作精彩的免费技术教程,予力编程行业发展. 如果您觉得我们写得还不错,记得 点赞 + 关注 + 评论 三连?????????? ...

  2. 爬虫养成记--顺藤摸瓜回首掏(女生定制篇)

    本文由图雀社区成员 灿若星空 写作而成,欢迎加入图雀社区,一起创作精彩的免费技术教程,予力编程行业发展. 如果您觉得我们写得还不错,记得 点赞 + 关注 + 评论 三连

  3. 爬虫养成记——先跨进这个精彩的世界(女生定制篇)

    本文由图雀社区成员 灿若星空 写作而成,欢迎加入图雀社区,一起创作精彩的免费技术教程,予力编程行业发展. 如果您觉得我们写得还不错,记得 点赞 + 关注 + 评论 三连

  4. 【python初学者日记】selenium初体验——“秒杀商品”、“清空购物车”技能养成记(一)

    [python初学者日记]selenium初体验--"秒杀商品"."清空购物车"技能养成记(一) 用python解决"清空购物车".&quo ...

  5. “牌面”养成记8:打好牌,从做好这60件事开始[上]

    <产品心经:产品经理应该知道的60件事(第2版)_闫荣>[微信阅读]转化笔记 这是一本通过看目录就会有很多想法的书,原书18万字,改版后在原来的50件事基础上又添加了10条性的想法.这本书 ...

  6. 【VS实践】代码调试与错误处理

    程序员的装逼技能:调试,错误处理和快捷键 学计算机3年,只知道一些基础的理论知识,写代码和调试很差,基本不会什么吧! 花时间了解一下关于这块的东西!以前觉得调试就是代码写出来一运行,有问题了分析那里出 ...

  7. python两行数据相加_python高手养成记08:教你快速写出自己的python程序

    上一篇:python高手养成记07:操作excel的4种神器 题序 前面的文章,很重要,很重要,很重要,重要的事说三遍,看完前面的文章,这个时候我们就可以开始学习,怎么样去写出自己的一个python程 ...

  8. 【转】调试JavaScript 错误的解决方案

    A  使用alert() 和document.write() 方法监视变量值 如果要中断代码的运行,监视变量的值,则使用alert() 方法: 如果需要查看的值很多,则使用document.write ...

  9. 记WinCE下调试SIM900 GSM module

    记WinCE下调试SIM900 GSM module 近几天在调试sim900,把遇到的一些问题总结下吧. 一.一些引脚的说说明. Sim900有几个引脚需要了解下. 1.  CTS.RTS 由于使用 ...

最新文章

  1. 鲁棒图的三元素:抽象对象,实体对象和控制对象
  2. xml处理相关文章收藏
  3. 获取application.yml中的属性的方法
  4. java程序设计题目_Java程序设计习题集(含答案).doc
  5. 全排列的生成算法:字典序法
  6. when is this.oModel in sap-ui-core.js initialized for navigation working
  7. 使用jquery打造一个动态的预览产品颜色效果
  8. css @media 响应式布局
  9. (35)System Verilog类静态变量详解
  10. 重新理解管理信息化促进企业变革
  11. mysql 文本处理函数,MySQL常用的文本处理函数
  12. AD09铺铜 (画完PCB后改线与铺铜冲突)
  13. ORACLE11g R2下载地址
  14. weblogic部署微服务项目
  15. 07 Java 工程师面试技巧篇
  16. android 自动更换壁纸,安卓壁纸如何设置自动更换壁纸-手机天堂
  17. 构建城市三维信息模型(CIM)与数字孪生城市可视化技术 优锘ThingJS
  18. 【干货】淘金币用户体验升级(含直播回放)
  19. 怎么把钉钉的文件导入电脑_钉钉文件怎么保存到电脑
  20. 安装LoadRunner时提示“此计算机上缺少 vc2005_sp1_with_atl_fix_redist”的解决方法

热门文章

  1. 【Objective-C】java中的interface与Objective-C中的interface的区别
  2. 修改项目图标_北京2022冬奥会和冬残奥会体育图标发布
  3. linux shell中获取mongodb最大连接数、内存使用情况等
  4. Java中什么时候使用extends,什么时候使用implements?
  5. jQuery常用工具方法
  6. 一起谈.NET技术,ASP.NET MVC 通过 FileResult 向浏览器发送文件
  7. 告别ASP.NET操作EXCEL的烦恼(总结篇)
  8. Go Elasticsearch 更新快速入门
  9. Linux 命令(60)—— strip 命令
  10. Linux 命令(12)—— wc 命令