时间:2021-05-22
urllib是Python3中内置的HTTP请求库,不需要单独安装,官方文档链接如下:https://docs.python.org/3/library/urllib.html从官方文档可以看出,urllib包含4个模块,如图所示。
这4个模块的功能描述如下:
本文主要介绍如何通过urllib发送HTTP GET请求和HTTP POST请求,并获取相应数据。
urllib最基本的一个功能就是向服务端发送HTTP请求,然后接收服务端返回的响应数据。这个功能只需要通过urlopen函数就可以搞定。例如,下面的代码向百度发送HTTP GET请求,然后输出服务端的响应结果。
importurllib.requestresponse=urllib.request.urlopen('https://baidu.com')#将服务端的响应数据用utf-8解码print(response.read().decode('utf-8'))运行结果如图 所示。
我们可以看到,使用urllib与服务端交互是非常容易的,除了import语句外,真正与业务有关的代码只有2行,就完成了整个与服务端交互的过程。其实这个过程已经完成了爬虫的第一步,就是从服务端获取HTML代码,然后就可以利用各种分析库对HTML代码进行解析,提取出我们感兴趣的URL、文本、图像等。其实urlopen函数返回的是一个对象,而read是这个对象的一个方法,可以利用type方法输出这个对象的类型,当我们知道了对象类型后,就可以很容易知道这个对象中有哪些API,然后调用它们。
importurllib.requestresponse=urllib.request.urlopen('https://baidu.com')print(type(response))这段代码会输出如下的结果:
<class'http.client.HTTPResponse'>现在我们了解到,urlopen函数返回的是HTTPResponse类型的对象,主要包含read、getheader、getheaders等方法,以及msg、version、status、debuglevel、closed等属性。下面是一个实际的案例,用来演示了HTTPResponse对象中主要的方法和属性的用法。
importurllib.request#向京东商城发送HTTPGET请求,urlopen函数即可以使用http,也可以使用httpsresponse=urllib.request.urlopen('https://')#输出urlopen函数返回值的数据类型print('response的类型:',type(response))#输出响应状态码、响应消息和HTTP版本print('status:',response.status,'msg:',response.msg,'version:',response.version)#输出所有的响应头信息print('headers:',response.getheaders())#输出名为Content-Type的响应头信息print('headers.Content-Type',response.getheader('Content-Type'))#输出京东商城首页所有的HTML代码(经过utf-8解码)print(response.read().decode('utf-8'))运行结果如图所示。
urlopen函数默认情况下发送的是HTTP GET请求,如果要发送HTTP POST请求,需要使用data命名参数,该参数是bytes类型,需要用bytes类将字符串形式的数据转换为bytes类型。下面的例子
下面的例子向http://httpbin.org/post发送HTTP POST请求,并输出返回结果。
importurllib.request#将表单数据转换为bytes类型,用utf-8编码data=bytes(urllib.parse.urlencode({'name':'Bill','age':30}),encoding='utf-8')#提交HTTPPOST请求response=urllib.request.urlopen('http://httpbin.org/post',data=data)#输出响应数据print(response.read().decode('utf-8'))这段代码中一开始提供了一个字典形式的表单数据,然后使用urlencode方法将字典类型的表单转换为字符串形式的表单,接下来将字符串形式的表单按utf-8编码转换为bytes类型,这就是要传给urlopen函数的data命名参数的值,要注意,一旦指定了data命名参数,urlopen函数就会向服务端提交HTTP POST请求,这里并不需要显式指定要提交的是POST请求。
本例将HTTP POST请求提交给了http://httpbin.org/post,这是一个用于测试HTTP POST请求的网址,如果请求成功,服务端会将HTTP POST请求信息原封不动地返回给客户端。运行结果如图所示。
以上就是python 如何用urllib与服务端交互(发送和接收数据)的详细内容,更多关于python 用urllib与服务端交互的资料请关注其它相关文章!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
做Android开发的程序员必须知道android客户端应该如何与服务端进行交互,这里主要介绍的是使用json数据进行交互。服务端从数据库查出数据并以json字
无论是网页还是移动端,都需要向服务器请求数据,那么作为php服务端,如何返回标准的数据呢?现在主流的数据格式无非就是json和xml,下面我们来看看如何用php
服务端渲染(SSR)将一个Vue组件在服务端渲染成HTML字符串并发送到浏览器,最后将这些静态标记“激活”为可交互应用程序的过程就叫服务端渲染(SSR)服务器渲
在开发应用程序时,客户端(前端页面或APP)与服务端交互是在所难免的,在交互过程传递数据时,最通用和流行格式便是JSON,Go语言提供了encoding/jso
Vue.js与jQuery不冲突???在实际的应用中,几乎90%的数据是来源于服务端的,前端和服务端之间的数据交互一般是通过ajax请求来完成的。说到ajax请