在使用 Python 做爬虫的时候,我们需要伪装头部信息骗过网站的防爬策略,Python 中的第三方模块 fake_useragent 就很好的解决了这个问题,它将给我们返回一个随机封装了好的头部信息,我们直接使用即可

fake_useragent 的使用

安装 fake_useragent

pip install fake_useragent

示例:

from fake_useragent import UserAgent

# 实例化 UserAgent 类

ua = UserAgent()

# 对应浏览器的头部信息

print(ua.ie)

print(ua.opera)

print(ua.chrome)

print(ua.firefox)

print(ua.safari)

# 随机返回头部信息,推荐使用

print(ua.random)

运行结果:

(adnice) adnice:Downloads zhangyi$ python3 fake.py

Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.1; SLCC1; .NET CLR 1.1.4322)

Opera/9.80 (Windows NT 6.1; U; fi) Presto/2.7.62 Version/11.00

Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1500.55 Safari/537.36

Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:23.0) Gecko/20131011 Firefox/23.0

Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27

Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.2117.157 Safari/537.36

fake_useragent 报错及解决方案

报错信息:

socket.timeout: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

File "d:\programdata\anaconda3\lib\site-packages\fake_useragent\utils.py", lin

e 166, in load

verify_ssl=verify_ssl,

File "d:\programdata\anaconda3\lib\site-packages\fake_useragent\utils.py", lin

e 122, in get_browser_versions

verify_ssl=verify_ssl,

File "d:\programdata\anaconda3\lib\site-packages\fake_useragent\utils.py", lin

e 84, in get

raise FakeUserAgentError('Maximum amount of retries reached')

fake_useragent.errors.FakeUserAgentError: Maximum amount of retries reached

首先找出关键报错信息:

fake_useragent.errors.FakeUserAgentError: Maximum amount of retries reached

大概意思是:这个模块尝试请求一个东西已达到最大重试次数

打开这个模块的源码进行查看发现这个库会引用在线资源,所以这个模块是进行几次尝试请求一个网站的 Json 数据,但是因为各种原因请求超时,所以就会报这个错误

fake_useragent\settings.py

# -*- coding: utf-8 -*-

from __future__ import absolute_import, unicode_literals

import os

import tempfile

__version__ = '0.1.11'

DB = os.path.join(

tempfile.gettempdir(),

'fake_useragent_{version}.json'.format(

version=__version__,

),

)

CACHE_SERVER = 'https://fake-useragent.herokuapp.com/browsers/{version}'.format(

version=__version__,

)

BROWSERS_STATS_PAGE = 'https://www.w3schools.com/browsers/default.asp'

BROWSER_BASE_PAGE = 'http://useragentstring.com/pages/useragentstring.php?name={browser}' # noqa

BROWSERS_COUNT_LIMIT = 50

REPLACEMENTS = {

' ': '',

'_': '',

}

SHORTCUTS = {

'internet explorer': 'internetexplorer',

'ie': 'internetexplorer',

'msie': 'internetexplorer',

'edge': 'internetexplorer',

'google': 'chrome',

'googlechrome': 'chrome',

'ff': 'firefox',

}

OVERRIDES = {

'Edge/IE': 'Internet Explorer',

'IE/Edge': 'Internet Explorer',

}

HTTP_TIMEOUT = 5

HTTP_RETRIES = 2

HTTP_DELAY = 0.1

解决方案:

首先第一步要进行更新 fake_useragent

pip install --upgrade fake_useragent

1. 在实例化的时候指定一些参数

禁用服务器缓存

ua = UserAgent(use_cache_server=False)

不缓存数据

ua = UserAgent(cache=False)

忽略ssl验证

ua = UserAgent(verify_ssl=False)

一般的话,通过上述解决方案都能解决了,但是我就比较悲催了,还是没解决…

2. 使用临时 Json 文件

在 fake_useragent\settings.py 发现了几个 URL,其中有一些是打不开的,所以,我们将能打开的 URL 的 Json 文件保存在本地

wget https://fake-useragent.herokuapp.com/browsers/0.1.11

这时我们就会得到一个 0.1.11 的文件,将文件名改为 fake_useragent_0.1.11.json

mv 0.1.11 fake_useragent_0.1.11.json

然后找到我们的临时文件目录(每个系统都不一样,例如 Ubuntu 在 /tmp 下)

(edison) adnice:T zhangyi$ python3

Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 16:52:21)

[Clang 6.0 (clang-600.0.57)] on darwin

Type "help", "copyright", "credits" or "license" for more information.

>>> import tempfile

>>> tempfile.gettempdir()

'/var/folders/6_/p67xz49j5wd5lzx7s2cz1cdr0000gn/T'

>>>

最后将文件拷贝到临时目录中即可

cp fake_useragent_0.1.11.json /var/folders/6_/p67xz49j5wd5lzx7s2cz1cdr0000gn/T/

当我们再次实例化 UserAgent 的时候,就会先读取本地的临时文件,这样实例化的时候就不会报错了

参考文章:https://blog.csdn.net/huiyanshizhu/article/details/84952093

————————————————

版权声明:本文为CSDN博主「极客点儿」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/yilovexing/article/details/89044980

python 3.6.6安装fake_Python3 fake_useragent 模块的使用和报错解决方案相关推荐

  1. kali linux 安装 Mysql Can‘t read from messagefile 报错解决方案

    kali linux 安装 Mysql Can't read from messagefile 报错解决方案 参考文章: (1)kali linux 安装 Mysql Can't read from ...

  2. Python 使用cv2模块 进入视觉识别的报错,报错信息为AttributeError: module ‘cv2.cv2‘ has no attribute ‘bgsegm

    Python 使用cv2模块 进入视觉识别的报错,报错信息为AttributeError: module 'cv2.cv2' has no attribute 'bgsegm 问题描述--cv2模块 ...

  3. cmd输入pip报错_安装虚拟环境+pip安装XXX包的常见操作与报错解决

    安装虚拟环境+pip安装XXX包的常见操作与报错解决​blog.csdn.net 文章目录: 一.开始前提 二.安装虚拟环境的常见操作 三.pip 的命令的常见操作:安装.更新.卸载.指定源 四.安装 ...

  4. CentOS7.3+python:zipimport.ZipImportError: can't decompress data; zlib not available报错

    文章目录 CentOS7.3+python:zipimport.ZipImportError: can't decompress data; zlib not available报错 一.前言 二.升 ...

  5. jeston nano安装torch和torchvision及几个报错原因解决方法

    本人是第一次使用jeston nano,下载torch和torchvision碰了很多壁,因此这里把经验教训写下来,希望能帮助到像我一样的小白,让大家少走点弯路,由于第一次在csdn编辑,格式不美观, ...

  6. CentOS 6安装Oracle报错解决方案

    CentOS 6安装Oracle报错解决方案 参考文章: (1)CentOS 6安装Oracle报错解决方案 (2)https://www.cnblogs.com/lonecloud/p/689568 ...

  7. yum安装出现Error: Package: glibc-headers-2.17-157.el7.x86_64 (centos7.3)类似报错解决方案

    yum安装出现Error: Package: glibc-headers-2.17-157.el7.x86_64 (centos7.3)类似报错解决方案 参考文章: (1)yum安装出现Error: ...

  8. IDEA添加模块时,插件报错:java.util.NoSuchElementException Collection is empty

    IDEA添加模块时,插件报错:java.util.NoSuchElementException: Collection is empty. 解决方法一: 根据github上面的提示说是要在插件中添加设 ...

  9. please reinstall the mysql distribution_php安装扩展mysqli的实现步骤及报错解决办法

    php安装扩展mysqli的实现步骤及报错解决办法 terminal#cd php-5.3.6/ext/mysqli #/usr/local/webserver/php/bin/phpize #./c ...

最新文章

  1. ubuntu 终端批量复制文件_《卡死你3000》批量文件复制命令详解
  2. 实现当UILable的内容超出其范围后自动滚动效果
  3. 16.U-boot的工作流程分析-2440
  4. Ubuntu16.04开机进入单用户模式,破解root密码
  5. (47)VHDL实现8位奇偶校验电路(for loop语句)
  6. SAP BC470 课程中文自学笔记
  7. 从零基础入门Tensorflow2.0 ----七、35. 文本生成之---1.数据处理
  8. 通过一个备份归档的脚本演示rsync限速和find如何删除文件
  9. 为什么建议你开一个电子签名钥匙盘?电信设备进网许可证办理
  10. POM文件配置Maven仓库地址
  11. 怎样压缩ppt的大小?
  12. 基于神经网络的房价预测,房价预测 神经网络
  13. android动态指示箭头,android – 自定义选项卡指示器(箭头像指示器)
  14. 安装MySQL绿色版本,不用装软件、不用装软件、不用装软件
  15. VUE登录注册页面,完整vue,直接复制
  16. 按照日期:蓝桥杯真题、洛谷题单、力扣题单汇总
  17. 卷积神经网络以及经典网络模型的浅谈
  18. 【微服务】分布式如何利用Skywalking实现链路追踪与监控?
  19. 操作系统实验二——进程调度算法(FCFS、RR)
  20. Python 爬金十数据

热门文章

  1. 天刀天命风流服务器所在位置,1月第二批 天刀天命风流大区合服公告
  2. HBuildX打包uniapp内存溢出解决放案
  3. QQ宠物玩结婚生个宠物小宝贝送Q友(转)
  4. VDHL VGA控制器设计实现显示器屏幕保护模块
  5. java网络编程socket\server\TCP笔记(转)
  6. [Java基础案例](菜单小程序、1~100之间的素数之和、验证码生成、数组排序、2000 年到现在的闰年、猜数游戏、空心菱形)
  7. 此URL不支持Http方法POST 解决方法
  8. 程序员的奋斗史(三十九)——大学断代史(三)——我和知乎邂逅
  9. 首届“敏捷中国”开发者大会明日召开
  10. SAP ABAP 客户主数据的 查询-创建-修改-锁定 API或BAPI