热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

urllib2和urllib3是并存关系还是代替关系

urllib2和urllib3是并存关系还是代替关系1.在python中,urllib和urllib2不可相互替代的。2.整体来说,urllib2是urllib的增强,但是urll

urllib2和urllib3是并存关系还是代替关系

1.在python中,urllib和urllib2不可相互替代的。 2.整体来说,urllib2是urllib的增强,但是urllib中有urllib2中所没有的函数。

3.urllib2可以用urllib2.openurl中设置Request参数,来修改Header头。

URLLIB3 基本用法

您需要一个PoolManager实例来发出请求。 此对象处理连接池和线程安全的所有详细信息: 您可以在headers参数指定一个字典为header 对于GET,HEAD和DELETE请求,您只需将query参数作为字典传入fields参数 对于POST,PUT请求, 如果是需要在URL中加入参数,那么需要进行 手动编码 如果使用form data 作为POST的参数,怎么可以直接在field中填入参数。

也可以指定一个json对象作为POST的body,但是这时需要设置 Content-Type为 application/json 发送文件, 首先读入文件,然后使用fields来传送数据 默认urllib3不去比verify HTTPS requests 如果需要验证的话需要安装certifi,并且在创建PoolManager的时候加入certifi 如果证书验证失败就会raise SSLError 指定request函数中的retries参数(默认会re-try3次) 这个参数也可以指定给PoolManager PoolManager 会自动创建ConnectionPool,默认会keep最多10个ConnectionPool实例 如果需要连接更多的host,那么可以加大这个max pool 同样,ConnectionPool类保留一个单独的HTTPConnection实例池。

这些连接在单个请求期间使用,并在请求完成时返回到池中。 默认情况下,只保存一个连接以供重复使用。 如果您同时向同一主机发出许多请求,则可能会提高性能以增加此数量: ConnectionPool的池的行为与PoolManager不同。 默认情况下,如果发出新请求且池中没有空闲连接,则将创建新连接。

但是,如果存在多个maxsize连接,则不会保存此连接。 这意味着maxsize不确定可以向特定主机打开的最大连接数,而只是确定要保留在池中的最大连接数。

python爬虫用什么库

以下是爬虫经常用到的库 请求库 1. requests requests库应该是现在做爬虫最火最实用的库了,非常的人性化。有关于它的使用我之前也写过一篇文章 一起看看Python之Requests库 ,大家可以去看一下。

2.urllib3 urllib3是一个非常强大的http请求库,提供一系列的操作URL的功能。

3.selenium 自动化测试工具。一个调用浏览器的 driver,通过这个库你可以直接调用浏览器完成某些操作,比如输入验证码。 对于这个库并非只是Python才能用,像JAVA、Python、C#等都能够使用selenium这个库 4.aiohttp 基于 asyncio 实现的 HTTP 框架。异步操作借助于 async/await 关键字,使用异步库进行数据抓取,可以大大提高效率。

这个属于进阶爬虫时候必须掌握的异步库。有关于aiohttp的详细操作,可以去官方文档:https://aiohttp.readthedocs.io/en/stable/ Python学习网- 专业的python自学、交流公益平台! 解析库 1、beautifulsoup html 和 XML 的解析,从网页中提取信息,同时拥有强大的API和多样解析方式。一个我经常使用的解析库,对于html的解析是非常的好用。

对于写爬虫的人来说这也是必须掌握的库。 2、lxml 支持HTML和XML的解析,支持XPath解析方式,而且解析效率非常高。 3、pyquery jQuery 的 Python 实现,能够以 jQuery 的语法来操作解析 HTML 文档,易用性和解析速度都很好。

数据存储 1、pymysql 官方文档:https://pymysql.readthedocs.io/en/latest/ 一个纯 Python 实现的 MySQL 客户端操作库。非常的实用、非常的简单。 2、pymongo 官方文档:https://api.mongodb.com/python/ 顾名思义,一个用于直接连接 mongodb 数据库进行查询操作的库。

3、redisdump redis-dump是将redis和json互转的工具;redis-dump是基于ruby开发,需要ruby环境,而且新版本的redis-dump要求2.2.2以上的ruby版本,centos中yum只能安装2.0版本的ruby。需要先安装ruby的管理工具rvm安装高版本的ruby。

python常用函数包有哪些?

一些python常用函数包: 1、Urllib3 Urllib3是一个 Python 的 HTTP 客户端,它拥有 Python 标准库中缺少的许多功能: 线程安全 连接池 客户端 SSL/TLS 验证 使用分段编码上传文件 用来重试请求和处理 HTTP 重定向的助手 支持 gzip 和 deflate 编码 HTTP 和 SOCKS 的代理支持 2、Six six 是一个是 Python 2 和 3 的兼容性库。这个项目旨在支持可同时运行在 Python 2 和 3 上的代码库。

它提供了许多可简化 Python 2 和 3 之间语法差异的函数。

3、botocore、boto3、s3transfer、awscli Botocore是 AWS 的底层接口。Botocore是 Boto3 库(#22)的基础,后者让你可以使用 Amazon S3 和 Amazon EC2 一类的服务。Botocore 还是 AWS-CLI 的基础,后者为 AWS 提供统一的命令行界面。 S3transfer(#7)是用于管理 Amazon S3 传输的 Python 库。

它正在积极开发中,其介绍页面不推荐人们现在使用,或者至少等版本固定下来再用,因为其 API 可能发生变化,在次要版本之间都可能更改。Boto3、AWS-CLI和其他许多项目都依赖s3transfer。 4、Pip pip是“Pip Installs Packages”的首字母递归缩写。

pip很容易使用。要安装一个包只需pip install 即可,而删除包只需pip uninstall 即可。 最大优点之一是它可以获取包列表,通常以requirements.txt文件的形式获取。

该文件能选择包含所需版本的详细规范。大多数 Python 项目都包含这样的文件。 如果结合使用pip与virtualenv(列表中的 #57),就可以创建可预测的隔离环境,同时不会干扰底层系统,反之亦然。

5、Python-dateutil python-dateutil模块提供了对标准datetime模块的强大扩展。我的经验是,常规的Python datetime缺少哪些功能,python-dateutil就能补足那一块。 6、Requests Requests建立在我们的 #1 库——urllib3基础上。它让 Web 请求变得非常简单。

相比urllib3来说,很多人更喜欢这个包。而且使用它的最终用户可能也比urllib3更多。后者更偏底层,并且考虑到它对内部的控制级别,它一般是作为其他项目的依赖项。 7、Certifi 近年来,几乎所有网站都转向 SSL,你可以通过地址栏中的小锁符号来识别它。

加了小锁意味着与该站点的通信是安全和加密的,能防止窃听行为。 8、Idna 根据其 PyPI 页面,idna提供了“对 RFC5891 中指定的应用程序中国际化域名(IDNA)协议的支持。” IDNA的核心是两个函数:ToASCII和ToUnicode。ToASCII会将国际 Unicode 域转换为 ASCII 字符串。

ToUnicode则逆转该过程。在IDNA包中,这些函数称为idna.encode()和idna.decode() 9、PyYAML YAML是一种数据序列化格式。它的设计宗旨是让人类和计算机都能很容易地阅读代码——人类很容易读写它的内容,计算机也可以解析它。

PyYAML是 Python 的YAML解析器和发射器,这意味着它可以读写YAML。它会把任何 Python 对象写成YAML:列表、字典,甚至是类实例都包括在内。 10、Pyasn1 像上面的IDNA一样,这个项目也非常有用: ASN.1 类型和 DER/BER/CER 编码(X.208)的纯 Python 实现 所幸这个已有数十年历史的标准有很多信息可用。

ASN.1是 Abstract Syntax Notation One 的缩写,它就像是数据序列化的教父。它来自电信行业。也许你知道协议缓冲区或 Apache Thrift?这就是它们的 1984 年版本。 11、Docutils Docutils是一个模块化系统,用来将纯文本文档处理为很多有用的格式,例如 HTML、XML 和 LaTeX 等。

Docutils能读取reStructuredText格式的纯文本文档,这种格式是类似于 MarkDown 的易读标记语法。 12、Chardet 你可以用chardet模块来检测文件或数据流的字符集。比如说,需要分析大量随机文本时,这会很有用。

但你也可以在处理远程下载的数据,但不知道用的是什么字符集时使用它。 13、RSA rsa包是一个纯 Python 的 RSA 实现。它支持: 加密和解密 签名和验证签名 根据 PKCS#1 1.5 版生成密钥 它既可以用作 Python 库,也能在命令行中使用。 14、Jmespath JMESPath,发音为“James path”,使 Python 中的 JSON 更容易使用。

它允许你声明性地指定如何从 JSON 文档中提取元素。 15、Setuptools 它是用于创建 Python 包的工具。不过,其文档很糟糕。

它没有清晰描述它的用途,并且文档中包含无效链接。最好的信息源是这个站点,特别是这个创建 Python 包。

urllib3库(四)

urllib3 是一个基于python3的功能强大,友好的http客户端。越来越多的python应用开始采用urllib3,它提供了很多python标准库里没有的重要功能。

python的urllib3库(http连接池)

url


推荐阅读
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了Redis中RDB文件和AOF文件的保存和还原机制。RDB文件用于保存和还原Redis服务器所有数据库中的键值对数据,SAVE命令和BGSAVE命令分别用于阻塞服务器和由子进程执行保存操作。同时执行SAVE命令和BGSAVE命令,以及同时执行两个BGSAVE命令都会产生竞争条件。服务器会保存所有用save选项设置的保存条件,当满足任意一个保存条件时,服务器会自动执行BGSAVE命令。此外,还介绍了RDB文件和AOF文件在操作方面的冲突以及同时执行大量磁盘写入操作的不良影响。 ... [详细]
  • 本文是关于C#类型系统、值类型和引用类型的概念性笔记。介绍了C#1系统类型的三个特性,静态类型的含义,显式类型和隐式类型的区别。还讨论了类、结构、数组类型、枚举、委托类型和接口类型属于哪一种类型。同时纠正了关于结构、引用类型和对象传递的错误表述。最后提到了C#4中使用动态类型的关键字。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Redis API
    安装启动最简启动命令行输入验证动态参数启动配置文件启动常用配置通用命令keysbdsize计算key的总数exists判断是否存在delkeyvalue删除指定的keyvalue成 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • Unity3D引擎的体系结构和功能详解
    本文详细介绍了Unity3D引擎的体系结构和功能。Unity3D是一个屡获殊荣的工具,用于创建交互式3D应用程序。它由游戏引擎和编辑器组成,支持C#、Boo和JavaScript脚本编程。该引擎涵盖了声音、图形、物理和网络功能等主题。Unity编辑器具有多语言脚本编辑器和预制装配系统等特点。本文还介绍了Unity的许可证情况。Unity基本功能有限的免费,适用于PC、MAC和Web开发。其他平台或完整的功能集需要购买许可证。 ... [详细]
  • 本文介绍了在C#中SByte类型的GetHashCode方法,该方法用于获取当前SByte实例的HashCode。给出了该方法的语法和返回值,并提供了一个示例程序演示了该方法的使用。 ... [详细]
  • Jquery 跨域问题
    为什么80%的码农都做不了架构师?JQuery1.2后getJSON方法支持跨域读取json数据,原理是利用一个叫做jsonp的概念。当然 ... [详细]
  • python中安装并使用redis相关的知识
    本文介绍了在python中安装并使用redis的相关知识,包括redis的数据缓存系统和支持的数据类型,以及在pycharm中安装redis模块和常用的字符串操作。 ... [详细]
author-avatar
苏黎世的风景
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有