购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2 使用urlopen()方法发送请求

urllib.request模块首先提供了urlopen()方法,用于实现最基本的HTTP请求,然后接收服务器端返回的响应数据。urlopen()方法的语法格式如下:

参数说明:

☑ url:需要访问网站的URL完整地址。

☑ data:该参数默认为None,通过该参数确认请求方式,如果是None,则表示请求方式为GET,否则请求方式为POST,在发送POST请求时,参数data需要以字典类型的数据作为参数值,并且需要将字典类型的参数值转换为字节类型的数据才可以实现POST请求。

☑ timeout:以秒为单位,设置超时。

☑ cafile、capath:指定一组HTTPS请求受信任的CA证书,cafile指定包含CA证书的单个文件,capath指定证书文件的目录。

☑ cadefault:CA证书默认值。

☑ context:描述SSL选项的实例。

2.2.1 发送GET请求

在使用urlopen()方法实现一个网络请求时,所返回的是一个“http.client.HTTPResponse”对象。示例代码如下:

程序运行结果如下:

实例2.1 演示常用的方法与属性

(实例位置:资源包\Code\02\01)

在HTTPResponse对象中包含一些可以获取信息的方法及属性,下面通过几个常用的方法与属性进行演示。代码如下:

程序运行结果如图2.1所示。

图2.1 HTTPResponse对象常用的方法及属性

2.2.2 发送POST请求

实例2.2 发送POST请求

(实例位置:资源包\Code\02\02)

urlopen()方法在默认情况下发送的是GET请求,如果需要发送POST请求,可以为其设置data参数,该参数是bytes类型,所以需要使用bytes()方法将参数值进行数据类型的转换。示例代码如下:

程序运行结果如图2.2所示。

图2.2 POST请求结果

2.2.3 设置网络超时

urlopen()方法中的timeout参数用于设置请求超时,该参数以秒为单位,表示如果在请求时超出了设置的时间还没有得到响应,就抛出异常。示例代码如下:

由于以上示例代码中的超时时间设置为0.1秒,时间较快,所以将显示如图2.3所示的超时异常。

图2.3 请求超时异常信息

说明

根据网络环境的不同,可以将超时时间设置为一个合理的时间,如2秒、3秒等。

实例2.3 处理网络超时

(实例位置:资源包\Code\02\03)

如果遇到超时异常,爬虫程序将在此处停止。所以在实际开发中,开发者可以先将超时异常捕获,再处理下面的爬虫任务。示例代码如下:

程序运行结果如下: jydBPnqVJd25XE5vRBVPEXSe/+NwAc7nNMW9rlSfMXmxjGD4n0F344cjAQMq/HSu

点击中间区域
呼出菜单
上一章
目录
下一章
×