{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "```{post} 2021/11/24 00:00\n",
    ":category: Python\n",
    ":tags: basic, udata\n",
    ":excerpt: 1\n",
    "```\n",
    "\n",
    "# Python `udata` 取数\n",
    "\n",
    "\n",
    "1. 登录平台，[获取Token](https://udata.hs.net/help/292)\n",
    "2. 在数据页面，获取接口名称、请求参数，并查看返回参数及代码示例；\n",
    "3. 编写 Python 脚本，并执行，如下所示："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secu_abbr</th>\n",
       "      <th>chi_name</th>\n",
       "      <th>listed_state</th>\n",
       "      <th>secu_code</th>\n",
       "      <th>secu_market</th>\n",
       "      <th>listed_sector</th>\n",
       "      <th>hs_code</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>平安银行</td>\n",
       "      <td>平安银行股份有限公司</td>\n",
       "      <td>上市</td>\n",
       "      <td>000001</td>\n",
       "      <td>深圳证券交易所</td>\n",
       "      <td>主板</td>\n",
       "      <td>000001.SZ</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>万  科Ａ</td>\n",
       "      <td>万科企业股份有限公司</td>\n",
       "      <td>上市</td>\n",
       "      <td>000002</td>\n",
       "      <td>深圳证券交易所</td>\n",
       "      <td>主板</td>\n",
       "      <td>000002.SZ</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>国华网安</td>\n",
       "      <td>深圳国华网安科技股份有限公司</td>\n",
       "      <td>上市</td>\n",
       "      <td>000004</td>\n",
       "      <td>深圳证券交易所</td>\n",
       "      <td>主板</td>\n",
       "      <td>000004.SZ</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>ST 星 源</td>\n",
       "      <td>深圳世纪星源股份有限公司</td>\n",
       "      <td>上市</td>\n",
       "      <td>000005</td>\n",
       "      <td>深圳证券交易所</td>\n",
       "      <td>主板</td>\n",
       "      <td>000005.SZ</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>深振业Ａ</td>\n",
       "      <td>深圳市振业(集团)股份有限公司</td>\n",
       "      <td>上市</td>\n",
       "      <td>000006</td>\n",
       "      <td>深圳证券交易所</td>\n",
       "      <td>主板</td>\n",
       "      <td>000006.SZ</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  secu_abbr         chi_name listed_state secu_code secu_market listed_sector  \\\n",
       "0      平安银行       平安银行股份有限公司           上市    000001     深圳证券交易所            主板   \n",
       "1     万  科Ａ       万科企业股份有限公司           上市    000002     深圳证券交易所            主板   \n",
       "2      国华网安   深圳国华网安科技股份有限公司           上市    000004     深圳证券交易所            主板   \n",
       "3    ST 星 源     深圳世纪星源股份有限公司           上市    000005     深圳证券交易所            主板   \n",
       "4      深振业Ａ  深圳市振业(集团)股份有限公司           上市    000006     深圳证券交易所            主板   \n",
       "\n",
       "     hs_code  \n",
       "0  000001.SZ  \n",
       "1  000002.SZ  \n",
       "2  000004.SZ  \n",
       "3  000005.SZ  \n",
       "4  000006.SZ  "
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 引入 hs_udata 模块中 set_token 和 stock_list\n",
    "from hs_udata import set_token, stock_list\n",
    "# 设置 Token\n",
    "set_token(token='Xg6Mx3LZo2HACYGJ-ir825yGFKXJwZh5O4hY8g2HDtep4uGTwqYPHupLKIte6Hp_')\n",
    "data = stock_list()  # 获取 股票列表数据，返回格式为dataframe\n",
    "data.head()  # 打印数据前5行"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 导出数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import sys\n",
    "sys.path.extend(['../../../'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "from d2py.utils.file import mkdir"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "save_root = 'data'\n",
    "mkdir(save_root)\n",
    "\n",
    "data.to_excel(f'{save_root}/股票列表.xlsx')                               # 写出Excel文件\n",
    "data.to_csv(f'{save_root}/股票列表.csv',sep=',',encoding='utf_8_sig')     # 写出CSV文件\n",
    "data.to_csv(f'{save_root}/股票列表.txt',sep=' ',encoding='utf_8_sig')     # 写出TXT文件"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "interpreter": {
   "hash": "51eb5cba18ee50ab3b63881917fd1713ae431433c4639902c0607a4b2b83afbd"
  },
  "kernelspec": {
   "display_name": "hs",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
