requests简介
#1、什么是requests模块 requests模块是python中原生的基于网络请求的模块 #2、它有什么作用 用来模拟浏览器发起请求 #3、优点 自动处理url编码 自动处理post请求参数 简化cookie和代理操作 #安装及基本使用流程 pip install requests #使用流程 指定url 基于requests模块发起请求 获取响应对象中的数据值 持久化存储
基于get请求
#get常用参数 #url #params {} #headers {} --->>Referer ,User-Agent #cookies {} (Cookie信息虽然包含在请求头里,但requests模块有单独的参数来处理他,headers={}内就不要放它了)
import requests # https://www.baidu.com/s?wd=python url='https://www.baidu.com/s' kw=input(">>:") headers={ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36' } params={ "wd":kw #与上边wd相对应 } response_text = requests.get(url=url,headers=headers,params=params).text with open('./baidu.html','w',encoding='utf-8')as f: f.write(response_text)
基于post请求
#GET请求 HTTP默认的请求方法就是GET * 没有请求体 * 数据必须在1K之内! * GET请求数据会暴露在浏览器的地址栏中 GET请求常用的操作: 1. 在浏览器的地址栏中直接给出URL,那么就一定是GET请求 2. 点击页面上的超链接也一定是GET请求 3. 提交表单时,表单默认使用GET请求,但可以设置为POST #POST请求 (1). 数据不会出现在地址栏中 (2). 数据的大小没有上限 (3). 有请求体 (4). 请求体中如果存在中文,会使用URL编码! #!!!requests.post()用法与requests.get()完全一致,特殊的是requests.post()有一个data参数,用来存放请求体数据
import requests,json if __name__ == '__main__': url='https://fanyi.baidu.com/sug' kw=input(">>:") headers={ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36' } data={ "kw":kw } dic_json = requests.post(url=url,headers=headers,data=data).json() #在确认响应是json类型的才可以使用 fp=open('./fanyi.json','w',encoding='utf-8') json.dump(dic_json,fp,ensure_ascii=False) #里边有中文,所以设为False print('over!!')