一、error

1.URLError产生的原因:(1)没有网络;(2)服务器连接失败;(3)不知道指定服务器;(4)是OSError的子类

from urllib import request,error

​

if __name__ == "__main__":

    url = "http://www.baidu.comfdsfdfsf"

    try:

        req = request.Request(url)

        rsp = request.urlopen(req)

        html = rsp.read().decode()

        print(html)

    except error.URLError as e:

        print("URLError:{0}".format(e.reason))

        print("URLError:{0}".format(e))

    except Exception as e:

        print(e)

2.HTTPError是URLError的一个子类

3.两者区别:HTTPError是对应的HTTP请求的返回码错误,如果返回错误码码是400以上的,则引发HTTPError;URLError对应的一般时网络出现问题,包括url问题;关系区别:OSError-URLError-HTTPError

二、useragent

1.UserAgent:用户代理,简称UA,属于heads的一部分,服务器通过UA来判断访问者身份;常见的UA值,使用的时候可以直接复制粘贴,也可以用浏览器访问的时候抓包。如下面的链接:

https://blog.csdn.net/wangqing84411433/article/details/89600335

2.设置UA可以通过两种方式:heads\


    url2 = "http://www.baiu.com"

    try:

        #使用head方法伪装UA

        headers = {}

        headers["User-Agent"] = "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"

        req2 = request.Request(url2,headers=headers)

        rsp2 =  request.urlopen(req2)

        html2 = rsp2.read().decode()

        print(html2)

    except error.HTTPError as e:

        print("URLError:{0}".format(e.reason))

        print("URLError:{0}".format(e))

    except error.URLError as e:

        print("URLError:{0}".format(e.reason))

        print("URLError:{0}".format(e))

    except Exception as e:

        print(e)

也可以把

req2 = request.Request(url2,headers=headers)

改成如下形式也可以


        req2 = request.Request(url2)

        req2.add_header("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko")

三、源码

Reptile4_ErrrorAndUserAgent.py

https://github.com/ruigege66/PythonReptile/blob/master/Reptile4_ErrrorAndUserAgent.py​

2.CSDN:https://blog.csdn.net/weixin_44630050

3.博客园:https://www.cnblogs.com/ruigege0000/

4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料

Python爬虫连载4-Error模块、Useragent详解的更多相关文章

  1. Python标准库之Sys模块使用详解

    sys 模块提供了许多函数和变量来处理 Python 运行时环境的不同部分. 处理命令行参数 在解释器启动后, argv 列表包含了传递给脚本的所有参数, 列表的第一个元素为脚本自身的名称. 使用sy ...

  2. Python 命令行工具 argparse 模块使用详解

    先来介绍一把最基本的用法 import argparse parser = argparse.ArgumentParser() parser.parse_args() 在执行 parse_args() ...

  3. python中os和sys模块的详解

    平时在工作中经常会用到os模块和sys模块的一些特性,下面是这些特性的一些相关解释,希望对大家有所帮助 os模块 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os. ...

  4. 【python基础】os.path模块常用方法详解

    os.path模块 主要用于文件的属性获取,在编程中经常用到,以下是该模块的几种常用方法. 更多的方法可以去查看官方文档:http://docs.python.org/library/os.path. ...

  5. python的内置模块之os模块方法详解以及使用

    1.getcwd() 获取当前工作路径 import os print(os.getcwd()) C:\python35\python3.exe D:/pyproject/day21模块/os模块.p ...

  6. python的内置模块random随机模块方法详解以及使用案例(五位数随机验证码的实现)

    1.random(self): Get the next random number in the range [0.0, 1.0) 取0到1直接的随机浮点数 import random print( ...

  7. 转python爬虫:BeautifulSoup 使用select方法详解

    1 html = """ 2 <html><head><title>The Dormouse's story</title> ...

  8. Python爬虫与数据分析之模块:内置模块、开源模块、自定义模块

    专栏目录: Python爬虫与数据分析之python教学视频.python源码分享,python Python爬虫与数据分析之基础教程:Python的语法.字典.元组.列表 Python爬虫与数据分析 ...

  9. python之模块datetime详解

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之模块datetime详解 import datetime #data=datetime.dat ...

  10. Python 双向队列Deque、单向队列Queue 模块使用详解

    Python 双向队列Deque 模块使用详解 创建双向队列Deque序列 双向队列Deque提供了类似list的操作方法: #!/usr/bin/python3 import collections ...

随机推荐

  1. js对象模型1

  2. html网页基本结构

    <!DOCTYPE> 不是 HTML 标签.它为浏览器提供一项信息(声明),即 HTML 是用什么版本编写的. HTML5 DOCTYPE 的 HTML 文档类型如下: <!DOCT ...

  3. vue_day01

    Vue_day01 1. 认识vue 1.1 什么是vue (1)Vue是构建界面的渐进式的js框架 (2)只关注视图层, 采用自底向上增量开发的设计. (3)Vue 的目标是通过尽可能简单的 API ...

  4. (办公)记事本_Linux查找命令

    参考谷粒学院的linux视频教程:http://www.gulixueyuan.com/course/300/task/7091/show 搜索命令 .whereis命令: 1.1.Linux whe ...

  5. composer封装dd函数

    1.安装composer,本人用的phpstudy,打开php扩展php_openssl 2.切换到www目录下 cmd 命令 composer 第一个就是我们要找的 3.运行composer req ...

  6. Tomcat + mysql + myeclipse 启动遇到的问题

    1. 问题: Tomcat启动时报错如下:Table 'performance_schema.session_variables' doesn't exist 2. 网络上普遍找到的解决办法: 控制台 ...

  7. 项目在UAP可以直接启动,但是在eclipse上面不能直接启动

    上面两个eclipse都是用友的开发人员给我的,左边是驻场开发给我的,但是没有教我怎么用和哪里好用,所以一直用UAP来做开发.右边的eclipse是提ISM问题,北京用友远程调试问题时给我的,而且终于 ...

  8. 什么人适合学习Django?

    什么人适合学习Django? 我觉得如果你能满足以下2个条件,你就可以果断地选择Django了. 你喜欢Python, 你对Web开发有热情. 学习Python和Django并不难,最重要的是你是否对 ...

  9. “石家庄铁道大学软件工程系学生学籍管理系统2019版”java小程序制作分享

    首先附上完整代码: import java.util.Scanner; public class SocreInformation { public SocreInformation(){}; pub ...

  10. Codeforces Round #615 (Div. 3) 补题记录

    第一次搞CF,结果惨不忍睹...还是太菜了 A:要用到全部的钱,所以总数必须是3的倍数,而且初始状态下任意一人的钱数不能超过总数除以3,否则没法分了 (也就这个签到算是在我能力范围之内了....) # ...