一、requests库指的是什么
requests是Python的一个第三方网络请求库。简单说,它能让 Python代码像“浏览器”一样,去访问互联网上的网址、获取网址里的数据(比如股票价格、网页内容、接口数据)。
通俗的解释,requests就是Python的“浏览器”。平时用IE、 Chrome、Edge 等浏览器输入网址,能看到网页内容;而requests就是给Python代码装了一个“无界面的浏览器”。
以获取股票数据为例,过程实际分为三步:(1)Python代码告诉requests:“去访问某个股票数据的网址”;(2)requests帮Python连接这个网址,并把网址里的股票价格数据“拿回来”;(3)Python代码再从拿回来的数据里,提取出需要的股价。也就是说,如果没有 requests,Python代码就没法主动去互联网上“拿数据”。Python的股票获取代码,核心就是靠requests去调用股票接口,获取实时股价。
requests 本身 100% 免费开源,使用无任何费用,仅需注意数据源是否免费。
二、requests库可以做什么
除了获取股票数据,requests是Python做网络相关开发的“必备工具”,比如:
(1)爬虫:爬取网页上的新闻、商品价格、天气数据;
(2)调用 API 接口:调用微信/支付宝支付接口、地图接口、天气接口;
(3)自动化操作:自动登录网站、自动提交表单、自动下载文件;
(4)数据采集:从各类公开接口获取数据(比如股票、基金、快递信息)。三、requests库的安装
需要在安装完Pycharm后,另行安装,不是系统自带的。优先用 PyCharm 的“终端”安装。
1.打开 PyCharm,找到底部左下方的“终端(Terminal)”标签。
2.打开后,终端开头会显示虚拟环境,比如(.venv),这说明已激活虚拟环境,这是关键!
3.直接在终端里输入命令“pip install requests”,按回车键。
4.等待安装:终端会显示下载进度,最后出现 Successfully installed requests-xxx(xxx 是版本号),就说明装好了。
四、Python代码示例
url = f"http://push2.eastmoney.com/api/qt/stock/get?secid={stock_code}&fields=f43"
response = requests.get(url, timeout=10)
response.raise_for_status() # 检查请求是否成功
data = response.json()
以取快递为例,上述的代码表示:先写好快递地址:基础地址(快递站)+备注(要XX人的包裹)→对应拼接 URL;然后打电话给快递员(requests.get),让他去这个地址取包裹,要求10秒内回复,拿到包裹后放在response这个盒子里→对应发送请求并接收数据。
说明:
第一行是拼接精准的股票接口地址,指定“查哪只股票、要什么数据”;第二行是向这个地址发送请求,并设置 10 秒超时,把服务器返回的“数据包裹”存到response里;
(1)url
就是第一行拼接好的完整接口地址,告诉requests要访问哪里。
为什么要这样写?这是接口要求。因为东方财富的这个接口必须按“基础网址 + secid+fields” 的格式请求,否则服务器不知道你要查哪只股票、要什么数据,会直接返回错误。
这是拼接请求网址(接口地址),拆解成3部分:
基础网址:http://push2.eastmoney.com/api/qt/stock/get
这是东方财富公开的股票数据接口地址,专门用来提供股票实时价格,相当于“存放股票价格的服务器地址”。
参数拼接:?secid={stock_code}&fields=f43
?:分隔“基础网址”和“请求参数”,是 URL的通用格式(比如浏览器搜“Python”,网址里?wd=Python的?就是这个作用);
secid={stock_code}:指定要查哪只股票。secid是接口要求的 “股票代码参数名”,{stock_code}是 Python的f-string语法,会把定义的STOCK_CODE(比如sh600036)替换进去;
&fields=f43:指定要获取什么数据,&用来分隔多个参数,fields=f43表示“只获取股票最新价格”。在东方财富接口里,f43是“最新价”的专属标识。
(2)requests.get()
requests库的核心函数,向指定URL发送GET请求(最常用的网络请求方式,比如浏览器输入网址就是 GET请求,意思是“向这个地址要数据”。
(3)timeout=10
设置“超时时间 10 秒”,也就是说,如果代码和服务器连接超过 10 秒还没拿到数据,就停止等待并报错,避免程序一直卡着。
(4)response变量
接收服务器返回的“数据包裹”,里面包含股票价格、请求是否成功等信息,后续从response里提取股价。