爬取动态数据
安装
pip install websockets(是一个异步请求包)
pip install websocket-client(同步的包)
import asyncio
import websockets
import ssl
import certifi
# ssl验证(有需要的时候才用)
ssl_context=ssl.create_default_context()
ssl_context.load_verify_locations(certifi.where())
# https://finance.sina.com.cn/realstock/company/sh000001/nc.shtml
async def main():
url='wss://hq.sinajs.cn/wskt?list=sh000001'
# extra_headers给ws 传递请求头
async with websockets.connect(url,extra_headers={'origin':
'https://finance.sina.com.cn','user-agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36'},ssl=ssl_context)as ws:
# 发送讲求
await ws.send("")
# 接收数据
while 1:
ret=await ws.recv()#默认阻塞
print(ret)
if __name__ == '__main__':
# 开始运行
asyncio.run(main())
结果
sh000001=上证指数,2844.7703,2848.7718,2858.0753,2860.7327,2839.3371,0,0,144160725,136240781641,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2024-08-23,11:26:38,00,
sh000001=上证指数,2844.7703,2848.7718,2858.2076,2860.7327,2839.3371,0,0,144179593,136264588580,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2024-08-23,11:26:41,00,
sh000001=上证指数,2844.7703,2848.7718,2858.0835,2860.7327,2839.3371,0,0,144206389,136292043896,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2024-08-23,11:26:44,00,