Python 3中的Urllib库的使用 !

python爬虫-urllib,urllib3库的使用 理解虚拟机的使用 由于服务器的开发往往是基于linux系统的,例如Ubuntu,Centos等等,所以如果我们是windows操作系统的个人电脑,利用虚拟机来进行相关后端的学习是非常有好处的,这里只陈述在开发时物理机和虚拟机的python文件的逻辑关系。 本地windows物理机需要有python解释器,pycharm; pycharm是对本地文件进行编辑的; 虚拟Ubuntu机需要有python... 阅读详情

在Python中有着这样一个常用的、基础的爬虫库。在Python2中为urllib.urllib,在Python3中官方为了便于管理,将和请求有关的函数封装进了urllib.request模块中。

在此处,使用Python3做记录。

urlopen函数

urlopen函数是request中的一个很常用的函数,它主要用于打开一个网页。其中有着很多的属性。

from urllib import request   Python学习交流群:1004391443
resp = request.open("https://www.baidu.com")
print(resp.read())

 

urlretrieve函数

urlretrieve函数可以很方便的将网页保存至本地。其实用方法见下方代码:

from urllib import request
request.urlretrieve()

 

urlencode函数

将字典类型的数据转化为url编码的数据

from urllib import parse, request
params = {"wd": "爬虫之道"}
qs = parse.urlencode(params)
url = f"https://www.baidu.com/s?{qs}"
resp = request.urlopen(url)

 

parse_qs函数

将url编码后的参数还原为字典形式,其中的值以列表形式进行存储。

from urllib import parse
ps = {"name": "爬虫之道", "vxcode": "spider_rold"}
results = parse.urlencode(ps)
new_results = parse.parse_qs(results)
print(new_results)

urlparse和urlsplit函数

对URL各部分进行分割,其中在使用urlsplit函数时,没有params参数。(注:params参数指的是在以下链接中"?"前添加";",位于这两者之间的内容,如:https://www.baidu.com/s;hello?wd=hello+world)

from urllib import parse
params = {"wd": "爬虫之道"}
qs = parse.urlencode(params)
url = f"https://www.baidu.com/s?{qs}"
result = parse.urlparse(url)
print('scheme:', result.scheme)
print('netloc:', result.netloc)
print('path:', result.path)
print('params:', result.params)
print('query:', result.query)
print('fragment:', result.fragment)

request.Request类

在爬虫中,如果想使用一些参数,如:请求头,请求数据等,需要使用到Request类。如果只是使用urlopen函数,没有办法进行添加请求头。在没有使用User-Agent的时候,如果服务器发现是爬虫,服务器可能会返回一条假的数据内容,或者是不返回内容。所以,将爬虫程序伪装成正常的浏览器访问是很有必要的一件事。

from urllib import request, parse
headers = {'user-agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.90 Safari/537.36"}
params = {"wd": "爬虫之道"}
qs = parse.urlencode(params)
url = f"https://www.baidu.com/s?{qs}"
req = request.Request(url, headers=headers)
resp = request.urlopen(req)
print(resp.read())

注: 可以去挑战一下网络爬虫界的“珠穆朗玛峰” ----- 拉勾网

ProxyHandler处理器

在爬取网站时,一般情况下网站都会做一些反爬虫机制,如封ip。如果只使用一个ip地址进行爬取,在网站封掉ip地址后,就无法获取数据了。所以,在有反爬虫机制的情况,反反爬虫机制便可以使用了。在urllib中通过使用ProxyHandler进行设置代理服务器。

在使用代理与未使用代理的区别:

 

 

 

 

 

 

from urllib import request
### 未使用代理
resp = request.urlopen('http://httpbin.org/get')
print(resp.read())
### 使用代理
handler = request.ProxyHandler({"https": "58.253.152.231:9999"})
opener = request.build_opener(handler)
req = request.Request("http://httpbin.org/get")
resp = opener.open(req)
print(resp.read())

常用的代理:

  • 西刺代理:https://www.xicidaili.com
  • 快代理: https://www.kuaidaili.com/free/

Cookie是什么

在网站汇总,http请求是无状态的。在第一次和服务器建立连接登录后,第二次请求服务器依旧不能知道当前请求的用户是谁。Cookie的出现就是为了解决该问题。第一次登录后,服务器会返回一些数据(cookie) 给浏览器,然后浏览器将数据保存在本地。当用户发送第二次请求时,浏览器会自动的将保存在本地的数据(cookie)一起发送给服务器。服务通过判断不同的cookie信息,进行确认用户。cookie的存储大小是有限的一般不会超过4KB,因此在设置cookie对的时候,只能存储少量数据。

cookie的格式:

Set-Cookie: NAME=VALUE;Expires=DATE;Path=PATH;Domain=DOMAIN_NAME;SECURE

参数含义:

  • NAME:Cookie的名字
  • VALUE:Cookie的值
  • Expires:  Cookie的过期时间
  • Path:Cookie作用的路径
  • Domain: Cookie作用的域名
  • SECURE:是否只在HTTP协议下起作用

使用cookielib库和HTTPCookieProcessor模块模拟登陆

在Python中使用cookie,一般是通过http.cookiejar模块和urllib模块的HTTPCookieProcessor处理器一起使用的。

  • http.cookiejar:提供用于存储cookie的对象
  • HTTPCookieProcessor:处理cookie对象并构建handler对象

http.cookiejar模块

在该模块中主要有三个类,CookieJar、FileCookieJar、MozillaCookieJar、LWPCookieJar。其作用如下:

  • CookieJar:管理HTTP cookie值、存储HTTP请求生成的cookie,向传出的HTTP请求添加cookie对象。整个cookie都存储在内存中,对CookieJar实例进行垃圾回收后cookie失效。
  • FileCookieJar (filename, delayload=None, policy=None):从CookieJar派生而来,用来创建FileCookieJar实例。检索cookie信息并将cookie存储到文件中。filename是存储cookie的文件名,delayload为True是支持延迟访问文件,即只有在需要时才读取文件或将数据存储在文件中。
  • MozillaCookieJar (filename, delayload=None, policy=None):从FileCookieJar派生而来,创建与Mozilla浏览器cookies.txt兼容的FileCookieJar实例。
  • LWPCookieJar (filename, delayload=None, policy=None):从FileCookieJar派生而来,创建与libwww·per标准的Set-Cookies3文件格式兼容的FileCookieJar实例。

保存Cookie至本地

保存cookie到本地,可以使用cookiejar的save方法。

from urllib import request
from http.cookiejar import MozillaCookieJar
cookiejar = MozillaCookieJar('cookies.txt')
handler = request.HTTPCookieProcessor(cookiejar)
opener = request.build_opener(handler)
handlers = {
  'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36',
}
req = request.Request('http://httpbin.org/cookies', headers=handlers)
resp = opener.open(req)
print(resp.read())
cookiejar.save(ignore_discard=True, ignore_expires=True)

加载本地cookie

从本地文件读取cookie信息,可以使用cookiejar中的load方法

from http.cookiejar import MozillaCookieJar
cookiejar = MozillaCookieJar('cookies.txt')
cookiejar.load(ignore_discard=True)
for cookie in cookiejar:
  print(cookie)
Python HTTP请求响应库之urllib3使用详解 在现代 Web 开发中,与服务器进行 HTTP 通信是一项常见任务。Python 提供了许多库来处理 HTTP 请求和响应,其中 urllib3 库是一个强大而灵活的选择。本文将深入探讨 urllib3 库的各个方面,包括其背景、核心特性、使用方法以及实际应用场景,帮助大家更好地了解和利用这个强大的 HTTP 客户端库。 阅读详情

相关推荐

深入解析DDR5 RFM机制:从JESD79-5标准到硬件实现

本文深入解析了DDR5内存标准中的关键机制——RFM(Refresh Management)。文章从JESD79-5标准出发,详细阐述了RFM如何通过RAA计数器实现从被动定时到主动响应的智能刷新管理,并探讨了其硬件实现细节、命令调度挑战及系统级设计考量,为芯片设计工程师优化DDR5内存子系统性能与可靠性提供了实践指导。

fff88的博客 486

爬虫----request简介(以及urllib模块和request模块保存图片区别)

这里写自定义目录标题欢迎使用Markdo4wn编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdo4wn编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用M

R71802的博客 6320

DLL导出函数名隐藏实战:三种方法保护代码安全

在Windows软件开发中,动态链接库(DLL)的导出函数名是模块间通信的关键标识,也是逆向工程的重要突破口。理解PE文件格式中的导出表结构是掌握DLL工作原理的基础,它记录了函数地址、名称和序号的映射关系。通过隐藏或混淆这些导出名称,可以有效增加代码分析的难度,提升软件的知识产权保护和安全性。这一技术在软件保护、游戏反作弊和安全组件中具有重要价值。本文聚焦DLL导出函数名隐藏,结合Dependencies工具分析,详细解析仅序号导出、导出转发器和运行时动态修改三种实用方案,为开发者提供从原理到实践的完整指

weixin_29315091的博客 307

爬虫基础之网络请求

目录   http协议 什么是http和https协议 在浏览器中发送一个http请求的过程 url详解 常用的请求方法 请求头常见参数 常见响应状态码 urllib库 urlopen函数 urlretrieve函数 urlencode函数 parse_qs函数 urlparse和urlsplit request.Request类 ProxyHandler处理器(代...

qq_43158393的博客 769

告别有线:用PVE直通无线网卡,打造一台真正的‘无线’Win10软路由/测试机

本文详细介绍了如何通过PVE直通无线网卡技术,构建全无线Win10软路由或测试机。从硬件选型、PVE环境配置到PCIe和USB双模直通技术,逐步指导实现Wi-Fi AP和蓝牙连接功能,为家庭实验室和小型办公环境提供灵活高效的网络解决方案。

weixin_28683689的博客 586

TSMaster如何用珠海创芯CAN卡实现高效CAN通信(附完整驱动安装指南)

本文详细介绍了如何使用TSMaster软件与珠海创芯CAN卡实现高效CAN通信,包括驱动安装、系统配置、ControlCAN.dll替换及TSMaster集成配置等关键步骤。通过实战指南和故障排除技巧,帮助工程师快速搭建稳定可靠的CAN通信测试环境,适用于汽车电子和工业控制等领域。

weixin_29201859的博客 479

Python--urllib3库详解

Python--urllib3库详解    Urllib3是一个功能强大,条理清晰,用于HTTP客户端的Python库,许多Python的原生系统已经开始使用urllib3。Urllib3提供了很多python标准库里所没有的重要特性:              1、线程安全           2、连接池           3、客户端SSL/TL

轻狂书生FS的博客 1万+

YT8531 PHY芯片硬件设计与MDIO/RGMII实战指南

以太网PHY芯片是FPGA系统实现网络通信的物理层核心,其关键在于标准接口(如MDIO管理总线和RGMII数据接口)的正确实现与协同。MDIO作为IEEE 802.3定义的低速配置通道,负责寄存器级控制与状态监控;RGMII则通过双沿采样精简引脚,在千兆速率下兼顾性能与PCB布线可行性。技术价值体现在电压兼容性(支持1.8V/2.5V/3.3V)、可编程时序调节(RX_DELAY/TX_DELAY)及多级环回测试能力,显著提升国产FPGA平台(如Xilinx Zynq)的工程鲁棒性。典型应用场景涵盖嵌入式网

weixin_42453228的博客 1335

urllib3库的介绍以及使用

urllib3是一个功能强大且易于使用的Python HTTP库,用于发送HTTP请求和处理HTTP响应。它提供了许多高级功能和选项,使得在Python中进行HTTP通信变得更加简单和灵活。相比于其他HTTP库,urllib3的主要优势在于它的连接池管理和复用功能,以及对HTTPS请求的良好支持。

博客 3936

PCB印刷电路缺陷检测实战:从数据集准备到模型训练全流程解析

本文详细解析了PCB缺陷检测从数据集准备到模型训练的全流程。重点介绍了PKU-Market-PCB数据集的特点与下载方法,并提供了数据格式转换、模型选择(如YOLOv8)与训练配置的实战代码。针对PCB小目标检测的难点,文章给出了数据分析和模型优化的具体策略,帮助读者构建高效的缺陷检测系统。

weixin_29065791的博客 546

基于光电传感的非接触式酒精浓度检测系统设计与实现

本文详细介绍了基于光电传感技术的非接触式酒精浓度检测系统设计与实现。系统利用940nm红外LED和OPT101光电传感器,结合朗伯-比尔定律,通过STM32微控制器进行信号采集与处理,实现了快速、准确的酒精浓度测量,测量精度达±1%,适用于工业检测和便携式应用场景。

y7z8a的博客 363

urllib3用户指南:Python HTTP客户端库全面解析

urllib3是Python中一个功能强大且用户友好的HTTP客户端库,它提供了许多标准库urllib所不具备的高级功能。作为Python生态系统中使用最广泛的HTTP库之一,urllib3以其稳定性、线程安全和连接池特性而闻名。 ## 安装与基础使用 ### 安装方法 urllib3可以通过Python包管理器轻松安装: ```bash python -m pip install url

gitblog_00259的博客 660

【C/C++ 性能优化】了解cpu 从而进行C++ 高效编程

在当代软件开发领域,CPU(Central Processing Unit,中央处理器)的性能优化一直是一个核心议题。尤其是对于C++开发者而言,无论是在Linux平台还是其他操作系统中,都需要深刻理解CPU的工作原理以及如何充分利用CPU资源,以确保软件运行的高效性和稳定性。正如计算机科学家Donald Knuth在《计算机程序设计的艺术》中所说:“过早的优化是万恶之源”,然而,这并不意味着我们应该忽视性能优化——相反,我们需要在正确的时间以正确的方式进行优化。

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 4746

urllib3,一个超强的 Python 库!

urllib3 是一个强大而灵活的 HTTP 客户端库,提供了丰富的功能和易用的 API,适用于各种场景下的 HTTP 请求和响应处理。通过连接池管理、SSL/TLS 支持、自动重试等功能,urllib3 可以帮助开发者更轻松地构建稳健、高效的网络应用程序。无论是向 Web 服务器发送请求、处理 API 数据、下载文件还是进行网络测试,urllib3 都是一个强大的工具,值得开发者深入学习和应用。

涛哥聊Python 4154

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

python | urllib3,一个超强的 Python 库!

在现代 Web 开发中,与服务器进行 HTTP 通信是一项常见任务。Python 提供了许多库来处理 HTTP 请求和响应,其中 urllib3 库是一个强大而灵活的选择。本文将深入探讨 urllib3 库的各个方面,包括其背景、核心特性、使用方法以及实际应用场景,帮助大家更好地了解和利用这个强大的 HTTP 客户端库。

csdn_xmj的博客 1472

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【小白必胜-Python】Linux系统下python3极速安装urllib库,一次过!

在学习爬虫的路上,无数的细枝末节往往成为了新手小白的拦路虎,然后演变成了一次次《从入门到放弃》。于是,《小白必胜》系列应运而生,在这个系列里我会根据自己学习进度的变化,适时地把我自己学习过程中解决的一些恼人的细枝末节简单明了地分享出来,希望能帮到同样在编程门口挣扎的你???? 因为得了重感冒白天一直睡,导致现在睡不着,同时被自己时不时的咳嗽和喷嚏困扰着。于是,刚好在花了大半个小时尝试解决了题目中的问题后...

沧海济洲云的博客 2407

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Python urllib、urllib2、urllib3用法及区别

`urllib`、`urllib2`、`urllib3`介绍

OneFine的技术博客 5万+

Python3之urllib库的使用总结

Urllib库是Python中的一个功能强大、用于操作URL,并在做爬虫的时候经常要用到的库。在Python2.x中,分为Urllib库和Urllin2库,Python3.x之后都合并到Urllib库中,使用方法稍有不同。本文介绍的是Python3中的urllib库。什么是Urllib库Urllib是Python提供的一个用于操作URL的模块,我们爬取网页的时候,经常需要用到这个库。升级合并后,模块

rotation博客 6万+

Python爬虫库urllib的使用详解!

HTTPError 是 URLError 的一个子类,用于处理特殊 HTTP 错误例如作为认证请求的时候,包含的属性 code 为 HTTP 的状态码, reason 为引发异常的原因,headers 为导致 HTTPError 的特定 HTTP 请求的 HTTP 响应头。urlsplit() 函数也能对 URL 进行拆分,所不同的是, urlsplit() 并不会把 路径参数(params) 从 路径(path) 中分离出来。获取到的是二进制的乱码,所以需要用到decode()命令将网页的信息进行解码。

WANGWUSAN66的博客 2257

Python中关于urllib库和request库详细教程

urllib库的核心功能是:向服务器发送请求,得到服务器响应,获取网页的内容。在某些网络情况不好或者服务器端异常的情况会出现请求慢的情况,或者请求异常,这时给timeout参数设置一个请求超时时间,而不是让程序一直在等待结果;钩子函数连接服务器成功以及每个数据块下载完成时各调用一次,包含3个参数,依次为已经下载的数据块,数据块的大小,总文件的大小,可用于显示下载进度。Ø requset:HTTP请求模块,可以用来模拟发送请求,只需要传入URL及额外参数,就可以模拟浏览器访问网页的过程。

code_xu的博客 5925

python3安装urllib3库_python如何安装urllib

urllib是Python中请求url连接的官方标准库,在Python2中主要为urllib和urllib2,在Python3中整合成了urllib。基本上涵盖了基础的网络请求功能。该库有四个模块,分别是urllib.request,urllib.error,urllib.parse,urllib.robotparser。前三个比较常用。urllib.request 发送http请求urllib....

weixin_39587029的博客 2646

爬虫基础(3)发送请求之urllib库与urllib3库的使用

文章目录一. urllib库与urllib3库的简介(一)什么是Urllib库(二)什么是urllib3库(三)urllib库与urllib3库的关系二. urllib库模块详析(一)发送请求1. urlopen方法2. Request对象3. 高级用法(1)使用Cookie(2)使用代理(二)解析链接1. 链接分段与合并2. 链接编码与解码3. 链接参数转换(三)处理异常1. URLError2. HTTPError3. 异常处理优化(四)分析Robots协议1. robots.txt文件是什么2. ro

Python达人 2128

python的网络请求库urllib、urllib2、urllib3、request的联系

urllib、urllib2、urllib3、request均能通过网络访问互联网上的资源文件,它们通过使用统一资源定位符(URL)并结合re模块完成很多意想不到的操作。 requests是基于urllib3封装的,继承了urllib2的所有特性,遵循Apache2 Licensed开源协议的HTTP库,支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动响应内容的编码,支持国际化的URL和POST数据自动编码。如他的口号HTTP for Humans所说,这才是给人用的HT

craftsman2020的博客 4301

干货!Python 爬虫库 urllib 使用详解!

HTTPError 是 URLError 的一个子类,用于处理特殊 HTTP 错误例如作为认证请求的时候,包含的属性 code 为 HTTP 的状态码, reason 为引发异常的原因,headers 为导致 HTTPError 的特定 HTTP 请求的 HTTP 响应头。获取到的是二进制的乱码,所以需要用到decode()命令将网页的信息进行解码。URLError 是 OSError 的一个子类,用于处理程序在遇到问题时会引发此异常(或其派生的异常),包含的属性 reason 为引发异常的原因。

2401_86168842的博客 1573

Python使用urllib,urllib3,requests库+beautifulsoup爬取网页

使用urllib urllib3 resquests GET 网页源代码 简单介绍扩展库re beautifulsoup

Eritque arcus的博客 4102
上一篇: Python+pandas+matplotlib控制不同曲线的属性 !
下一篇: Python 数据形态及IO操作 !
普通网友
博客等级 码龄7年 438粉丝 263原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值