两者间主要区别
使用urllin内的request模块是,返回体获取有效信息和请求体的拼接需要decode和encode后再进行装载。进行http请求时需先构造get或者post请求再进行调用。header等头文件也需先进行构造。
requests库中进一步封装了request模块,http请求时只需要调用对应的requests.method方法,就可以很方便的使用。
总体来说,requests比urllib.request方法更方便。但如模拟用户登陆等情况下,使用urllib自定义定制http请求也是必不可少的
urllib.request
导入方法
from urllib import request
import urllib.request
内容
urlopen()方法能发起最基本对的请求发起,在不需要任何其他参数配置的时候,可直接通过urlopen()方法来发起一个简单的web请求。但仅仅这些在我们的实际应用中一般都是不够的,可能我们需要加入headers之类的参数,那需要用功能更为强大的Request类来构建了。
urllib库的response对象是先创建httprequest对象,装载到reques.urlopen里完成http请求,返回的是httpresponse对象,实际上是html属性,使用.read().decode()解码后转化成了str字符串类型,也可以看到decode解码后中文字符能够显示出来
requests
通常而言,在我们使用python爬虫时,更建议用requests库,因为requests比urllib更为便捷,requests可以直接构造get,post请求并发起,而urllib.request只能先构造get,post请求,再发起。
导入方法
import requests
内容
requests库调用是requests.get方法传入url和参数,返回的对象是Response对象,打印出来是显示响应状态码,通过.text 方法可以返回是unicode 型的数据,一般是在网页的header中定义的编码形式。
get_response.text得到的是str数据类型。
get_response.content得到的是Bytes类型,需要进行解码。作用和get_response.text类似。
get_response.json得到的是json数据。
requests是对urllib的进一步封装,因此在使用上显得更加的便捷。