Request.urlopen()函数只是基本的建立一个请求,里面的参数不足以去构建一个完整的请求,如果想要在请求的时候增加一些请求头来表面你的身份,为了实现POST请求,给服务器返回一些表单数据回去,那么就必须使用request.Request类来实现。

在爬取网易云音乐的时候,搜索了周杰伦这个歌手之后可以从浏览器中看到一个请求数据

然后利用request.Request来模拟这次请求

将请求中数据复制到代码,来模拟,关于模拟的请求方式如果request.Request中使用了data=这个参数就默认使用POST,其余默认是GET,也可以直接指定

注意:data参数需要的数据的数据类型是bytes类型,urlencode之后是字符串,使用encode来重新编码,读取的时候需要解码