Python获取网页状态码

 在网页爬取的时候,有时候需要判断下要爬取网页的网页HTTP状态码,然后再进行相关的工作。

1.网页HTTP状态码

       HTTP状态码表示HTTP协议所返回的响应状态。具体参考:http://baike.baidu.com/view/1790469.htm?fr=aladdin

       HTTP状态码有5种,所有状态码的第一个数字代表了响应的5种状态之一:(1)消息:1XX;(2)成功:2XX;(3)重定向:3XX;(4)请求错误:4XX;(5)服务器错误:5XX.

       我目前常用的就两种:

       (1)200:请求成功,请求所希望的响应头或者数据体随此响应返回。

       (2)404:Not Found,请求失败,表示请求的资源未被在服务器上发现。整个状态可能是暂时的,也可能是永久的。所以,要做好该状态下的处理。

2.Python获取HTTP状态码

       根据查找的资料,目前常用的有3中方法获取HTTP状态码。

       (1)requests库

[python]  view plain  copy
  1. #coding=utf-8  
  2.    
  3. import requests  
  4.    
  5. def get_status(url):  
  6.     r = requests.get(url, allow_redirects = False)  
  7.     return r.status_code  
  8.       
  9. def main():  
  10.     status=get_status('http://www.baidu.com/')  
  11.   
  12.     if status==200:  
  13.         print "Success"  
  14.     else:  
  15.         print "Failed"  
  16.   
  17.   
  18. if __name__=="__main__":  
  19.     main();  

       (2)urllib库

[python]  view plain  copy
  1. #conding:utf-8  
  2.   
  3. import urllib  
  4.   
  5. def get_status(url):  
  6.     res=urllib.urlopen(url)  
  7.     page_status=res.getcode()  
  8.     return page_status  
  9.   
  10. def main():  
  11.     url="http://www.baidu.com/"  
  12.     page_status=get_status(url)  
  13.     print page_status  
  14.   
  15. if __name__=="__main__":  
  16.     main()  

       (3)urllib2库

[python]  view plain  copy
  1. #coding:utf-8  
  2.   
  3. import urllib2  
  4.   
  5. def show_status(url):     
  6.     req = urllib2.Request(url)  
  7.     try:  
  8.          response = urllib2.urlopen(req)  
  9.     except urllib2.URLError, e:  
  10.         error_status=e.code  
  11.         print error_status  
  12.     else:  
  13.         print 'Success'  
  14.   
  15. def main():  
  16.     url="http://www.baidu.com/"  
  17.     show_status(url)  
  18.   
  19. if __name__=="__main__":  
  20.     main()  
3.应对异常

      首先引入URLError的概念,URLError在没有网络连接或者服务器不存在的情况下产生的异常。HTTPError是URLError的子类,所以在捕捉异常时要注意二者的顺序。常见的异常捕捉方式及应对方式为:

[python]  view plain  copy
  1. #coding:utf-8  
  2.   
  3. from urllib2 import Request, urlopen, URLError, HTTPError  
  4.   
  5. def show_status(url):     
  6.     req = Request(url)  
  7.     try:  
  8.          response = urlopen(req)  
  9.     except HTTPError, e:  
  10.          print 'Error code: ', e.code  
  11.     except URLError, e:  
  12.          print 'Reason: ', e.reason  
  13.     else:  
  14.         print 'Success'  
  15.   
  16. def main():  
  17.     url="http://www.baidu.com/"  
  18.     show_status(url)  
  19.   
  20. if __name__=="__main__":  
  21.     main()  
  22. 转载自:http://blog.csdn.net/edward2jason/article/details/38379931
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值