2020-10-24 Python爬虫 第一章urllib库与requests库,第三节,对比requests、urllib

第三节 、对比requests、urllib

首先在此声明,本节的对比主要基于前两节的内容,可能两个库中还有其它强大的功能函数,但小编没有遇到,所以读者见谅。这里主要对比前面两节的内容。

这一节我们主要对比requests、以及urllib库在发起请求上的的一些区别,避免我们在使用上出现知识点的混淆。对于这两个库的其他函数比如urlparse等函数,小编就不做比较了。我们主要比较urlopen、build_opener、requests.get、requests.Session四个发起请求之间的差距。

1.请求函数参数差别

先看urlopen、build_opener传入的参数的情况

# from urllib.request  import Request,urlopen,build_opener
#uropen,Request,build_opener的使用方式
# r = Request(url,data = None,headers = None,origin_req_host = None,unverifiable = False,method = 'GET')
# urlopen(url, data=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT)
# urlopen(r)
# build_opener().open(r, timeout=socket._GLOBAL_DEFAULT_TIMEOUT)
# build_opener().open(url, data=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT)
# url,              请求连接              字符串
# timeout,          超时限制             浮点数类型
# headers,          请求头修改           以字典形式传入Request,再传入函数urlopen或open内
# data,             提交表单             以字节流方式函数,也能通过Request传入
# cookies,          设置cookies         见注释
# files,            上传文件             没有
# origin_req_hos     更改IP地址            以字典形式传入,通过Request传入
# method            请求方法                主要有GET,POST,通过Request传入
#注释1 若build_opener需要直接添加headers(不使用Request)需使用opener.addheaders = headers。urlopen不能直接传入headers
# 其中(headers类型为:sequence of two-element tuples,类似[(a,b)])

#注释2 cookies只能放入headers再传入函数(以键值对存入,值为cookies(字符串))

# 注释3 当我们向网站提交信息时(使用build_opener时)我们只需不需要特意设置方法

# 注释4 若build_opener需要使用IP代理,须使用如下方法:
# from urllib.request  import build_opener,ProxyHandler
# proxy_hanler = ProxyHandler({'http':'http://'+'ip地址','https':'https://'+'ip地址'})
# opener = build_opener(proxy_hanler)
# html = opener.open(url)

再看requests.get、requests.Session传入的参数的情况,

当然requests.post或者其他方法请求参数都一致,故我我们只说了get方法中几个常见的参数

# import requests
# requests.get(url,timeout=socket._GLOBAL_DEFAULT_TIMEOUT,headers = None,data = None,cookies = None,files = None,proxies = None,allow_redirects = True)
# requests.Session().get(url,timeout=socket._GLOBAL_DEFAULT_TIMEOUT,headers = None,data = None,cookies = None,files = None,proxies = None,allow_redirects = True)
#这里列举了get的一些重要参数
# url,              请求连接                字符串
# timeout,          超时限制                浮点数类型
# headers,          请求头修改               以字典形式传入
# data,             提交表单                以字典形式传入
# cookies,          设置cookies            以字典形式传入函数。或者放入headers,以键值对存入
# files,            上传文件                以字典形式传入
# proxies,          更改IP地址               以字典形式传入{'http':'http://'+'ip地址','https':'https://'+'ip地址'}
# allow_redirects   是否允许重定向            True|False
#                   请求方法                主要有get,post
# 注释3 当我们向网站提交信息时,我们只需需要设置方法为post

1.2 返回对象以及返回对象属性及方法


from urllib.request  import Request,urlopen,build_opener,HTTPCookieProcessor
import requests

html_urlopen =   urlopen('http://httpbin.org/get')

opener = build_opener()
html_opener = opener.open('http://httpbin.org/get')

html_get = requests.get('http://httpbin.org/get')
session = requests.Session()
html_session = session.get('http://httpbin.org/get')


# 属性方法\函数		html_urlopen            html_opener           html_get               html_session


#返回类型              httpresponse           httpresponse           response             response
# 状态码               .status_code          .status_             .status_code            .status_code
#返回当前请求连接       .url                   .url                    .url                    .url
#查看当前网页的编码方式  None                   None                .apparent_encoding      .apparent_encoding
#设置编码方式            .encoding           .encoding            .encoding                   .encoding
#输出响应头             .headers             .headers            .headers                    .headers
#输出方式           .read()(字节流输出)       .read()(字节流输出)    .text(以字符串输出)         .text(以字符串输出)
#输出方式           .read()(字节流输出)       .read()(字节流输出)    .content(以二进制串输出)      .content(以字二进制输出)
#关闭请求           .close()                .close()             .close()                    .close()
#使用cookies直接登陆  True                    True                 True                        True
#使用账号登陆         False                   True                 True                         True
#获取cookies          None                 须使用CookieJar类      .cookies                    .cookies
#注释1 build_opener获取cookie方式,见下
# from http.cookiejar import CookieJar
# cookie = CookieJar()
# cookie_handler = HTTPCookieProcessor(cookie)
# opener = build_opener(cookie_handler)
# html_opener = opener.open(url)
# print(cookie)

#小编是一个理科生,文笔不好,大家能理解我的意思就行了。

#转载则请标明文章出处,谢谢。

#文中若有任何错误,欢迎大家积极指出,小编洗耳恭听。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值