数据处理

2018-08-23  本文已影响5人  部落大圣

我们知道urllib.request.urlopen()方法是不区分请求方式的,识别请求方式主要通过参数data是否为None。如果向服务器发送POST请求,那么参数data需要使用urlib.parse对参数内容进行处理。
Urllib在请求访问服务器的时候,如果发生数据传递,就需要对内容进行编码处理,将包含str或bytes对象的两个元素序列转换为百分比编码的ASCII文本字符串。如果字符串要作业POST,那么它应该被编码为字节,否则会导致TyepeError错误。
Urllib发送POST请求的方法如下:

import urllib.request
import urllib.parse
url = 'https://movie.douban.com/'
data = {
    'value': 'true'
}
# 数据处理
data = urllib.parse.urlencode(data).encode('utf-8')
response = urllib.request.urlopen(url, data=data)
print(response)

代码中urllib.parse.urlencode(data)将数据转换成字节的数据类型,而encode('utf-8')设置字节的编码格式。这里需要主要的是,编码格式主要根据网站的编码格式来决定。urlencode()作用只是对请求参数做数据格式转换处理。
除此之外,urllib还提供了quote()和unquote()对URL编码处理,使用方法如下

import urllib.parse
url = '%2523%25E7%25BC%2596%25E7%25A8%258B%2523'
# 第一次解码
first = urllib.parse.unquote(url)
print(first)
# 输出:'%23%E7%BC%96%E7%A8%8B%23'
# 第二次解码
second = urllib.parse.unquote(first)
print(second)
# 输出:‘#编程#’
上一篇 下一篇

猜你喜欢

热点阅读