python能不能用urllib与服务端交互例如发送和接收数据

  介绍

本篇内容主要讲解“python能不能用urllib与服务端交互例如发送和接收数据”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python能不能用urllib与服务端交互例如发送和接收数据”吧!

urllib是Python3中内置的HTTP请求库,不需要单独安装,官方文档链接如下:https://docs.python.org/3/library/urllib.html从官方文档可以看的出,urllib包含4个模块,如图所示。

 python能不能用urllib与服务端交互例如发送和接收数据

这4个模块的功能描述如下:

<李>

要求:最基本的HTTP请求模块,可以用来发送HTTP请求,并接收服务端的响应数据。这个过程就像在浏览器地址栏输入URL,然后按回车键一样。

<李>

错误:异常处理模块,如果出现请求错误,我们可以捕获这些异常,然后根据实际情况,或者进行重试,或者直接忽略,或进行其他操作。

<李>

解析:工具模块,提供了很多处理URL的API,如拆分,解析,合并等。

<李>

robotparser:主要用来识别网站的机器人。txt文件,然后判断哪些网站可以抓取,哪些网站不可以抓取。

本文主要介绍如何通过urllib发送HTTP GET请求和HTTP POST请求,并获取相应数据。

1。用urlopen函数发送HTTP GET请求

urllib最基本的一个功能就是向服务端发送HTTP请求,然后接收服务端返回的响应数据。这个功能只需要通过urlopen函数就可以搞定。例如,下面的代码向百度发送HTTP GET请求,然后输出服务端的响应结果。

import  urllib.request    响应=urllib.request.urlopen (& # 39; https://baidu.com& # 39;),   #,将服务端的响应数据用utf - 8解码,   打印(response.read () .decode (& # 39; utf - 8 # 39;))

运行结果如图所示。

 python能不能用urllib与服务端交互例如发送和接收数据

我们可以看的到,使用urllib与服务端交互是非常容易的,除了导入语句外,真正与业务有关的代码只有2行,就完成了整个与服务端交互的过程。其实这个过程已经完成了爬虫的第一步,就是从服务端获取HTML代码,然后就可以利用各种分析库对HTML代码进行解析,提取出我们感兴趣的URL,文,本图像等。其实urlopen函数返回的是一个对象,而阅读是这个对象的一个方法,可以利用方型法输出这个对象的类型,当我们知道了对象类型后,就可以很容易知道这个对象中有哪些API,然后调用它们。

import  urllib.request    响应=urllib.request.urlopen (& # 39; https://baidu.com& # 39;),   print(类型(响应))

这段代码会输出如下的结果:

& lt; class  & # 39; http.client.HTTPResponse& # 39;在

现在我们了解到,urlopen函数返回的是HTTPResponse类型的对象,主要包含阅读,getheader, getheaders等方法,以及味精、版本、状态、debuglevel,封闭等属性。下面是一个实际的案例,用来演示了HTTPResponse对象中主要的方法和属性的用法。

import  urllib.request    #,向京东商城发送HTTP 得到请求,urlopen函数即可以使用http,也可以使用https    响应=urllib.request.urlopen (& # 39; https://www.jd.com& # 39;),   #,输出urlopen函数返回值的数据类型,   打印(& # 39;响应的类型:& # 39;,类型(响应)),   #,输出响应状态码,响应消息和HTTP版本,   打印(& # 39;状态:& # 39;,response.status, & # 39;,味精:& # 39;,response.msg, & # 39;,版本:& # 39;,,response.version),   #,输出所有的响应头信息,   打印(& # 39;标题:& # 39;,response.getheaders ()),   #,输出名为内容类型的响应头信息,   打印(& # 39;headers.Content-Type& # 39;, response.getheader(& # 39;内容类型# 39;)),   #,输出京东商城首页所有的HTML代码(经过utf - 8解码),   打印(response.read () .decode (& # 39; utf - 8 # 39;))

运行结果如图所示。

 python能不能用urllib与服务端交互例如发送和接收数据

2。用urlopen函数发送HTTP POST请求

urlopen函数默认情况下发送的是HTTP GET请求,如果要发送HTTP POST请求,需要使用数据命名参数,该参数是字节类型,需要用字节类将字符串形式的数据转换为字节类型。下面的例子

python能不能用urllib与服务端交互例如发送和接收数据