一、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. [Contract] Solidity 遍历 mapping 的一种方式

    思路:为需要遍历的 mapping 再准备一个 list,之后通过 for 循环遍历 list 取得 mapping 的 key. mapping (address => uint) users ...

  2. shell 一键配置单实例oracle基础环境变量(linux7)

    #!/bin/bash echo "修改主机名" hostnamectl set-hostname wangxfa hostname sleep 1 echo "查看并关 ...

  3. 185.nvm和node.js环境配置

    安装nvm nvm(Node Version Manager)是一个用来管理node版本的工具,我们之所以使用node,是因为我们需要使用node中的npm(Node Package Manager) ...

  4. 有关css编写文字动态下划线

    <div class="main_text">哈哈这就是我的小视频</div> 上面为html代码 接下来进行css的编写 .main_text{ posi ...

  5. Network Emulator for Windows Toolkit(模拟弱网络环境的软件)

    前言和下载地址 用户会在各种网络环境下使用我们的app,pc应用,我们决不能祈求用户的网络环境都是稳定的,因此我们需要模拟出弱网络的情况,用来测试我们的APP在弱网络环境下的表现如何. Network ...

  6. 转:Flutter开发中踩过的坑

    记录一下入手Flutter后实际开发中踩过的一些坑,这些坑希望后来者踩的越少越好.本文章默认读者已经掌握Flutter初步开发基础. 坑1问题:在debug模式下,App启动第一个页面会很慢,甚至是黑 ...

  7. 【新人赛】阿里云恶意程序检测 -- 实践记录11.10 - XGBoost学习 / 代码阅读、调参经验总结

    XGBoost学习: 集成学习将多个弱学习器结合起来,优势互补,可以达到强学习器的效果.要想得到最好的集成效果,这些弱学习器应当"好而不同". 根据个体学习器的生成方法,集成学习方 ...

  8. Wannafly Winter Camp 2020 Day 7E 上升下降子序列 - 数学

    神奇公式 #include <bits/stdc++.h> using namespace std; #define int long long int n,mod,c[205][205] ...

  9. Linux系统的启动原理

    Linux系统的启动原理 RHEL的启动原理BIOS自检-MBR-启动GRUB-加载内核-systemd的init进程 systemd的初始化进程加载需要的服务,挂载文件系统/etc/fstabsys ...

  10. Java连载75-StringBuffer和StringBuilder

    一.StringBuffer和StringBuilder 1.StringBuffer是什么? 答:是一个字符串缓冲区,工作原理:预先在内存中申请一块空间以容纳字符序列,如果预留的空间,则进行自动扩容 ...