Python模块学习 --- urllib

Windows Server 2022域控环境下的MDT部署工具安装与配置避坑指南 本文详细介绍了在Windows Server 2022域控环境中安装和配置MDT(Microsoft Deployment Toolkit)的全流程,包括ADK与Windows PE的精准安装、MDT高级配置、部署工作流构建及性能优化技巧。通过实战指南帮助IT管理员实现自动化系统部署,提升企业IT运维效率,特别适用于需要静默下发系统的大规模部署场景。 阅读详情

    urllib模块提供的上层接口,使我们可以像读取本地文件一样读取www和ftp上的数据。每当使用这个模块的时候,老是会想起公司产品的客户端,同事用C++下载Web上的图片,那种“痛苦”的表情。我以前翻译过libcurl教程,这是在C/C++环境下比较方便实用的网络操作库,相比起libcurl,Python的urllib模块的使用门槛则低多了。可能有些人又会用效率来批评Python,其实在操作网络,或者在集群交互的时候, 语言的执行效率绝不是瓶颈。这种情况下,一个比较好的方法是,将python嵌入到C/C++中,让Python来完成一些不是核心的逻辑处理。又扯远了,废话少说,开始urllib之旅吧~~ (前几天我用这个模块写了个蜘蛛,感兴趣的同学可以在以前的博客中找到代码)
    先看一个例子,这个例子把Google首页的html抓取下来并显示在控制台上:

# 别惊讶,整个程序确实只用了两行代码
import urllib
print urllib.urlopen('http://www.google.com').read()

urllib.urlopen(url[, data[, proxies]]) :

    创建一个表示远程url的类文件对象,然后像本地文件一样操作这个类文件对象来获取远程数据。参数url表示远程数据的路径,一般是网址;参数data表示以post方式提交到url的数据(玩过web的人应该知道提交数据的两种方式:post与get。如果你不清楚,也不必太在意,一般情况下很少用到这个参数);参数proxies用于设置代理(这里不详细讲怎么使用代理,感兴趣的看客可以去翻阅Python手册urllib模块)。urlopen返回 一个类文件对象,他提供了如下方法:

  •     read() , readline() , readlines() , fileno() , close() :这些方法的使用方式与文件对象完全一样;
  •     info():返回一个httplib.HTTPMessage 对象,表示远程服务器返回的头信息;
  •     getcode():返回Http状态码。如果是http请求,200表示请求成功完成;404表示网址未找到;
  •     geturl():返回请求的url;

    下面来扩充一下上面的例子,看官可以运行一下这个例子,加深对urllib的印象:

google = urllib.urlopen('http://www.google.com')
print 'http header:/n', google.info()
print 'http status:', google.getcode()
print 'url:', google.geturl()
for line in google: # 就像在操作本地文件
    print line,
google.close()

urllib.urlretrieve(url[, filename[, reporthook[, data]]]):

    urlretrieve方法直接将远程数据下载到本地。参数filename指定了保存到本地的路径(如果未指定该参数,urllib会生成一个临时文件来保存数据);参数reporthook是一个回调函数,当连接上服务器、以及相应的数据块传输完毕的时候会触发该回调。我们可以利用这个回调函 数来显示当前的下载进度,下面的例子会展示。参数data指post到服务器的数据。该方法返回一个包含两个元素的元组(filename, headers),filename表示保存到本地的路径,header表示服务器的响应头。下面通过例子来演示一下这个方法的使用,这个例子将新浪首页的html抓取到本地,保存在D:/sina.html文件中,同时显示下载的进度。

def cbk(a, b, c):
    '''回调函数
    @a: 已经下载的数据块
    @b: 数据块的大小
    @c: 远程文件的大小
    '''
    per = 100.0 * a * b / c
    if per > 100:
        per = 100
    print '%.2f%%' % per

url = 'http://www.sina.com.cn'
local = 'd://sina.html'
urllib.urlretrieve(url, local, cbk)

    上面介绍的两个方法是urllib中最常用的方法,这些方法在获取远程数据的时候,内部会使用URLopener或者 FancyURLOpener类。作为urllib的使用者,我们很少会用到这两个类,这里我不想多讲。如果对urllib的实现感兴趣, 或者希望urllib支持更多的协议,可以研究这两个类。在Python手册中,urllib的作者还列出了这个模块的缺陷和不足,感兴趣的同学可以打开 Python手册了解一下。

    urllib中还提供了一些辅助方法,用于对url进行编码、解码。url中是不能出现一些特殊的符号的,有些符号有特殊的用途。我们知道以get方式提交数据的时候,会在url中添加key=value这样的字符串,所以在value中是不允许有'=',因此要对其进行编码;与此同时服务器接收到这些参数的时候,要进行解码,还原成原始的数据。这个时候,这些辅助方法会很有用:

  • urllib.quote(string[, safe]):对字符串进行编码。参数safe指定了不需要编码的字符;
  • urllib.unquote(string) :对字符串进行解码;
  • urllib.quote_plus(string [ , safe ] ) :与urllib.quote类似,但这个方法用'+'来替换' ',而quote用'%20'来代替' '
  • urllib.unquote_plus(string ) :对字符串进行解码;
  • urllib.urlencode(query[, doseq]):将dict或者包含两个元素的元组列表转换成url参数。例如 字典{'name': 'dark-bull', 'age': 200}将被转换为"name=dark-bull&age=200"
  • urllib.pathname2url(path):将本地路径转换成url路径;
  • urllib.url2pathname(path):将url路径转换成本地路径;

    用一个例子来体验一下这些方法吧~~:

data = 'name = ~a+3'

data1 = urllib.quote(data)
print data1 # result: name%20%3D%20%7Ea%2B3
print urllib.unquote(data1) # result: name = ~a+3

data2 = urllib.quote_plus(data)
print data2 # result: name+%3D+%7Ea%2B3
print urllib.unquote_plus(data2)    # result: name = ~a+3

data3 = urllib.urlencode({ 'name': 'dark-bull', 'age': 200 })
print data3 # result: age=200&name=dark-bull

data4 = urllib.pathname2url(r'd:/a/b/c/23.php')
print data4 # result: ///D|/a/b/c/23.php
print urllib.url2pathname(data4)    # result: D:/a/b/c/23.php

    urllib模块的基本使用,就这么简单。oh~~yeah~~又一个模块写完了,想想,我已经写了将近30个模块了,有时间我要好好整理一下@@@@

Aloudata Agent :基于 NoETL 明细语义层的分析决策智能体 这是包括我们在内的一些厂商探索的一个新方向,这种方式先由大模型将自然语言转化为对指标语义层的查询请求(MQL,Metrics Query Language),再由指标平台将指标和维度的查询与计算逻辑转化为准确的 SQL 查询语句。用户查询经大模型语义解析后,将其转换为指标、维度及筛选条件的组合表达,并生成面向指标平台的 MQL,Aloudata CAN 指标平台的语义引擎将 MQL 转换为准确和可执行的查询 SQL,语义引擎内置函数体系与 SQL 解析器,确保语义转换的 100% 准确性。 阅读详情

相关推荐

手把手教你用VCS+Verdi在Linux下仿真蜂鸟E203 RISC-V核(附波形调试技巧)

本文详细介绍了在Linux环境下使用VCS和Verdi工具链对蜂鸟E203 RISC-V核进行仿真验证的完整流程。从环境配置、工程结构解析到VCS编译优化和Verdi波形分析技巧,提供了实战性强的调试方法和性能优化策略,帮助工程师高效完成数字IC验证工作。

weixin_42531163的博客 416

python urllib.quote 解决Python传递中文参数给URL

今天有个需要需要传递中文参数给URL 但是在GBK环境下的脚本传递GBK的参数老是给我报UNICODE的解码错误。烦的很。 所以我们果断选择用urlencode来处理中文, 由于国内外网站编码不同,国内是GBK的,国外是UTF8的。 >>> import sys >>> sys.stdin.encoding 'GBK' 表示我们的环境是GBK的 &gt...

u012922485的博客 2万+

C# 原生数字孪生的尝试

本文介绍了使用C#实现数字孪生的基本思路。首先从爱普生官网下载机器人3D模型,然后通过Blender创建并导出带动画的FBX模型。在WPF项目中,使用HelixToolkit.SharpDX等插件加载模型,通过Viewport3DX进行3D渲染。关键点是通过动画控制器接收真实设备信号来驱动模型动画,实现物理实体与虚拟模型的同步。文中提供了完整的代码实现,包括模型导入、动画播放控制等核心功能。该方法为构建数字孪生系统提供了一种可行的技术方案。

qq_33529095的博客 1333

Python中urllib库用法详解

Python中urllib库用法详解

IT之一小佬的博客 5789

Unity中URP实现水体效果(泡沫)

在上篇文章中,我们实现了水体的深度。在这篇文章中,我们来使用上篇文章采样后的深度图来实现水中的泡沫效果。

楠溪泽岸的博客 3489

Librepilot _64位window10环境下的搭建及一些坑的解决办法

  刚入IT行业的小菜鸟,在window上折腾了四天的librepilot地面控制站的搭建,想着这么辛苦不能白费了,看网上相关资料少得可怜,唯一一个详细教程还是在32位环境下,一大堆坑,所以把自己的经验写下来,供大家一起参考。 参考的原文是:https://www.cnblogs.com/jasonchan1202/p/7809937.html的博客,但是执行下来才发现这个博客对64位系统极其不...

weixin_41426339的博客 2728

urllib.quote 分类: python py...

ython的url编码函数是在类urllib库中,使用方法是: 编码:urllib.quote(string[, safe]),除了三个符号“_.-”外,将所有符号编码,后面的参数safe是不编码的字符, 使用的时候如果不设置的话,会将斜杠,冒号,等号,问号都给编码了。 如下: >>> import urllib >>> print ...

weixin_30462049的博客 351

蓝桥杯STM32G431RBT6学习——GPIO

蓝桥杯STM32G431RBT6学习——GPIO

weixin_44098974的博客 2234

使用Python的urllib.quote进行解码编码

from urllib import parse # 导入包 str1 = 'mi你好' str2 = parse.quote(str1, encoding="utf-8") # quote()将字符串进行编码 print(str2) # mi%E4%BD%A0%E5%A5%BD str3 = "%E4%BD%A0%E5%A5%BD" # unquote()将字符串进行解码 str4 = parse.unquote(str3, encoding='utf-8') print(str4) # 你好

shiGXW的博客 2780

ASPICE标准快速掌握「1.1. 简介」

ASPICE是汽车软件过程改进能力模型(Automotive SPICE,Automotive - Software Process Improvement and Capability dEtermination)的缩写,是一种针对汽车软件开发过程的国际标准。该标准旨在帮助汽车制造商和供应商改进其软件开发过程,以确保其软件产品的质量和安全性。需要做什么为什么要做技术上的依赖性是什么。

雪云飞星的博客 2294

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

pyhton爬虫基础(六)urllib中的urlopen

学习爬虫,最初的操作便是模拟浏览器向服务器发出请求。我们只需要关心请求的链接是什么,需要的参数是什么,以及如何设置可选的请求头就行了,不需要深入了解它是怎样传输和通信的。

2303_77841383的博客 1205

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【PYTHON3学习】常用内置模块urllib学习总结

1 urllib 提供了一系列用于操作URL的功能 1.1 简单爬虫 1.引入请求模块——from urllib import request 2.打开网页——request.urlopen() 3.读取网页——read 此处以https://www.douban.com为例子 from urllib import request with request.urlopen('https://www...

weixin_42157432的博客 3216

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Urllib模块学习 Python爬虫

urllib是Python内置的HTTP请求库,不需要pip安装。

y_1780803233的博客 2438

Python学习:使用urllib模块读取网络资源及提交请求

request 还是requests? 来自Python小白真诚的求助!没办法,只能求助Google了! 原来,Requests模块是一个用于网络访问的模块,网络访问就是利用某些参数发送请求,然后获取我们想要的信息。其实类似的模块有很多,比如urllib,urllib2,httplib,httplib2,他们基本都提供相似的网络访问功能。 初学Python,虽然语法不算难,挺好学的,但是第三方模块...

weixin_38744803的博客 3285

urllib3模块学习 python爬虫

用于HTTP客户端的Python第三方库用pip命令安装模块:在终端输入。

y_1780803233的博客 1416

python urllib2模块安装,Python urllib和urllib2模块学习(二)

一、urllib其它函数前面介绍了 urllib 模块,以及它常用的 urlopen() 和 urlretrieve()函数的使用介绍。当然 urllib 还有一些其它很有用的辅助方法,比如对 url 进行编码、解码等等。辅助方法:1. urllib.quote(string[,safe]) : 对字符串进行编码,参数safe指定了不需要编码的字符;urllib.unquote(string): ...

weixin_42522320的博客 1695

学习Python的urllib模块

这里设置我们的用户代理为 Mozilla FireFox ,然后我们访问http://www.whatsmyua.com/ , 它会告诉我们它识别出的我们的 user-agent 字段。Python 的 urllib 会表示它自己为 Python-urllib/x.y , 其中 x 和 y 是你使用的 Python 的主、次版本号。除非你在使用 urlretrieve 的第二个参数指定你要保存文件的路径,否则这个文件将被拷贝到临时文件夹的随机命名的一个文件中。urllib 一个典型的应用场景是下载文件。

Free雅轩的博客 148

python爬虫urllib模块学习

最近在学习python爬虫,以下为我学习python爬虫时进行测试每个模块的代码,如有需要可复制下来后自行运行每个模块。若有任何问题,可在评论区询问,希望一起进步。

qq_67516465的博客 560

Python urllib模块学习

python提供了对访问网页的简单形式。使用urllib2一个函数即可。 import urllib2 response = urllib2.urlopen('http://python.org/') html = response.read() print html 这是简单的方法。在urllib2中,还有一些更复杂的功能可以使用。 HTTP协议基于请求和回应(requests &resp

imzoer的专栏 1536

python中urllib模块_学习Python的urllib模块

urllib.requesturllib.request 模块期初是用来打开和获取 URL 的。让我们看看你可以用函数 urlopen 可以做的事:>>> import urllib.request>>> url = urllib.request.urlopen('https://www.google.com/')>>> url.geturl(...

weixin_39759107的博客 61

Python爬虫核心模块urllib的学习

分享一份Python的学习资料,但由于篇幅有限,完整文档可以扫码免费领取!!!1)Python所有方向的学习路线(新版)总结的Python爬虫和数据分析等各个方向应该学习的技术栈。比如说爬虫这一块,很多人以为学了xpath和PyQuery等几个解析库之后就精通的python爬虫,其实路还有很长,比如说移动端爬虫和JS逆向等等。(2)Python学习视频。

javasdn的博客 872

python的urllib模块_python urllib2模块学习

urllib2是urllib扩展的库,不仅可以使用http协议,而且可以扩展到ftp等协议。常用函数一:urlopen(url, data=None, timeout=)最基本的用法和urllib下面的urlopen(url, data=None)一样,传递一个URL参数, 添加post需要的data,返回值是一个类似于file的对象, 可以使用通常的文件操作来操作这个对象,比如read,writ...

weixin_39521808的博客 238

python 的urllib模块_python爬虫之urllib模块和requests模块学习

今天学习了request模块和urllib模块,了解到这两个模块最大的区别就是在爬取数据的时候连接方式的不同。urllb爬取完数据是直接断开连接的,而requests爬取数据之后可以继续复用socket,并没有断开连接。两种用法的区别,上源码:requests:#coding:utf-8import requestsdef eazy_url_demo(url):res=requests.get(u...

weixin_31842775的博客 175

Python模块学习————2、urllib、urllib2学习

什么是urlliburllib是python提供的一个用于操作URL的模块,在python2.x中有URllib库,也有Urllib2库,在python3.x中Urllib2合并到了Urllib中,我们爬取网页的时候需要经常使用到这个库。升级合并之后,模块中包的位置变化的地方比较多。在此,我们总结并为大家列举一些常见的位置变动,方便之前用python2.x的朋友在使用python3.x的时候可以快...

Fly_鹏程万里 727

【python爬虫学习篇】请求模块urllib

3,请求模块urllib 3.1,urllib模块包含的多个子模块 urllib.request:用于实现基本HTTP请求的模块。 urllib.error:异常处理模块,如果在发送网络请求时出现了错误,可以捕获异常进行异常的有效处理。 urllib.parse:用于解析URL的模块。 urllib.robotparser:用于解析robots.txt文件,判断网站是否可以爬取信息。 3.2,使用urlopen()方法发送请求 3.2.1,简介 urllib.request模块提供了url.

Linxueli的博客 1977
上一篇: 用Python写的图片蜘蛛人
下一篇: Python模块学习 ---- atexit
JGood
博客等级 码龄20年 498粉丝 65原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值