- 实战Python网络爬虫
- 黄永祥
- 371字
- 2021-03-23 20:15:50
5.7 数据处理
我们知道urllib.request.urlopen()方法是不区分请求方式的,识别请求方式主要通过参数data是否为None。如果向服务器发送POST请求,那么参数data需要使用urllib.parse对参数内容进行处理。
Urllib在请求访问服务器的时候,如果发生数据传递,就需要对内容进行编码处理,将包含str或bytes对象的两个元素元组序列转换为百分比编码的ASCII文本字符串。如果字符串要用作POST,那么它应该被编码为字节,否则会导致TypeError错误。
Urllib发送POST请求的方法如下:
![](https://epubservercos.yuewen.com/78BE40/15056704604178806/epubprivate/OEBPS/Images/Figure-P56_2.jpg?sign=1739482532-kZgvKVsj8NAftce6DOQ6xg7PW9qh86E8-0-89b1021bc2c7ed4f085ff0d3cb7bab2f)
代码中urllib.parse.urlencode(data)将数据转换成字节的数据类型,而encode('utf-8')设置字节的编码格式。这里需要注意的是,编码格式主要根据网站的编码格式来决定。urlencode()的作用只是对请求参数做数据格式转换处理。
除此之外,Urllib还提供quote()和unquote()对URL编码处理,使用方法如下:
![](https://epubservercos.yuewen.com/78BE40/15056704604178806/epubprivate/OEBPS/Images/Figure-P56_3.jpg?sign=1739482532-BEwbJPBaJULNAGE3eK9u8K0Ir0CZhBOW-0-206539e22a4763eda76c02e2115aa955)
上述例子将已编码处理的URL进行解码还原,同样的方法,可使用quote()对数据进行编码处理。quote()和unquote()的作用是解决请求参数中含有中文内容的问题。