Python爬虫核心模块urllib的学习

news2024/9/25 13:24:56

在这里插入图片描述

​ 因为在玩Python challenge的时候,有用过这个模块,而且学习这个模块之后也对系统学习网络爬虫有用。

​ 当时查了各种资料学习,没有碰官网文档(因为还是对英语有抗拒性),但是还是官方的文档最具权威和学习价值,因此想要此次翻译官方文档的同时,锻炼自己的英语能力,也对urllib模块加深理解。

​ 因为是为了自己复习起来方便所以就不一句英语一句中文的对照着翻了,有兴趣看原版的,自己点官方文档吧

​ Python 3.x版本后的urllib和urllib2

​ 现在的Python已经出到了3.5.2

​ 在Python 3以后的版本中,urllib2这个模块已经不单独存在(也就是说当你import urllib2时,系统提示你没这个模块),urllib2被合并到了urllib中,叫做urllib.request 和 urllib.error 。

​ urllib整个模块分为urllib.request, urllib.parse, urllib.error。

例: 其中urllib2.urlopen()变成了urllib.request.urlopen() urllib2.Request()变成了urllib.request.Request()

​ urllib和urllib2模块之间的区别

​ 在python中,urllib和urllib2不可相互替代的。整体来说,urllib2是urllib的增强,但是urllib中有urllib2中所没有的函数。urllib2可以用urllib2.openurl中设置Request参数,来修改Header头。如果你访问一个网站,想更改User Agent(可以伪装你的浏览器),你就要用urllib2、urllib支持设置编码的函数,urllib.urlencode,在模拟登陆的时候,经常要post编码之后的参数,所以要想不使用第三方库完成模拟登录,你就需要使用urllib。

urllib一般和urllib2一起搭配使用

官方文档地址

翻译的是Python 3.5.2版本,对应的urllib

https://docs.python.org/3.5/library/urllib.html

urllib整体介绍

翻译的对应的是21.6. urllib.request — Extensible library for opening URLs

urllib- - - - - - URL处理模块

​ 源代码:Lib / urllib /

​ urllib是一个包,收集几个模块来处理网址:

​ urllib.request打开和浏览url中内容 urllib.error包含从 urllib.request发生的错误或异常 urllib.parse解析url urllib.robotparser解析 robots.txt文件

​ urllib.request

urllib.request — 为打开url提供的可扩展类库

​ 源代码:Lib / urllib / request.py

​ urllib.request模块定义了方法和类,帮助打开url(主要是HTTP)在一个复杂的世界——基本和摘要式身份验证,重定向,cookies等等。

————-urllib.request模块定义了以下功能:—————–

​ urllib.request.urlopen()

​ urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)

打开网址URL,这可以是一个字符串或一个 Request对象。

​ 数据必须是一个字节对象指定额外的数据发送到服务器或None。如果没有这样的数据是必要的,数据也可能是一个iterable对象而且在这种情况下必须在最开始时指定内容的长度。目前HTTP是唯一一个这样请求数据的,当数据参数被提供时,HTTP请求将会执行POST请求而不是GET请求。

​ 数据应该是一个缓冲的在标准应用程序中以 x-www-form-urlencoded的格式。 urllib.parse.urlencode()函数接受一个映射或序列集合,并返回一个ASCII文本字符串的格式。它应该在被用作数据参数之前,被编码为字节。

​ urllib.request 模块 使用 HTTP/1.1协议,并且包括请求 Connection:close在HTTP请求头。可选的第二个超时参数timeout,用于阻塞操作,比如连接请求(如果未指定,全球将使用默认超时设置)。这实际上只适用于HTTP、HTTPS和FTP连接。

​ 如果context被指定,它必须是一个 ssl.SSLContext实例描述各种SSL选项。点击HTTPSConnection查看更多细节。可选cafile和capath参数指定一组被HTTPS请求信任的CA证书。cafile应该指向一个文件包含CA证书的包,而capath应该指向一个散列的证书文件的目录。点击ssl.SSLContext.load_verify_locations()查看更多的信息。

cadefault参数被忽略。这个函数始终返回一个对象,像context(上下文) 管理者并提供这些方法

​ geturl()——返回URL的资源检索,常常重定向之后使用

​ info()——返回页面的元信息,如标题,组成 email.message_from_string(的)实例(见快速参考HTTP头)

​ getcode()——返回响应的HTTP状态代码。

​ 为HTTP和HTTPS url,这个函数返回的一个http.client.HTTPResponse对象略有不同。除了上面的三种新方法中,这个message属性包含相同的信息像reason属性——由服务器返回的原因——而不是响应头,因为它在文档中指定 HTTPResponse。

​ FTP、文件和数据请求url和显式地处理 URLopener和 FancyURLopener类,这个函数返回一个 urllib.response.addinfourl对象。

​ urllib.request.urlopen()会在 URLError中抛出协议错误。请注意,,可能返回None,这在没有处理程序处理请求(尽管全球默认安装 OpenerDirector并使用 UnknownHandler以确保这不会发生)时发生。

​ 此外,如果检测到代理设置(例如,当一个 *_proxy环境变量如http_proxy已经被设定),,ProxyHandler默认安装并确保请求都通过代理来处理。遗留的 urllib.urlopen从Python 2.6和更早已经被中断;;urllib.request.urlopen()对应于旧的 urllib2.urlopen。代理处理,是通过字典参数完成的 urllib.urlopen可以使用 ProxyHandler对象。

​ 3.2版本的变化:cafile和capath被补充。

​ 3.2版本的变化:如果可能的话,现在支持HTTPS虚拟主机(也就是说,如果 ssl.HAS_SNI是真的)。

​ 在新的3.2版本:数据可以是一个iterable对象。

​ 3.3版本的变化:cadefault被补充。

​ 3.4.3版本的变化:context被补充。

​ 安装一个 OpenerDirector实例作为全球默认的opener 。安装一个opener 必要的,如果你想让urlopen使用这个opener ;否则,简单地调用 OpenerDirector.open()而不是urlopen()。这样代码不会检查一个真实的 OpenerDirector并且任何类的适当的接口都可以运作。

最后

分享一份Python的学习资料,但由于篇幅有限,完整文档可以扫码免费领取!!!

1)Python所有方向的学习路线(新版)

总结的Python爬虫和数据分析等各个方向应该学习的技术栈。

在这里插入图片描述

比如说爬虫这一块,很多人以为学了xpath和PyQuery等几个解析库之后就精通的python爬虫,其实路还有很长,比如说移动端爬虫和JS逆向等等。

img

(2)Python学习视频

包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然达不到大佬的程度,但是精通python是没有问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。

在这里插入图片描述

(3)100多个练手项目

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1133850.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用Java做业务开发,如何做好一个定时任务的技术选型?

1. 轻量级任务调度 Quartz Scheduler 适用场景: 单机或简单的分布式任务调度特点: 提供丰富的调度选项,如Cron表达式、固定间隔等;支持持久化,能够在应用重启后恢复任务;支持任务监听和触发器监听。建议: 如果你的应用是基于Spr…

搭建docker本地仓库

1.拉取私有仓库镜像 [rootmaster1 ~]# docker pull registry [rootmaster1 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx v1 546db553f62a About an hour ago …

ftp远程连接传输的常见问题有哪些?如何一站式解决传输问题?

众多传统老行业很多已经部署了FTP传输相关系统,随着数据量和文件量的增加,一些相应的问题也出现了,些问题可能会影响传输的效率和安全性。本文将介绍FTP的常见问题和解决方法,并说明为什么大文件传输平台可以帮助企业实现更快更安…

安卓主板_MTK联发科4G低功耗安卓主板开发板方案

ZM358-DP安卓主板是一款性能功能强大的4G安卓平台。它采用了联发科MTK6737、MTK8735、MTK6753、MTK6735等芯片平台,64位四核Cortex-A53架构,主频高达1.3GHz,搭载ARM Mail-T450 MP2 GPU。 安卓主板具备多路显示屏接口,包括双LVDS、…

强劲升级,太极2.x你值得拥有!

嗨,大家好,最近桃桃没顾得上给大家分享好用好玩的软件。 还记得前段时间给大家分享的太极1.0软件? 最近大佬对软件进行了全新升级,升级后的功能更强更稳定,轻度用户使用基本功能就已经足够了,壕无人性的同学…

广州华锐互动:VR技术应用到工程项目施工安全培训的好处

随着科技的飞速发展,虚拟现实(VR)技术已经深入到各个领域。在建筑施工领域,VR技术的应用为工程项目施工安全培训带来了许多好处。本文将探讨VR技术在这方面的优势和应用。 首先,VR技术能够提供沉浸式的安全培训体验。通过VR设备,学…

cuDNN安装成功

验证方法:winR cmd进入安装目录下,再进入到 extras\demo_suite下,执行.\bandwidthTest.exe和.\deviceQuery.exe,得到下图。

蓝桥算法赛(摆玩具)

问题描述 小蓝是一个热爱收集玩具的小伙子,他拥有 n 个不同的玩具。 这天,他把 n 个玩具按照高度顺序从矮到高摆放在了窗台上,然后,他希望将这些玩具分成 k 个段,使得所有分段的极差之和尽可能小。 具体来说&…

Vue props实现父组件给子组件传递数据

Vue中的配置项Props能让组件接收外部传递过来的数据。 一、传递数据 在要传递的组件标签中配置传递信息: 属性名 "属性值" 注意:如果传递的属性值是一个表达式,要使用:属性名"属性值" 的形式。 二、接收数…

竞赛选题 深度学习动物识别 - 卷积神经网络 机器视觉 图像识别

文章目录 0 前言1 背景2 算法原理2.1 动物识别方法概况2.2 常用的网络模型2.2.1 B-CNN2.2.2 SSD 3 SSD动物目标检测流程4 实现效果5 部分相关代码5.1 数据预处理5.2 构建卷积神经网络5.3 tensorflow计算图可视化5.4 网络模型训练5.5 对猫狗图像进行2分类 6 最后 0 前言 &#…

FLStudio21汉化破解激活版下载,Fl Studio 2024中文破解版激活补丁

最新版本FL Studio 21官方中文汉化激破解版是比利时Image-Line公司开发的DAW。在去年DTM站的DAW调查中,在世界上很受欢迎,特别是作为EDM制作工具被广泛使用。从1997年以FruityLoops的名字发行的时候开始,FL Studio 21就一直作为Windows专用的…

软件工程17-18期末试卷

2.敏捷开发提倡一个迭代80%以上的时间都在编程,几乎没有设计阶段。敏捷方法可以说是一种无计划性和纪律性的方法。错 敏捷开发是一种软件开发方法论,它强调快速响应变化、持续交付有价值的软件、紧密合作和适应性。虽然敏捷方法鼓励迭代开发和灵活性&…

RK3568驱动指南|第七期-设备树-第60章 实例分析:GPIO

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工…

2023软件测试面试问题全在这,刷完即就业

Part1 1、你的测试职业发展是什么? 测试经验越多,测试能力越高。所以我的职业发展是需要时间积累的,一步步向着高级测试工程师奔去。而且我也有初步的职业规划,前3年积累测试经验,按如何做好测试工程师的要点去要求自…

大热电视剧《好事成双》里的IT故事:用户数据泄露事件引出的美女黑客

在大热电视连续剧《好事成双》中,卫明为了与冯凯竞争方舟公司副总裁职位,不惜将冯凯泄露方舟公司用户数据的黑料向媒体爆料,这个新闻迅速上了热搜。 卫明报料的材料都是他从方舟公司的系统中获取和保存的。以卫明的精明而论,按理他…

Python 配置pyqt5开发环境

1.下载需要的pyqt包 这里是所依赖的包(包含了一些项目中其它的包),可以将下面的包复制到requirement.txt,最后使用pip打包安装这些库,具体方法可以参考Python环境离线下载安装。 altgraph0.17.4 click7.1.2 numpy1.24.4 opencv-python4.2.0.34 packagi…

C/C++整数的个数 2020年9月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

目录 C/C整数的个数 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 C/C整数的个数 2020年9月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 给定k&#xff08;1 < k < 100&#xff09;个…

Day10配置文件日志多线程

配置文件 在企业开发过程中&#xff0c;我们习惯把一些需要灵活配置的数据放在一些文本文件中&#xff0c;而不是在Java代码写死 我们把这种存放程序配置信息的文件&#xff0c;统称为配置文件 properties 是一个Map集合&#xff08;键值对集合&#xff09;&#xff0c;但是我…

C语言之数组详解

目录 一维数组的定义和使用 二维数组的定义和使用 字符数组和字符串 练习题 练习一 练习二 练习三 一维数组的定义和使用 当涉及到一系列相同类型的数据时&#xff0c;C语言中的一维数组是一种非常有用的数据结构。以下是关于C语言一维数组的定义和使用的详细说明&…

威联通NAS进阶玩法之使用Docker搭建个人博客教程

Hello大家好&#xff0c;本篇教程主要教大家在威联通的NAS上搭建属于自己的个人博客网站&#xff0c;首先介绍一下我使用的机器&#xff0c;四盘位威联通TS-464C2&#xff0c;搭载四核四线程的N5095处理器&#xff0c;支持4K60帧的输出以及PCIE3.0,可玩性还是非常高的。废话不多…