爬虫里的requests用法讲解
requests模块的编码流程
操作步骤
-
指定url
-
发出请求
-
获取响应数据
-
持久化存储
例:
import requests #首先导入requests模块 url="https://www.sogou.com" response=request.get(url=url) page_text=response.text with open("./sogou.html","w",encoding="utf-8") as fp: fp.write(page_test)
requests模块的作用:模拟浏览器发请求
UA伪装
UA:User-agent (请求载体的身份标识)
UA伪装:门户网站的服务器会检测对应请求的载体身份表示,所以要对爬虫进行伪装,使爬虫更像是一个浏览器发出的请求
例:
import requests url = "https://www.sogou.com/web" "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 Edg/94.0.992.38" kw= = input("enter a word:") param = { "query":kw } #对指定的url发出请求,对应的url是对应参数的,所有参数均均存放在param中 response = requests.get(url=url,params=param,headers=header)
get请求与post请求
提交的数据形式
get请求,提交的数据会附在url之后,以?分割ul和传输的数据,多个参数用&连接,例:login?name=hc&pwd=123456 post请求,提交的数据会放置在http包的包体<request-body>中。 get请求提交的数据会在地址栏中显示出来,而post请求的地址栏中不会显示出数据。
传输数据的大小
http协议没有对传输数据的大小进行限制,http协议规范也没有对url长度进行限制,而实际的开发中get请求会受到url长度的限制,例入IE浏览器url长度限制是2048字节,其他浏览器的限制取决于操作系统以及服务器的支持;post请求会受到提交数据大小的限制。
用法
requests.post()用法与requests.get()完全一致,特殊的是requests.post()有一个data参数,用来存放请求体数据,而requsts.post()用params存放数据