Python中urllib.request模块及和requests的使用区别

一、Python 3.x版本后的urllib和urllib2

在Python 3以后的版本中,urllib2这个模块已经不单独存在,urllib2被合并到了urllib中,叫做urllib.request 和 urllib.error 

urllib整个模块分为urllib.request,urllib.parse,urllib.error。

例: 
           其中urllib2.urlopen()变成了urllib.request.urlopen() 
           urllib2.Request()变成了urllib.request.Request()

二、urllib和urllib2模块之间的区别

  1. 在python中,urllib和urllib2不可相互替代的。

  2. 整体来说,urllib2是urllib的增强,但是urllib中有urllib2中所没有的函数。

  3. urllib2可以用urllib2.openurl中设置Request参数,来修改Header头。如果你访问一个网站,想更改User Agent(可以伪装你的浏览器),你就要用urllib2.

  4. urllib支持设置编码的函数,urllib.urlencode,在模拟登陆的时候,经常要post编码之后的参数,所以要想不使用第三方库完成模拟登录,你就需要使用urllib。

  5. urllib一般和urllib2一起搭配使用

详细信息参考网址:https://blog.csdn.net/zd147896325/article/details/78957901

三、requests的使用

在我们使用python爬虫时,更建议用requests库,因为requests比urllib更为便捷,requests可以直接构造get,post请求并发起,而urllib.request只能先构造get,post请求,再发起。

import requests

url='https://www.baidu.com'

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36',
}

get_response = requests.get(url,headers=headers,params=None)

post_response=requests.post(url,headers=headers,data=None,json=None)

print(post_response)

print(get_response.text)

print(get_response.content)

print(get_response.json)

get_response.text得到的是str数据类型。get_response.content得到的是Bytes类型,需要进行解码。作用和get_response.text类似。get_response.json得到的是json数据。总而言之,requests是对urllib的进一步封装,因此在使用上显得更加的便捷。

详细信息参考网址:https://blog.csdn.net/qq_38783948/article/details/88239109

 

你可能感兴趣的:(python)