开发者社区> 游客hpxpwccdlvhye> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

【安全合规】python爬虫从0到1 - urllib中的异常

简介: python爬虫从0到1 - urllib中的异常
+关注继续查看

urllib中的异常处理

在我们写爬虫程序时,若出现url中的错误,那么我们就无法爬取我们想要的内容,对此,我们引入了urllib中的异常处理。image.png


(一)url的组成部分

URL由6个部分组成:

eg:

image.png
  1. 协议(http/https)
  2. 主机(www.baidu.com)
  3. 端口号(80/443)
  4. 路径(s)
  5. 参数(wd=易烊千玺)
  6. 锚点

常见的端口号:image.png一)URLError

通常来说,URLError报错通常为url地址中主机部分的错误:

实例:

url = 'https://www.baidu.com1/'

运行结果:image.png

(二)HTTPError

这个异常的通常是url地址中参数或是路径的错误。

实例:

url = 'https://www.jianshu.com/p/3388cf148dba1'

运行结果:image.png

(三)简介


HTTPError类是URLError类的子类

导入的包urllib.error.HTTPError/urllib.error.URLError

http错误:http错误是针对浏览器无法连接到服务器而增加的出来的错误提示,引导并告诉浏览者该页是出了什么问题。

通过urllib发送请求的时候,有可能会发送失败,这个时候如果想让你的代码更健壮,可以通过try -except进行捕获异常。

(四)Urllib.error 模块

urllib.error 模块为 urllib.request 所引发的异常定义了异常类,基础异常类是 URLError。

urllib.error 包含了两个方法,URLError 和 HTTPError。

URLError 是 OSError 的一个子类,用于处理程序在遇到问题时会引发此异常(或其派生的异常)。

HTTPError 是 URLError 的一个子类,用于处理特殊 HTTP 错误例如作为认证请求的时候,包含的属性 code 为 HTTP 的状态码, reason 为引发异常的原因,headers 为导致 HTTPError 的特定 HTTP 请求的 HTTP 响应头。


(五)异常处理


用try except语句块捕获并处理异常,其基本语法结构如下所示:

image.png

import urllib.request
import urllib.error

url = 'https://www.jianshu.com1/p/3388cf148dba'
# url的组成 eg:https://www.baidu.com/s?wd=易烊千玺
# 1.协议(http/https) 2.主机(www.baidu.com) 3.端口号(80/443) 4.路径(s) 5.参数(wd=易烊千玺) 6.锚点
#  常见的端口号
# http(80) https(443) mysql(3306) oracle(1521) redis(6379) mongodb(27017)

headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36'
}
try:
    request = urllib.request.Request(url = url,headers = headers)

    response = urllib.request.urlopen(request)

    content = response.read().decode('utf8')

    print(content)
    
except urllib.error.HTTPError:
    print('HTTP异常,请稍后!')
except urllib.error.URLError:
    print('URL异常,请稍后!')

image.pngimage.png由于HTTPRError是URLError的子类,所以需先写httperror的异常处理,否则一律认为是URLError的异常。

urllib的异常处理就写到这啦,希望大家都不会出现异常。image.png

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Python爬虫:scrapy中间件及一些参数
Python爬虫:scrapy中间件及一些参数
21 0
Python爬虫:python2使用scrapy输出unicode乱码
Python爬虫:python2使用scrapy输出unicode乱码
18 0
Python爬虫:scrapy直接运行爬虫
Python爬虫:scrapy直接运行爬虫
17 0
Python爬虫:scrapy辅助功能实用函数
Python爬虫:scrapy辅助功能实用函数
17 0
Python爬虫:Scrapy的Crawler对象及扩展Extensions和信号Signa
Python爬虫:Scrapy的Crawler对象及扩展Extensions和信号Signa
25 0
Python爬虫:关于scrapy模块的请求头
Python爬虫:关于scrapy模块的请求头
33 0
Python爬虫:scrapy管理服务器返回的cookie
Python爬虫:scrapy管理服务器返回的cookie
14 0
Python爬虫:Scrapy优化参数设置
Python爬虫:Scrapy优化参数设置
26 0
Python爬虫之scrapy从入门到忘记
一、初窥scrapy scrapy中文文档 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。
833 0
77
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载