用python写网络爬虫第一课之编写可复用的下载模块的视频,发现和《用Python写网络爬虫》一书很像,写了点笔记:

 #-*-coding:utf-8-*-

 import urllib2

 #下载时遇到的错误经常是临时性的,比如服务器过载时返回的 503 Service Unavailable错误。对于此类错误,我们可以尝试重新下载

 def download(url, num_retries = 2):                          #默认重试次数为2次
     print "Downloading:", url
     try:
         request = urllib2.Request(url)
         response = urllib2.urlopen(url)
         html = response.read()
     except urllib2.URLError as e:
         print "Download error:", e.reason                     #打印报错的原因
         html = None
         if num_retries > 0:
             if hasattr(e, 'code') and 500 <= e.code < 600:    #错误码500-600是服务器端错误
                 return download(url, num_retries - 1)         #当download函数遇到5xx错误码时,将会递归调用函数自身进行重试,此时重试次数-1
     return html

 download('http://httpstat.us/500')                            #如果想改变重试此时,可以写成download('http://httpstat.us/500', 1) ,此时将会重试一次

运行结果:

我们也可以加一个print dir(e)来查看e中的内容,e中的确包含着code

Python爬虫之编写一个可复用的下载模块的更多相关文章

  1. 使用 python 编写一个授权登录验证的模块

    使用 python 编写一个授权登录验证的模块 我们编写的思路: 1.登录的逻辑:如果用户名和密码正确,就返回 token . 2.生成 token 的逻辑,根据用户名,随机数,当前时间 + 2 小时 ...

  2. python练习:编写一个程序,要求用户输入10个整数,然后输出其中最大的奇数,如果用户没有输入奇数,则输出一个消息进行说明。

    python练习:编写一个程序,要求用户输入10个整数,然后输出其中最大的奇数,如果用户没有输入奇数,则输出一个消息进行说明. 重难点:通过input函数输入的行消息为字符串格式,必须转换为整型,否则 ...

  3. python练习:编写一个程序,检查3个变量x,y,z,输出其中最大的奇数。如果其中没有奇数,就输出一个消息进行说明。

    python练习:编写一个程序,检查3个变量x,y,z,输出其中最大的奇数.如果其中没有奇数,就输出一个消息进行说明. 笔者是只使用条件语句实行的.(if-else) 重难点:先把三个数进行由小到大的 ...

  4. python练习:编写一个函数isIn,接受两个字符串作为参数,如果一个字符串是另一个字符串的一部分,返回True,否则返回False。

    python练习:编写一个函数isIn,接受两个字符串作为参数,如果一个字符串是另一个字符串的一部分,返回True,否则返回False. 重难点:定义函数的方法.使用str类型的find()函数,可以 ...

  5. python练习:编写一个程序,要求用户输入一个整数,然后输出两个整数root和pwr,满足0<pwr<6,并且root**pwr等于用户输入的整数。如果不存在这样一对整数,则输入一条消息进行说明。

    python练习:编写一个程序,要求用户输入一个整数,然后输出两个整数root和pwr,满足0<pwr<6,并且root**pwr等于用户输入的整数.如果不存在这样一对整数,则输入一条消息 ...

  6. 编写一个可复用的SpringBoot应用运维脚本

    前提 作为Java开发者,很多场景下会使用SpringBoot开发Web应用,目前微服务主流SpringCloud全家桶也是基于SpringBoot搭建的.SpringBoot应用部署到服务器上,需要 ...

  7. Python 爬虫的工具列表 附Github代码下载链接

    Python爬虫视频教程零基础小白到scrapy爬虫高手-轻松入门 https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.482434a6E ...

  8. MFC+WinPcap编写一个嗅探器之五(过滤模块)

    这一节主要介绍如何获设置捕获过滤,这里的过滤是指在捕获前过滤 设置捕获过滤主要是在CFilterDlg中完成,也就是对应之前创建的设置过滤规则对话框,如图: 首先要根据用户的选择来生成一个合法的过滤规 ...

  9. MFC+WinPcap编写一个嗅探器之四(获取模块)

    这一节主要介绍如何获取设备列表,比较简单 获取设备列表主要是在CAdpDlg中完成,也就是对应之前创建的选择适配器模块,如图: 当打开选择适配器对话框后,在列表视图控件中显示当前主机所有适配器及适配器 ...

随机推荐

  1. checkmarx使用笔记、原理

    checkmarks是一款商业的代码静态分析工具,和pmd类似的地方是他分析的是java文件,而非class文件.checkmarks使用 .net开发,必须安装在windows上,它的规则也是类似. ...

  2. MySQL权限系统(二). MySQL提供的特权 Privileges Provided by MySQL

    MySQL provides privileges that apply in different contexts and at different levels of operation: Adm ...

  3. centos系统时间相差8个小时解决方案

    查看当前系统时间 [root@centos64 ~]# date 查看硬件时间 [root@centos64 ~]# hwclock --show 同步时间可以用:ntpdate us.pool.nt ...

  4. C++学习之旅get、getline的使用方法

    C++学习之旅get.getline的使用方法 面向行的输入:cin.getline(). 该函数读取整行.它使用通过回车键输入的换行符来确定输入结尾.要调用这样的方法,能够使用cin.getline ...

  5. always on 技术

    always on 技术系列:https://blog.csdn.net/dba_huangzj/article/details/54015470 MSSQL 2014 /WIN SERVER 200 ...

  6. (4.6)sql server索引缺失提示

    SQLSERVER如何查看索引缺失 sql server索引缺失提示 当大家发现数据库查询性能很慢的时候,大家都会想到加索引来优化数据库查询性能, 但是面对一个复杂的SQL语句,找到一个优化的索引组合 ...

  7. Oracle学习笔记—Oracle左连接、右连接、全外连接以及(+)号用法(转载)

    转载自: Oracle左连接.右连接.全外连接以及(+)号用法 对于外连接,Oracle中可以使用“(+)”来表示. 关于使用(+)的一些注意事项: (+)操作符只能出现在WHERE子句中,并且不能与 ...

  8. [JavaScript]常用的页面倒计时

    倒计时是web开发中比较常用的,以下列出常用的几个倒计时方法,仅供参考: 一 :页面倒计时 原理一般都是通过 setTimeout 或 setInterval 函数实现,下面是一个最简单的倒计时 &l ...

  9. SQL Server 简单事务学习

    select * from bank ) ) --打开一个事务 begin tran --定义临时变量 ; set @num = @num + @@error; --上一条语句出错次数 set @nu ...

  10. 建议40:深入掌握ConfigParser

    # -*- coding:utf-8 -*- ''' 1.getboolean() 根据一定的规则将配置项的值转换为布尔值 getboolean() 的真值规则: 0.no.false 和off 都会 ...