python笔记——爬虫3

URLError

URLerror产生原因:

  • 网络未连接(即不能上网)
  • 服务器不存在

我们一般通过try-except语句来包围并捕获相应的异常。我们先尝试一下:

1 import urllib2
2 request=urllib2.Request(‘http://www.wujiadong.com‘)
3 try: urllib2.urlopen(request)
4 except urllib2.URLError,e:
5    print(e.reason)

HTTPError

在你利用urlopen方法发出一个请求时,服务器上都会对应一个应答对象response,其中它包含

一个数字”状态码。例如:假如response是一个"重定向",需要客户端从别的地址获取文档,

urllib2将为你处理。其他不能处理的,urlopen会产生一个HTTPError。

典型的错误包含"404"(页面无法找到),"403"(请求禁止),和"401"(带验证请求)。

HTTP状态码表示HTTP协议所返回的响应的状态。

比如客户端向服务器发送请求,如果成功地获得请求的资源,则返回的状态码为200,表示响应成功。

如果请求的资源不存在, 则通常返回404错误。

HTTP状态码通常分为5种类型,分别以1~5五个数字开头,由3位整数组成:

 1     100:继续  客户端应当继续发送请求。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应。
 2
 3     101: 转换协议  在发送完这个响应最后的空行后,服务器将会切换到在Upgrade 消息头中定义的那些协议。只有在切换新的协议更有好处的时候才应该采取类似措施。
 4
 5     102:继续处理   由WebDAV(RFC 2518)扩展的状态码,代表处理将被继续执行。
 6
 7     200:请求成功      处理方式:获得响应的内容,进行处理
 8
 9     201:请求完成,结果是创建了新资源。新创建资源的URI可在响应的实体中得到    处理方式:爬虫中不会遇到
10
11     202:请求被接受,但处理尚未完成    处理方式:阻塞等待
12
13     204:服务器端已经实现了请求,但是没有返回新的信 息。如果客户是用户代理,则无须为此更新自身的文档视图。    处理方式:丢弃
14
15     300:该状态码不被HTTP/1.0的应用程序直接使用, 只是作为3XX类型回应的默认解释。存在多个可用的被请求资源。    处理方式:若程序中能够处理,则进行进一步处理,如果程序中不能处理,则丢弃
16     301:请求到的资源都会分配一个永久的URL,这样就可以在将来通过该URL来访问此资源    处理方式:重定向到分配的URL
17
18     302:请求到的资源在一个不同的URL处临时保存     处理方式:重定向到临时的URL
19
20     304:请求的资源未更新     处理方式:丢弃
21
22     400:非法请求     处理方式:丢弃
23
24     401:未授权     处理方式:丢弃
25
26     403:禁止     处理方式:丢弃
27
28     404:没有找到     处理方式:丢弃
29
30     500:服务器内部错误  服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器端的源代码出现错误时出现。
31
32     501:服务器无法识别  服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法,并且无法支持其对任何资源的请求。
33
34     502:错误网关  作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
35
36     503:服务出错   由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是临时的,并且将在一段时间以后恢复。

HTTPError实例产生后会有一个整型‘code‘属性,是服务器发送的相关错误号。

Error Codes错误码

因为默认的处理器处理了重定向(300以外号码),并且100-299范围的号码指示成功,所以你只能看到400-599的错误号码。

1 import urllib2
2 request=urllib2.Request(‘http://bbs.csdn.net/callmewhy‘)
3 try: urllib2.urlopen(request)
4 except urllib2.URLError,e:
5    print(e.code)
6 #  print(e.reason)
7 # print(e.read())

错误代号是403,错误原因是Forbidden,说明服务器禁止访问。

方法一:加入 hasattr属性提前对属性进行判断,来处理异常

 1 from urllib2 import Request,urlopen,URLError,HTTPError
 2 request=Request(‘http://blog.csdn.net/cqcre‘)
 3 try:
 4    response=urlopen(request)
 5
 6 except URLError,e:
 7
 8    if hasattr(e,‘code‘):
 9       print(‘the server couldn\‘t fulfill the request‘)
10       print(‘Error code:‘,e.code)
11    elif hasattr(e,‘reason‘):
12       print(‘we failed to reach a server‘)
13       print(‘Reason:‘,e.reason)
14 else:
15    print(‘no exception was raised‘)
16    # everything is ok

方法二:

本篇博文为学习爬虫的笔记,内容基本是来自以下两篇博文,小部分有改动:

http://blog.csdn.net/pleasecallmewhy/article/details/8923725

http://cuiqingcai.com/961.html

时间: 2024-10-13 10:37:49

python笔记——爬虫3的相关文章

python笔记——爬虫2

网页抓取:把URL地址中指定的网络资源从网络流中读取出来,保存到本地. 在python中,使用urllib2来抓取网页.以urlopen函数的形式提供了一个非常简单的接口 函数:urlopen(url, data, timeout) url:网址     data:访问URL时要传送的数据   timeout:设置超时时间 1 import urllib2 2 response=urllib2.urlopen('http://www.hao123.com') #调用的是urllib2库里面的ur

python笔记——爬虫1

网络爬虫(Web crawler):也叫网络蜘蛛(Web spider),网络爬虫的基本操作就是抓取网页. 浏览网页:在火狐浏览器中打开百度www.baidu.com ,就是将浏览器作为一个’客户端‘, 向服务器发送一次请求, 把服务器的文件’抓取‘到本地,再进行解释和展现. HTML:是一种标记语言,用标签标记内容并加以解析和区分. 浏览器功能:将获取到的HTML代码进行解析,然后将原始的代码转变成我们直接看到的网站页面. URL(Uniform / Universal Resource Lo

python网络爬虫学习笔记

python网络爬虫学习笔记 By 钟桓 9月 4 2014 更新日期:9月 4 2014 文章目录 1. 介绍: 2. 从简单语句中开始: 3. 传送数据给服务器 4. HTTP头-描述数据的数据 5. 异常 5.0.1. URLError 5.0.2. HTTPError 5.0.3. 处理异常 5.0.4. info和geturl 6. Opener和Handler 7. Basic Authentication 8. 代理 9. Timeout 设置 10. Cookie 11. Deb

Python网络爬虫笔记(五):下载、分析京东P20销售数据

(一)  分析网页 下载下面这个链接的销售数据 https://item.jd.com/6733026.html#comment 1.      翻页的时候,谷歌F12的Network页签可以看到下面的请求. 从Preview页签可以看出,这个请求是获取评论信息的 2.      对比第一页.第二页.第三页-请求URL的区别 可以发现 page=0.page=1,0和1指的应该是页数. 第一页的 request url:没有这个rid=0& . 第二.三页-的request url:多了这个ri

python分布式爬虫打造搜索引擎--------scrapy实现

最近在网上学习一门关于scrapy爬虫的课程,觉得还不错,以下是目录还在更新中,我觉得有必要好好的做下笔记,研究研究. 第1章 课程介绍 1-1 python分布式爬虫打造搜索引擎简介 07:23 第2章 windows下搭建开发环境 2-1 pycharm的安装和简单使用 10:27 2-2 mysql和navicat的安装和使用 16:20 2-3 windows和linux下安装python2和python3 06:49 2-4 虚拟环境的安装和配置 30:53 第3章 爬虫基础知识回顾

Python笔记之不可不练

如果您已经有了一定的Python编程基础,那么本文就是为您的编程能力锦上添花,如果您刚刚开始对Python有一点点兴趣,不怕,Python的重点基础知识已经总结在博文<Python笔记之不可不知>中,尽管本文是自己学习Python过程中的总结,在大神看来,或许略欠火候,希望批评指正,万分感谢! 本文是作者学习成绩的见证,请尊重劳动成果!版权归作者和博客园共有,欢迎转载,但请保留本文出处http://www.cnblogs.com/itred/p/4687287.html ,  作者:itRed

Python网络爬虫使用总结

网络爬虫使用总结:requests–bs4–re技术路线 简要的抓取使用本技术路线就能轻松应对.参见:Python网络爬虫学习笔记(定向) 网络爬虫使用总结:scrapy(5+2结构) 使用步骤: 第一步:创建工程: 第二步:编写Spider: 第二步:编写Item Pipeline: 第四步:优化配置策略: 工程路径: 网络爬虫使用总结:展望(PhantomJS) 如上所有的两条记录路线仅仅是对网页的处理,只能爬取单纯的html代码.就需要引出"PhantomJS",PhantomJ

智普教育Python视频教程之入门基础篇,python笔记

智普教育Python视频教程之入门基础篇,python笔记 print id()内存地址 type()变量类型 windows命令行下edit命令 python数据类型不需要指定类型 定义hostname="www.google.com" 结果运行后总是告诉我NameError: name 'socket' is not defined 哪位帮我分析一下,怎么改才对 没用过socket,不过你试着在第一行加入 import socket C:\>notepad somefile.

Python:关于爬虫(1)

要使用python编写爬虫代码,我们需要解决第一个问题是: Python如何访问互联网? 回答这个问题不得不提到的就是urllib,它实际上是由两部分组成的:url+lib. url:就是我们平时所说的网页地址 lib:library的意思 URL的一般格式为(带方括号[]的为可选项): protocol://hostname[:port]/path/[;parameters][?query]#fragment URL由三部分组成: 第一部分是协议:http,https,ftp,file,ed2