欧易

欧易(OKX)

国内用户最喜爱的合约交易所

火币

火币(HTX )

全球知名的比特币交易所

币安

币安(Binance)

全球用户最多的交易所

PythonUrllib模块三十行代码编写自己的英语翻译器,随用随翻

2022-10-09 17:41:37 5715

摘要:今天运用的是Urllib模块urllib是基于http的高层库,它有以下三个主要功能:request处理客户端的请求response处理服务端的响应parse会解析url下面我们来说的是request函数urllib.request模块定义...

今天运用的是Urllib模块

  • urllib是基于http的高层库,它有以下三个主要功能:

  1. request处理客户端的请求

  2. response处理服务端的响应

  3. parse会解析url

下面我们来说的是request函数

urllib.request模块定义了一些打开URLs(一般是HTTP协议)复杂操作像是basic和摘要模式认证,重定向,cookies等的方法和类。这个模块式模拟文件模块实现的,将本地的文件路径改为远程的url。因此函数返回的是类文件对象(file-like object)

  • 运用方法

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

url可以是一个字符串形式或者Request 对象

如果data参数有值就是用post方式响应否则默认为GET 方式

urllib.request 模块使用HTTP/1.1 的无连接的状态协议

urlopen()函数返回类文件对象,提供以下内建方法:

read() , readline() ,readlines() , fileno() , close() :这些方法的使用方式与文件对象完全一样

info():返回一个httplib.HTTPMessage对象,表示远程服务器返回的头信息

getcode():返回Http状态码。

如果是http请求:

  1. (informational):请求已经收到,正在进行中

  2. (successful):请求成功接收,解析,完成

  3. (Redirection):需要重定向

  4. (Client Error):客户端问题,请求存在语法错误,网址未找到

  5. (Server Error):服务器问题

geturl():返回请求的url

接下来说的是urlencode函数

urllib库里面有个urlencode函数,可以把key-value这样的键值对转换成我们想要的格式,返回的是a=1&b=2这样的字符串,比如:

当urlencode之后的字符串传递过来之后,接受完毕就要解码了——urldecode。urllib提供了unquote()这个函数,可没有urldecode()!

好,话不多说,上源码,这个就是短短的不到三十行代码的翻译器。

源码

程序执行情况:

这里要注意的是两个函数

  1. urllib.request.urlopen()

  2. urllib.parse.urlencode()

urllib.request.urlopen()函数其实不止一个参数,有好几个哦,其中第二个是data,data应该是一个buffer的标准应用程序/ x-www-form-urlencoded格式。

urllib.parse.urlencode()函数接受一个映射或序列集合,并返回一个字符串的格式。我们可以看看urllib.parse.urlencode()的结果是什么样的:

上图的结果刚好与urllib.request.urlopen()的data参数的数据类型要求一致了。

注意,上面urlopen当中的url,这个是分析有道翻译页面的真实的Request URL:

版权声明:本站所有文章皆是来自互联网,如内容侵权可以联系我们( 微信:bisheco )删除!
友情链接
币圈社群欧易官网