【Python爬虫】requests与urllib库的区别


我们在使用python爬虫时,需要模拟发起网络请求,主要用到的库有requests库和python内置的urllib库,一般建议使用requests,它是对urllib的再次封装,它们使用的主要区别:
requests可以直接构建常用的get和post请求并发起,urllib一般要先构建get或者post请求,然后再发起请求。

import requests

Response_get = requests.get(url, params=None, **kwargs

Response_post = requests.post(url, data=None, json=None, **kwargs)

上面请求后得到的是requests.models.Response对象,需要处理后才能得到我们需要的信息
Response_get.text 得到的是str类型
Response_get.content 得到的是bytes类型,需要进行解码Response_get.content.decode(),相当于Response_get.text
Response_get.json() 得到的是JSON数据类型

一般我们最简单的get请求是requests.get(url),但是我们可以对请求进行定制,比如requests.get(url,headers=headers)
headers里面可以定制User-Agent和cookie
简单的post请求是requests.post(url),我们也可以requests.post(url,data),其中data可以是列表,字典,JSON等类型


import urllib.request

req = urllib.request.Request(self, url, data=None, headers={},origin_req_host=None,unverifiable=False,method=None)
Response_request = urllib.request.urlopen(req)
Response = urllib.request.urlopen(url, data=None, timeout=1, cafile=None, capath=None, cadefault=False, context=None)

urllib.request 模块提供了最基本的构造 HTTP 请求的方法,利用它可以模拟浏览器的一个请求发起过程。
# 同时它还带有处理 authenticaton (授权验证), redirections (重定向), cookies (浏览器Cookies)以及其它内容。
# context 参数,它必须是 ssl.SSLContext 类型,用来指定 SSL 设置。cafile 和 capath 两个参数是指定CA证书和它的路径,这个在请求 HTTPS 链接时会有用。
# cadefault 参数现在已经弃用了,默认为 False 。
# 它是一个 HTTPResposne 类型的对象,它主要包含的方法有 read() 、 readinto() 、getheader(name) 、 getheaders() 、 fileno() 等函数
# 和 msg 、 version 、 status 、 reason 、 debuglevel 、 closed 等属性。 得到这个对象之后,赋值为 response ,
# 然后就可以用 response 调用这些方法和属性,得到返回结果的一系列信息。
# 例如 response.read() 就可以得到返回的网页内容, response.status 就可以得到返回结果的状态码,如200代表请求成功,404代表网页未找到等。

简单的get请求是urllib.request.urlopen(url),其中url可以是一个链接,也可以是一个请求,
所以我们定制请求头需要通过urllib.request.Request(url,headers=headers)进行定制,然后当成url传入到request.urlopen()
————————————————
版权声明:本文为CSDN博主「cacho_37967865」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sinat_37967865/article/details/85392207




免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM