akshare 1.16.15__tar.gz → 1.16.17__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (394) hide show
  1. {akshare-1.16.15 → akshare-1.16.17}/PKG-INFO +2 -2
  2. {akshare-1.16.15 → akshare-1.16.17}/README.md +1 -1
  3. {akshare-1.16.15 → akshare-1.16.17}/akshare/__init__.py +14 -1
  4. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures/futures_inventory_em.py +13 -8
  5. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_board_concept_em.py +89 -2
  6. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_board_industry_em.py +3 -1
  7. akshare-1.16.17/akshare/stock_feature/stock_board_concept_ths.py +286 -0
  8. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_board_industry_ths.py +2 -2
  9. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_research_report_em.py +6 -1
  10. {akshare-1.16.15 → akshare-1.16.17}/akshare.egg-info/PKG-INFO +2 -2
  11. {akshare-1.16.15 → akshare-1.16.17}/akshare.egg-info/SOURCES.txt +1 -0
  12. {akshare-1.16.15 → akshare-1.16.17}/LICENSE +0 -0
  13. {akshare-1.16.15 → akshare-1.16.17}/akshare/air/__init__.py +0 -0
  14. {akshare-1.16.15 → akshare-1.16.17}/akshare/air/air_hebei.py +0 -0
  15. {akshare-1.16.15 → akshare-1.16.17}/akshare/air/air_zhenqi.py +0 -0
  16. {akshare-1.16.15 → akshare-1.16.17}/akshare/air/cons.py +0 -0
  17. {akshare-1.16.15 → akshare-1.16.17}/akshare/air/crypto.js +0 -0
  18. {akshare-1.16.15 → akshare-1.16.17}/akshare/air/outcrypto.js +0 -0
  19. {akshare-1.16.15 → akshare-1.16.17}/akshare/air/sunrise_tad.py +0 -0
  20. {akshare-1.16.15 → akshare-1.16.17}/akshare/article/__init__.py +0 -0
  21. {akshare-1.16.15 → akshare-1.16.17}/akshare/article/cons.py +0 -0
  22. {akshare-1.16.15 → akshare-1.16.17}/akshare/article/epu_index.py +0 -0
  23. {akshare-1.16.15 → akshare-1.16.17}/akshare/article/ff_factor.py +0 -0
  24. {akshare-1.16.15 → akshare-1.16.17}/akshare/article/fred_md.py +0 -0
  25. {akshare-1.16.15 → akshare-1.16.17}/akshare/article/risk_rv.py +0 -0
  26. {akshare-1.16.15 → akshare-1.16.17}/akshare/bank/__init__.py +0 -0
  27. {akshare-1.16.15 → akshare-1.16.17}/akshare/bank/bank_cbirc_2020.py +0 -0
  28. {akshare-1.16.15 → akshare-1.16.17}/akshare/bank/cons.py +0 -0
  29. {akshare-1.16.15 → akshare-1.16.17}/akshare/bond/__init__.py +0 -0
  30. {akshare-1.16.15 → akshare-1.16.17}/akshare/bond/bond_cb_sina.py +0 -0
  31. {akshare-1.16.15 → akshare-1.16.17}/akshare/bond/bond_cb_ths.py +0 -0
  32. {akshare-1.16.15 → akshare-1.16.17}/akshare/bond/bond_cbond.py +0 -0
  33. {akshare-1.16.15 → akshare-1.16.17}/akshare/bond/bond_china.py +0 -0
  34. {akshare-1.16.15 → akshare-1.16.17}/akshare/bond/bond_china_money.py +0 -0
  35. {akshare-1.16.15 → akshare-1.16.17}/akshare/bond/bond_convert.py +0 -0
  36. {akshare-1.16.15 → akshare-1.16.17}/akshare/bond/bond_em.py +0 -0
  37. {akshare-1.16.15 → akshare-1.16.17}/akshare/bond/bond_info_cm.py +0 -0
  38. {akshare-1.16.15 → akshare-1.16.17}/akshare/bond/bond_issue_cninfo.py +0 -0
  39. {akshare-1.16.15 → akshare-1.16.17}/akshare/bond/bond_nafmii.py +0 -0
  40. {akshare-1.16.15 → akshare-1.16.17}/akshare/bond/bond_summary.py +0 -0
  41. {akshare-1.16.15 → akshare-1.16.17}/akshare/bond/bond_zh_cov.py +0 -0
  42. {akshare-1.16.15 → akshare-1.16.17}/akshare/bond/bond_zh_sina.py +0 -0
  43. {akshare-1.16.15 → akshare-1.16.17}/akshare/bond/cons.py +0 -0
  44. {akshare-1.16.15 → akshare-1.16.17}/akshare/cal/__init__.py +0 -0
  45. {akshare-1.16.15 → akshare-1.16.17}/akshare/cal/rv.py +0 -0
  46. {akshare-1.16.15 → akshare-1.16.17}/akshare/cost/__init__.py +0 -0
  47. {akshare-1.16.15 → akshare-1.16.17}/akshare/cost/cost_living.py +0 -0
  48. {akshare-1.16.15 → akshare-1.16.17}/akshare/crypto/__init__.py +0 -0
  49. {akshare-1.16.15 → akshare-1.16.17}/akshare/crypto/crypto_bitcoin_cme.py +0 -0
  50. {akshare-1.16.15 → akshare-1.16.17}/akshare/crypto/crypto_hold.py +0 -0
  51. {akshare-1.16.15 → akshare-1.16.17}/akshare/currency/__init__.py +0 -0
  52. {akshare-1.16.15 → akshare-1.16.17}/akshare/currency/currency.py +0 -0
  53. {akshare-1.16.15 → akshare-1.16.17}/akshare/currency/currency_china_bank_sina.py +0 -0
  54. {akshare-1.16.15 → akshare-1.16.17}/akshare/currency/currency_safe.py +0 -0
  55. {akshare-1.16.15 → akshare-1.16.17}/akshare/data/__init__.py +0 -0
  56. {akshare-1.16.15 → akshare-1.16.17}/akshare/data/cninfo.js +0 -0
  57. {akshare-1.16.15 → akshare-1.16.17}/akshare/data/crypto_info.zip +0 -0
  58. {akshare-1.16.15 → akshare-1.16.17}/akshare/data/ths.js +0 -0
  59. {akshare-1.16.15 → akshare-1.16.17}/akshare/datasets.py +0 -0
  60. {akshare-1.16.15 → akshare-1.16.17}/akshare/economic/__init__.py +0 -0
  61. {akshare-1.16.15 → akshare-1.16.17}/akshare/economic/cons.py +0 -0
  62. {akshare-1.16.15 → akshare-1.16.17}/akshare/economic/macro_australia.py +0 -0
  63. {akshare-1.16.15 → akshare-1.16.17}/akshare/economic/macro_bank.py +0 -0
  64. {akshare-1.16.15 → akshare-1.16.17}/akshare/economic/macro_canada.py +0 -0
  65. {akshare-1.16.15 → akshare-1.16.17}/akshare/economic/macro_china.py +0 -0
  66. {akshare-1.16.15 → akshare-1.16.17}/akshare/economic/macro_china_hk.py +0 -0
  67. {akshare-1.16.15 → akshare-1.16.17}/akshare/economic/macro_china_nbs.py +0 -0
  68. {akshare-1.16.15 → akshare-1.16.17}/akshare/economic/macro_constitute.py +0 -0
  69. {akshare-1.16.15 → akshare-1.16.17}/akshare/economic/macro_euro.py +0 -0
  70. {akshare-1.16.15 → akshare-1.16.17}/akshare/economic/macro_finance_ths.py +0 -0
  71. {akshare-1.16.15 → akshare-1.16.17}/akshare/economic/macro_germany.py +0 -0
  72. {akshare-1.16.15 → akshare-1.16.17}/akshare/economic/macro_info_ws.py +0 -0
  73. {akshare-1.16.15 → akshare-1.16.17}/akshare/economic/macro_japan.py +0 -0
  74. {akshare-1.16.15 → akshare-1.16.17}/akshare/economic/macro_other.py +0 -0
  75. {akshare-1.16.15 → akshare-1.16.17}/akshare/economic/macro_swiss.py +0 -0
  76. {akshare-1.16.15 → akshare-1.16.17}/akshare/economic/macro_uk.py +0 -0
  77. {akshare-1.16.15 → akshare-1.16.17}/akshare/economic/macro_usa.py +0 -0
  78. {akshare-1.16.15 → akshare-1.16.17}/akshare/economic/marco_cnbs.py +0 -0
  79. {akshare-1.16.15 → akshare-1.16.17}/akshare/energy/__init__.py +0 -0
  80. {akshare-1.16.15 → akshare-1.16.17}/akshare/energy/energy_carbon.py +0 -0
  81. {akshare-1.16.15 → akshare-1.16.17}/akshare/energy/energy_oil_em.py +0 -0
  82. {akshare-1.16.15 → akshare-1.16.17}/akshare/event/__init__.py +0 -0
  83. {akshare-1.16.15 → akshare-1.16.17}/akshare/event/cons.py +0 -0
  84. {akshare-1.16.15 → akshare-1.16.17}/akshare/event/migration.py +0 -0
  85. {akshare-1.16.15 → akshare-1.16.17}/akshare/exceptions.py +0 -0
  86. {akshare-1.16.15 → akshare-1.16.17}/akshare/file_fold/__init__.py +0 -0
  87. {akshare-1.16.15 → akshare-1.16.17}/akshare/file_fold/calendar.json +0 -0
  88. {akshare-1.16.15 → akshare-1.16.17}/akshare/fortune/__init__.py +0 -0
  89. {akshare-1.16.15 → akshare-1.16.17}/akshare/fortune/fortune_500.py +0 -0
  90. {akshare-1.16.15 → akshare-1.16.17}/akshare/fortune/fortune_bloomberg.py +0 -0
  91. {akshare-1.16.15 → akshare-1.16.17}/akshare/fortune/fortune_forbes_500.py +0 -0
  92. {akshare-1.16.15 → akshare-1.16.17}/akshare/fortune/fortune_hurun.py +0 -0
  93. {akshare-1.16.15 → akshare-1.16.17}/akshare/fortune/fortune_xincaifu_500.py +0 -0
  94. {akshare-1.16.15 → akshare-1.16.17}/akshare/fund/__init__.py +0 -0
  95. {akshare-1.16.15 → akshare-1.16.17}/akshare/fund/fund_amac.py +0 -0
  96. {akshare-1.16.15 → akshare-1.16.17}/akshare/fund/fund_announcement.py +0 -0
  97. {akshare-1.16.15 → akshare-1.16.17}/akshare/fund/fund_aum_em.py +0 -0
  98. {akshare-1.16.15 → akshare-1.16.17}/akshare/fund/fund_em.py +0 -0
  99. {akshare-1.16.15 → akshare-1.16.17}/akshare/fund/fund_etf_em.py +0 -0
  100. {akshare-1.16.15 → akshare-1.16.17}/akshare/fund/fund_etf_sina.py +0 -0
  101. {akshare-1.16.15 → akshare-1.16.17}/akshare/fund/fund_etf_ths.py +0 -0
  102. {akshare-1.16.15 → akshare-1.16.17}/akshare/fund/fund_fee_em.py +0 -0
  103. {akshare-1.16.15 → akshare-1.16.17}/akshare/fund/fund_fhsp_em.py +0 -0
  104. {akshare-1.16.15 → akshare-1.16.17}/akshare/fund/fund_init_em.py +0 -0
  105. {akshare-1.16.15 → akshare-1.16.17}/akshare/fund/fund_lof_em.py +0 -0
  106. {akshare-1.16.15 → akshare-1.16.17}/akshare/fund/fund_manager.py +0 -0
  107. {akshare-1.16.15 → akshare-1.16.17}/akshare/fund/fund_portfolio_em.py +0 -0
  108. {akshare-1.16.15 → akshare-1.16.17}/akshare/fund/fund_position_lg.py +0 -0
  109. {akshare-1.16.15 → akshare-1.16.17}/akshare/fund/fund_rank_em.py +0 -0
  110. {akshare-1.16.15 → akshare-1.16.17}/akshare/fund/fund_rating.py +0 -0
  111. {akshare-1.16.15 → akshare-1.16.17}/akshare/fund/fund_report_cninfo.py +0 -0
  112. {akshare-1.16.15 → akshare-1.16.17}/akshare/fund/fund_scale_em.py +0 -0
  113. {akshare-1.16.15 → akshare-1.16.17}/akshare/fund/fund_scale_sina.py +0 -0
  114. {akshare-1.16.15 → akshare-1.16.17}/akshare/fund/fund_xq.py +0 -0
  115. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures/__init__.py +0 -0
  116. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures/cons.py +0 -0
  117. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures/cot.py +0 -0
  118. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures/futures_basis.py +0 -0
  119. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures/futures_comex_em.py +0 -0
  120. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures/futures_comm_ctp.py +0 -0
  121. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures/futures_comm_qihuo.py +0 -0
  122. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures/futures_contract_detail.py +0 -0
  123. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures/futures_daily_bar.py +0 -0
  124. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures/futures_foreign.py +0 -0
  125. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures/futures_hf_em.py +0 -0
  126. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures/futures_hist_em.py +0 -0
  127. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures/futures_hq_sina.py +0 -0
  128. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures/futures_index_ccidx.py +0 -0
  129. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures/futures_inventory_99.py +0 -0
  130. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures/futures_news_shmet.py +0 -0
  131. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures/futures_roll_yield.py +0 -0
  132. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures/futures_rule.py +0 -0
  133. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures/futures_rule_em.py +0 -0
  134. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures/futures_settlement_price_sgx.py +0 -0
  135. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures/futures_spot_stock_em.py +0 -0
  136. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures/futures_stock_js.py +0 -0
  137. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures/futures_to_spot.py +0 -0
  138. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures/futures_warehouse_receipt.py +0 -0
  139. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures/futures_zh_sina.py +0 -0
  140. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures/receipt.py +0 -0
  141. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures/requests_fun.py +0 -0
  142. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures/symbol_var.py +0 -0
  143. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures_derivative/__init__.py +0 -0
  144. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures_derivative/cons.py +0 -0
  145. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures_derivative/futures_contract_info_cffex.py +0 -0
  146. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures_derivative/futures_contract_info_czce.py +0 -0
  147. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures_derivative/futures_contract_info_dce.py +0 -0
  148. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures_derivative/futures_contract_info_gfex.py +0 -0
  149. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures_derivative/futures_contract_info_ine.py +0 -0
  150. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures_derivative/futures_contract_info_shfe.py +0 -0
  151. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures_derivative/futures_cot_sina.py +0 -0
  152. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures_derivative/futures_hog.py +0 -0
  153. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures_derivative/futures_index_sina.py +0 -0
  154. {akshare-1.16.15 → akshare-1.16.17}/akshare/futures_derivative/futures_spot_sys.py +0 -0
  155. {akshare-1.16.15 → akshare-1.16.17}/akshare/fx/__init__.py +0 -0
  156. {akshare-1.16.15 → akshare-1.16.17}/akshare/fx/cons.py +0 -0
  157. {akshare-1.16.15 → akshare-1.16.17}/akshare/fx/currency_investing.py +0 -0
  158. {akshare-1.16.15 → akshare-1.16.17}/akshare/fx/fx_quote.py +0 -0
  159. {akshare-1.16.15 → akshare-1.16.17}/akshare/fx/fx_quote_baidu.py +0 -0
  160. {akshare-1.16.15 → akshare-1.16.17}/akshare/hf/__init__.py +0 -0
  161. {akshare-1.16.15 → akshare-1.16.17}/akshare/hf/hf_sp500.py +0 -0
  162. {akshare-1.16.15 → akshare-1.16.17}/akshare/index/__init__.py +0 -0
  163. {akshare-1.16.15 → akshare-1.16.17}/akshare/index/cons.py +0 -0
  164. {akshare-1.16.15 → akshare-1.16.17}/akshare/index/index_cflp.py +0 -0
  165. {akshare-1.16.15 → akshare-1.16.17}/akshare/index/index_cni.py +0 -0
  166. {akshare-1.16.15 → akshare-1.16.17}/akshare/index/index_cons.py +0 -0
  167. {akshare-1.16.15 → akshare-1.16.17}/akshare/index/index_cx.py +0 -0
  168. {akshare-1.16.15 → akshare-1.16.17}/akshare/index/index_drewry.py +0 -0
  169. {akshare-1.16.15 → akshare-1.16.17}/akshare/index/index_eri.py +0 -0
  170. {akshare-1.16.15 → akshare-1.16.17}/akshare/index/index_hog.py +0 -0
  171. {akshare-1.16.15 → akshare-1.16.17}/akshare/index/index_kq_fz.py +0 -0
  172. {akshare-1.16.15 → akshare-1.16.17}/akshare/index/index_kq_ss.py +0 -0
  173. {akshare-1.16.15 → akshare-1.16.17}/akshare/index/index_option_qvix.py +0 -0
  174. {akshare-1.16.15 → akshare-1.16.17}/akshare/index/index_research_fund_sw.py +0 -0
  175. {akshare-1.16.15 → akshare-1.16.17}/akshare/index/index_research_sw.py +0 -0
  176. {akshare-1.16.15 → akshare-1.16.17}/akshare/index/index_spot.py +0 -0
  177. {akshare-1.16.15 → akshare-1.16.17}/akshare/index/index_stock_hk.py +0 -0
  178. {akshare-1.16.15 → akshare-1.16.17}/akshare/index/index_stock_us_sina.py +0 -0
  179. {akshare-1.16.15 → akshare-1.16.17}/akshare/index/index_stock_zh.py +0 -0
  180. {akshare-1.16.15 → akshare-1.16.17}/akshare/index/index_stock_zh_csindex.py +0 -0
  181. {akshare-1.16.15 → akshare-1.16.17}/akshare/index/index_sugar.py +0 -0
  182. {akshare-1.16.15 → akshare-1.16.17}/akshare/index/index_sw.py +0 -0
  183. {akshare-1.16.15 → akshare-1.16.17}/akshare/index/index_yw.py +0 -0
  184. {akshare-1.16.15 → akshare-1.16.17}/akshare/index/index_zh_a_scope.py +0 -0
  185. {akshare-1.16.15 → akshare-1.16.17}/akshare/index/index_zh_em.py +0 -0
  186. {akshare-1.16.15 → akshare-1.16.17}/akshare/interest_rate/__init__.py +0 -0
  187. {akshare-1.16.15 → akshare-1.16.17}/akshare/interest_rate/interbank_rate_em.py +0 -0
  188. {akshare-1.16.15 → akshare-1.16.17}/akshare/movie/__init__.py +0 -0
  189. {akshare-1.16.15 → akshare-1.16.17}/akshare/movie/artist_yien.py +0 -0
  190. {akshare-1.16.15 → akshare-1.16.17}/akshare/movie/jm.js +0 -0
  191. {akshare-1.16.15 → akshare-1.16.17}/akshare/movie/movie_yien.py +0 -0
  192. {akshare-1.16.15 → akshare-1.16.17}/akshare/movie/video_yien.py +0 -0
  193. {akshare-1.16.15 → akshare-1.16.17}/akshare/news/__init__.py +0 -0
  194. {akshare-1.16.15 → akshare-1.16.17}/akshare/news/news_baidu.py +0 -0
  195. {akshare-1.16.15 → akshare-1.16.17}/akshare/news/news_cctv.py +0 -0
  196. {akshare-1.16.15 → akshare-1.16.17}/akshare/news/news_stock.py +0 -0
  197. {akshare-1.16.15 → akshare-1.16.17}/akshare/nlp/__init__.py +0 -0
  198. {akshare-1.16.15 → akshare-1.16.17}/akshare/nlp/nlp_interface.py +0 -0
  199. {akshare-1.16.15 → akshare-1.16.17}/akshare/option/__init__.py +0 -0
  200. {akshare-1.16.15 → akshare-1.16.17}/akshare/option/cons.py +0 -0
  201. {akshare-1.16.15 → akshare-1.16.17}/akshare/option/option_comm_qihuo.py +0 -0
  202. {akshare-1.16.15 → akshare-1.16.17}/akshare/option/option_commodity.py +0 -0
  203. {akshare-1.16.15 → akshare-1.16.17}/akshare/option/option_commodity_sina.py +0 -0
  204. {akshare-1.16.15 → akshare-1.16.17}/akshare/option/option_czce.py +0 -0
  205. {akshare-1.16.15 → akshare-1.16.17}/akshare/option/option_daily_stats_sse_szse.py +0 -0
  206. {akshare-1.16.15 → akshare-1.16.17}/akshare/option/option_em.py +0 -0
  207. {akshare-1.16.15 → akshare-1.16.17}/akshare/option/option_finance.py +0 -0
  208. {akshare-1.16.15 → akshare-1.16.17}/akshare/option/option_finance_sina.py +0 -0
  209. {akshare-1.16.15 → akshare-1.16.17}/akshare/option/option_lhb_em.py +0 -0
  210. {akshare-1.16.15 → akshare-1.16.17}/akshare/option/option_premium_analysis_em.py +0 -0
  211. {akshare-1.16.15 → akshare-1.16.17}/akshare/option/option_risk_analysis_em.py +0 -0
  212. {akshare-1.16.15 → akshare-1.16.17}/akshare/option/option_risk_indicator_sse.py +0 -0
  213. {akshare-1.16.15 → akshare-1.16.17}/akshare/option/option_value_analysis_em.py +0 -0
  214. {akshare-1.16.15 → akshare-1.16.17}/akshare/other/__init__.py +0 -0
  215. {akshare-1.16.15 → akshare-1.16.17}/akshare/other/other_car_cpca.py +0 -0
  216. {akshare-1.16.15 → akshare-1.16.17}/akshare/other/other_car_gasgoo.py +0 -0
  217. {akshare-1.16.15 → akshare-1.16.17}/akshare/pro/__init__.py +0 -0
  218. {akshare-1.16.15 → akshare-1.16.17}/akshare/pro/client.py +0 -0
  219. {akshare-1.16.15 → akshare-1.16.17}/akshare/pro/cons.py +0 -0
  220. {akshare-1.16.15 → akshare-1.16.17}/akshare/pro/data_pro.py +0 -0
  221. {akshare-1.16.15 → akshare-1.16.17}/akshare/qdii/__init__.py +0 -0
  222. {akshare-1.16.15 → akshare-1.16.17}/akshare/qdii/qdii_jsl.py +0 -0
  223. {akshare-1.16.15 → akshare-1.16.17}/akshare/qhkc/__init__.py +0 -0
  224. {akshare-1.16.15 → akshare-1.16.17}/akshare/qhkc/qhkc_api.py +0 -0
  225. {akshare-1.16.15 → akshare-1.16.17}/akshare/qhkc_web/__init__.py +0 -0
  226. {akshare-1.16.15 → akshare-1.16.17}/akshare/qhkc_web/qhkc_fund.py +0 -0
  227. {akshare-1.16.15 → akshare-1.16.17}/akshare/qhkc_web/qhkc_index.py +0 -0
  228. {akshare-1.16.15 → akshare-1.16.17}/akshare/qhkc_web/qhkc_tool.py +0 -0
  229. {akshare-1.16.15 → akshare-1.16.17}/akshare/rate/__init__.py +0 -0
  230. {akshare-1.16.15 → akshare-1.16.17}/akshare/rate/repo_rate.py +0 -0
  231. {akshare-1.16.15 → akshare-1.16.17}/akshare/reits/__init__.py +0 -0
  232. {akshare-1.16.15 → akshare-1.16.17}/akshare/reits/reits_basic.py +0 -0
  233. {akshare-1.16.15 → akshare-1.16.17}/akshare/request.py +0 -0
  234. {akshare-1.16.15 → akshare-1.16.17}/akshare/sport/__init__.py +0 -0
  235. {akshare-1.16.15 → akshare-1.16.17}/akshare/sport/sport_olympic.py +0 -0
  236. {akshare-1.16.15 → akshare-1.16.17}/akshare/spot/__init__.py +0 -0
  237. {akshare-1.16.15 → akshare-1.16.17}/akshare/spot/spot_hog_soozhu.py +0 -0
  238. {akshare-1.16.15 → akshare-1.16.17}/akshare/spot/spot_price_qh.py +0 -0
  239. {akshare-1.16.15 → akshare-1.16.17}/akshare/spot/spot_sge.py +0 -0
  240. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/__init__.py +0 -0
  241. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/cons.py +0 -0
  242. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_allotment_cninfo.py +0 -0
  243. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_ask_bid_em.py +0 -0
  244. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_cg_equity_mortgage.py +0 -0
  245. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_cg_guarantee.py +0 -0
  246. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_cg_lawsuit.py +0 -0
  247. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_dividend_cninfo.py +0 -0
  248. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_dzjy_em.py +0 -0
  249. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_fund_em.py +0 -0
  250. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_fund_hold.py +0 -0
  251. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_gsrl_em.py +0 -0
  252. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_hk_famous.py +0 -0
  253. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_hk_fhpx_ths.py +0 -0
  254. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_hk_hot_rank_em.py +0 -0
  255. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_hk_sina.py +0 -0
  256. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_hold_control_cninfo.py +0 -0
  257. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_hold_control_em.py +0 -0
  258. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_hold_num_cninfo.py +0 -0
  259. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_hot_rank_em.py +0 -0
  260. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_hot_search_baidu.py +0 -0
  261. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_hot_up_em.py +0 -0
  262. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_industry.py +0 -0
  263. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_industry_cninfo.py +0 -0
  264. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_industry_pe_cninfo.py +0 -0
  265. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_industry_sw.py +0 -0
  266. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_info.py +0 -0
  267. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_info_em.py +0 -0
  268. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_intraday_em.py +0 -0
  269. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_intraday_sina.py +0 -0
  270. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_ipo_summary_cninfo.py +0 -0
  271. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_new_cninfo.py +0 -0
  272. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_news_cx.py +0 -0
  273. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_profile_cninfo.py +0 -0
  274. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_rank_forecast.py +0 -0
  275. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_repurchase_em.py +0 -0
  276. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_share_changes_cninfo.py +0 -0
  277. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_share_hold.py +0 -0
  278. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_stop.py +0 -0
  279. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_summary.py +0 -0
  280. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_us_famous.py +0 -0
  281. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_us_js.py +0 -0
  282. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_us_pink.py +0 -0
  283. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_us_sina.py +0 -0
  284. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_weibo_nlp.py +0 -0
  285. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_xq.py +0 -0
  286. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_zh_a_sina.py +0 -0
  287. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_zh_a_special.py +0 -0
  288. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_zh_a_tick_tx.py +0 -0
  289. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_zh_ah_tx.py +0 -0
  290. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_zh_b_sina.py +0 -0
  291. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_zh_kcb_report.py +0 -0
  292. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock/stock_zh_kcb_sina.py +0 -0
  293. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/__init__.py +0 -0
  294. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/cons.py +0 -0
  295. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_a_below_net_asset_statistics.py +0 -0
  296. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_a_high_low.py +0 -0
  297. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_a_indicator.py +0 -0
  298. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_a_pe_and_pb.py +0 -0
  299. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_account_em.py +0 -0
  300. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_all_pb.py +0 -0
  301. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_analyst_em.py +0 -0
  302. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_buffett_index_lg.py +0 -0
  303. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_classify_sina.py +0 -0
  304. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_comment_em.py +0 -0
  305. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_concept_futu.py +0 -0
  306. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_congestion_lg.py +0 -0
  307. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_cyq_em.py +0 -0
  308. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_disclosure_cninfo.py +0 -0
  309. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_dxsyl_em.py +0 -0
  310. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_ebs_lg.py +0 -0
  311. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_esg_sina.py +0 -0
  312. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_fhps_em.py +0 -0
  313. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_fhps_ths.py +0 -0
  314. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_fund_flow.py +0 -0
  315. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_gddh_em.py +0 -0
  316. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_gdfx_em.py +0 -0
  317. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_gdhs.py +0 -0
  318. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_gdzjc_em.py +0 -0
  319. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_gpzy_em.py +0 -0
  320. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_gxl_lg.py +0 -0
  321. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_hist_em.py +0 -0
  322. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_hist_tx.py +0 -0
  323. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_hk_valuation_baidu.py +0 -0
  324. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_hot_xq.py +0 -0
  325. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_hsgt_em.py +0 -0
  326. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_hsgt_exchange_rate.py +0 -0
  327. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_hsgt_min_em.py +0 -0
  328. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_info.py +0 -0
  329. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_inner_trade_xq.py +0 -0
  330. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_irm_cninfo.py +0 -0
  331. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_jgdy_em.py +0 -0
  332. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_lh_yybpm.py +0 -0
  333. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_lhb_em.py +0 -0
  334. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_lhb_sina.py +0 -0
  335. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_margin_em.py +0 -0
  336. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_margin_sse.py +0 -0
  337. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_margin_szse.py +0 -0
  338. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_market_legu.py +0 -0
  339. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_pankou_em.py +0 -0
  340. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_qsjy_em.py +0 -0
  341. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_report_em.py +0 -0
  342. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_sns_sseinfo.py +0 -0
  343. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_sy_em.py +0 -0
  344. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_technology_ths.py +0 -0
  345. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_tfp_em.py +0 -0
  346. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_three_report_em.py +0 -0
  347. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_ttm_lyr.py +0 -0
  348. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_value_em.py +0 -0
  349. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_wencai.py +0 -0
  350. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_yjbb_em.py +0 -0
  351. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_yjyg_cninfo.py +0 -0
  352. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_yjyg_em.py +0 -0
  353. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_yzxdr_em.py +0 -0
  354. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_zdhtmx_em.py +0 -0
  355. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_zf_pg.py +0 -0
  356. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_zh_valuation_baidu.py +0 -0
  357. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_zh_vote_baidu.py +0 -0
  358. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/stock_ztb_em.py +0 -0
  359. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_feature/ths.js +0 -0
  360. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_fundamental/__init__.py +0 -0
  361. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_fundamental/stock_finance.py +0 -0
  362. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_fundamental/stock_finance_hk.py +0 -0
  363. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_fundamental/stock_finance_ths.py +0 -0
  364. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_fundamental/stock_hold.py +0 -0
  365. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_fundamental/stock_ipo_declare.py +0 -0
  366. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_fundamental/stock_kcb_detail_sse.py +0 -0
  367. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_fundamental/stock_kcb_sse.py +0 -0
  368. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_fundamental/stock_mda_ym.py +0 -0
  369. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_fundamental/stock_notice.py +0 -0
  370. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_fundamental/stock_profit_forecast_em.py +0 -0
  371. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_fundamental/stock_profit_forecast_hk_etnet.py +0 -0
  372. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_fundamental/stock_profit_forecast_ths.py +0 -0
  373. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_fundamental/stock_recommend.py +0 -0
  374. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_fundamental/stock_register_em.py +0 -0
  375. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_fundamental/stock_restricted_em.py +0 -0
  376. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_fundamental/stock_zygc.py +0 -0
  377. {akshare-1.16.15 → akshare-1.16.17}/akshare/stock_fundamental/stock_zyjs_ths.py +0 -0
  378. {akshare-1.16.15 → akshare-1.16.17}/akshare/tool/__init__.py +0 -0
  379. {akshare-1.16.15 → akshare-1.16.17}/akshare/tool/trade_date_hist.py +0 -0
  380. {akshare-1.16.15 → akshare-1.16.17}/akshare/utils/__init__.py +0 -0
  381. {akshare-1.16.15 → akshare-1.16.17}/akshare/utils/cons.py +0 -0
  382. {akshare-1.16.15 → akshare-1.16.17}/akshare/utils/context.py +0 -0
  383. {akshare-1.16.15 → akshare-1.16.17}/akshare/utils/demjson.py +0 -0
  384. {akshare-1.16.15 → akshare-1.16.17}/akshare/utils/func.py +0 -0
  385. {akshare-1.16.15 → akshare-1.16.17}/akshare/utils/token_process.py +0 -0
  386. {akshare-1.16.15 → akshare-1.16.17}/akshare/utils/tqdm.py +0 -0
  387. {akshare-1.16.15 → akshare-1.16.17}/akshare.egg-info/dependency_links.txt +0 -0
  388. {akshare-1.16.15 → akshare-1.16.17}/akshare.egg-info/requires.txt +0 -0
  389. {akshare-1.16.15 → akshare-1.16.17}/akshare.egg-info/top_level.txt +0 -0
  390. {akshare-1.16.15 → akshare-1.16.17}/pyproject.toml +0 -0
  391. {akshare-1.16.15 → akshare-1.16.17}/setup.cfg +0 -0
  392. {akshare-1.16.15 → akshare-1.16.17}/setup.py +0 -0
  393. {akshare-1.16.15 → akshare-1.16.17}/tests/__init__.py +0 -0
  394. {akshare-1.16.15 → akshare-1.16.17}/tests/test_func.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: akshare
3
- Version: 1.16.15
3
+ Version: 1.16.17
4
4
  Summary: AKShare is an elegant and simple financial data interface library for Python, built for human beings!
5
5
  Home-page: https://github.com/akfamily/akshare
6
6
  Author: AKFamily
@@ -50,7 +50,7 @@ Dynamic: requires-dist
50
50
  Dynamic: requires-python
51
51
  Dynamic: summary
52
52
 
53
- **欢迎加入专注于财经数据和量化投资的知识社区,请点击[了解更多](https://akshare.akfamily.xyz/learn.html)**
53
+ **欢迎加入专注于财经数据和量化投资的知识社区,获取《AKShare-财经数据宝典》,请点击[了解更多](https://akshare.akfamily.xyz/learn.html)**
54
54
 
55
55
  **量化投研视频课程:《PyBroker-入门及实战》已经上架!《PyBroker-进阶及实战》正在更新!**
56
56
 
@@ -1,4 +1,4 @@
1
- **欢迎加入专注于财经数据和量化投资的知识社区,请点击[了解更多](https://akshare.akfamily.xyz/learn.html)**
1
+ **欢迎加入专注于财经数据和量化投资的知识社区,获取《AKShare-财经数据宝典》,请点击[了解更多](https://akshare.akfamily.xyz/learn.html)**
2
2
 
3
3
  **量化投研视频课程:《PyBroker-入门及实战》已经上架!《PyBroker-进阶及实战》正在更新!**
4
4
 
@@ -3024,9 +3024,11 @@ amac_manager_cancelled_info # 中国证券投资基金业协会-信息公示-诚
3024
3024
  1.16.13 fix: fix futures_inventory_99 interface
3025
3025
  1.16.14 fix: fix stock_info_global_cls interface
3026
3026
  1.16.15 fix: fix stock_board_concept_name_em interface
3027
+ 1.16.16 fix: fix stock_board_concept_spot_em interface
3028
+ 1.16.17 fix: fix stock_research_report_em interface
3027
3029
  """
3028
3030
 
3029
- __version__ = "1.16.15"
3031
+ __version__ = "1.16.17"
3030
3032
  __author__ = "AKFamily"
3031
3033
 
3032
3034
  import sys
@@ -4054,6 +4056,7 @@ from akshare.stock.stock_board_concept_em import (
4054
4056
  stock_board_concept_hist_em,
4055
4057
  stock_board_concept_hist_min_em,
4056
4058
  stock_board_concept_name_em,
4059
+ stock_board_concept_spot_em,
4057
4060
  )
4058
4061
 
4059
4062
  """
@@ -4274,6 +4277,16 @@ from akshare.stock_feature.stock_report_em import (
4274
4277
  """
4275
4278
  from akshare.stock_feature.stock_yjbb_em import stock_yjbb_em
4276
4279
 
4280
+ """
4281
+ 同花顺-概念板块
4282
+ """
4283
+ from akshare.stock_feature.stock_board_concept_ths import (
4284
+ stock_board_concept_info_ths,
4285
+ stock_board_concept_summary_ths,
4286
+ stock_board_concept_index_ths,
4287
+ stock_board_concept_name_ths,
4288
+ )
4289
+
4277
4290
  """
4278
4291
  同花顺-行业板块
4279
4292
  """
@@ -1,19 +1,20 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2022/11/27 19:58
4
+ Date: 2025/2/27 17:00
5
5
  Desc: 东方财富网-数据中心-期货库存数据
6
6
  https://data.eastmoney.com/ifdata/kcsj.html
7
7
  """
8
+
8
9
  import pandas as pd
9
10
  import requests
10
11
 
11
12
 
12
- def futures_inventory_em(symbol: str = "沪铝") -> pd.DataFrame:
13
+ def futures_inventory_em(symbol: str = "A") -> pd.DataFrame:
13
14
  """
14
15
  东方财富网-数据中心-期货库存数据
15
16
  https://data.eastmoney.com/ifdata/kcsj.html
16
- :param symbol: https://data.eastmoney.com/ifdata/kcsj.html 对应的中文名称, 如: 沪铝
17
+ :param symbol: 支持品种代码和中文名称,中文名称参见:https://data.eastmoney.com/ifdata/kcsj.html
17
18
  :type symbol: str
18
19
  :return: 指定品种的库存数据
19
20
  :rtype: pandas.DataFrame
@@ -33,12 +34,17 @@ def futures_inventory_em(symbol: str = "沪铝") -> pd.DataFrame:
33
34
  data_json = r.json()
34
35
  temp_df = pd.DataFrame(data_json["result"]["data"])
35
36
  symbol_dict = dict(zip(temp_df["TRADE_TYPE"], temp_df["TRADE_CODE"]))
36
-
37
+ if symbol in symbol_dict.keys():
38
+ product_id = symbol_dict[symbol]
39
+ elif symbol in symbol_dict.values(): # 如果输入的是代码
40
+ product_id = symbol
41
+ else:
42
+ raise ValueError(f"请输入正确的 symbol, 可选项为: {symbol_dict}")
37
43
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
38
44
  params = {
39
45
  "reportName": "RPT_FUTU_STOCKDATA",
40
46
  "columns": "SECURITY_CODE,TRADE_DATE,ON_WARRANT_NUM,ADDCHANGE",
41
- "filter": f"""(SECURITY_CODE="{symbol_dict[symbol]}")(TRADE_DATE>='2020-10-28')""",
47
+ "filter": f"""(SECURITY_CODE="{product_id}")(TRADE_DATE>='2020-10-28')""",
42
48
  "pageNumber": "1",
43
49
  "pageSize": "500",
44
50
  "sortTypes": "-1",
@@ -50,17 +56,16 @@ def futures_inventory_em(symbol: str = "沪铝") -> pd.DataFrame:
50
56
  r = requests.get(url, params=params)
51
57
  data_json = r.json()
52
58
  temp_df = pd.DataFrame(data_json["result"]["data"])
53
-
54
59
  temp_df.columns = ["-", "日期", "库存", "增减"]
55
60
  temp_df = temp_df[["日期", "库存", "增减"]]
56
61
  temp_df.sort_values(["日期"], inplace=True)
57
62
  temp_df.reset_index(inplace=True, drop=True)
58
63
  temp_df["库存"] = pd.to_numeric(temp_df["库存"], errors="coerce")
59
64
  temp_df["增减"] = pd.to_numeric(temp_df["增减"], errors="coerce")
60
- temp_df["日期"] = pd.to_datetime(temp_df["日期"]).dt.date
65
+ temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
61
66
  return temp_df
62
67
 
63
68
 
64
69
  if __name__ == "__main__":
65
- futures_inventory_em_df = futures_inventory_em(symbol="豆一")
70
+ futures_inventory_em_df = futures_inventory_em(symbol="A")
66
71
  print(futures_inventory_em_df)
@@ -97,8 +97,92 @@ def stock_board_concept_name_em() -> pd.DataFrame:
97
97
  return temp_df
98
98
 
99
99
 
100
+ def stock_board_concept_spot_em() -> pd.DataFrame:
101
+ """
102
+ 东方财富网-行情中心-沪深京板块-概念板块-实时行情
103
+ https://quote.eastmoney.com/center/boardlist.html#concept_board
104
+ :return: 概念板块-实时行情
105
+ :rtype: pandas.DataFrame
106
+ """
107
+ url = "https://79.push2.eastmoney.com/api/qt/clist/get"
108
+ params = {
109
+ "pn": "1",
110
+ "pz": "50000",
111
+ "po": "1",
112
+ "np": "2",
113
+ "ut": "bd1d9ddb04089700cf9c27f6f7426281",
114
+ "fltt": "2",
115
+ "invt": "2",
116
+ "fid": "f3",
117
+ "fs": "m:90 t:3 f:!50",
118
+ "fields": "f2,f3,f4,f8,f12,f14,f15,f16,f17,f18,f20,f21,f24,f25,f22,f33,f11,f62,f128,f124,f107,f104,f105,f136",
119
+ "_": "1626075887768",
120
+ }
121
+ r = requests.get(url, params=params)
122
+ data_json = r.json()
123
+ temp_df = pd.DataFrame(data_json["data"]["diff"]).T
124
+ temp_df.reset_index(inplace=True)
125
+ temp_df["index"] = range(1, len(temp_df) + 1)
126
+ temp_df.columns = [
127
+ "排名",
128
+ "最新价",
129
+ "涨跌幅",
130
+ "涨跌额",
131
+ "换手率",
132
+ "_",
133
+ "板块代码",
134
+ "板块名称",
135
+ "_",
136
+ "_",
137
+ "_",
138
+ "_",
139
+ "总市值",
140
+ "_",
141
+ "_",
142
+ "_",
143
+ "_",
144
+ "_",
145
+ "_",
146
+ "上涨家数",
147
+ "下跌家数",
148
+ "_",
149
+ "_",
150
+ "领涨股票",
151
+ "_",
152
+ "_",
153
+ "领涨股票-涨跌幅",
154
+ ]
155
+ temp_df = temp_df[
156
+ [
157
+ "排名",
158
+ "板块名称",
159
+ "板块代码",
160
+ "最新价",
161
+ "涨跌额",
162
+ "涨跌幅",
163
+ "总市值",
164
+ "换手率",
165
+ "上涨家数",
166
+ "下跌家数",
167
+ "领涨股票",
168
+ "领涨股票-涨跌幅",
169
+ ]
170
+ ]
171
+ temp_df["最新价"] = pd.to_numeric(temp_df["最新价"], errors="coerce")
172
+ temp_df["涨跌额"] = pd.to_numeric(temp_df["涨跌额"], errors="coerce")
173
+ temp_df["涨跌幅"] = pd.to_numeric(temp_df["涨跌幅"], errors="coerce")
174
+ temp_df["总市值"] = pd.to_numeric(temp_df["总市值"], errors="coerce")
175
+ temp_df["换手率"] = pd.to_numeric(temp_df["换手率"], errors="coerce")
176
+ temp_df["上涨家数"] = pd.to_numeric(temp_df["上涨家数"], errors="coerce")
177
+ temp_df["下跌家数"] = pd.to_numeric(temp_df["下跌家数"], errors="coerce")
178
+ temp_df["领涨股票-涨跌幅"] = pd.to_numeric(
179
+ temp_df["领涨股票-涨跌幅"], errors="coerce"
180
+ )
181
+ return temp_df
182
+
183
+
100
184
  def stock_board_concept_hist_em(
101
- symbol: str = "数字货币",
185
+ symbol: str = "绿色电力",
102
186
  period: str = "daily",
103
187
  start_date: str = "20220101",
104
188
  end_date: str = "20221128",
@@ -406,11 +490,14 @@ if __name__ == "__main__":
406
490
  stock_board_concept_em_df = stock_board_concept_name_em()
407
491
  print(stock_board_concept_em_df)
408
492
 
493
+ stock_board_concept_spot_em_df = stock_board_concept_spot_em()
494
+ print(stock_board_concept_spot_em_df)
495
+
409
496
  stock_board_concept_hist_em_df = stock_board_concept_hist_em(
410
497
  symbol="绿色电力",
411
498
  period="daily",
412
499
  start_date="20220101",
413
- end_date="20230806",
500
+ end_date="20250227",
414
501
  adjust="",
415
502
  )
416
503
  print(stock_board_concept_hist_em_df)
@@ -1,17 +1,19 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/8/23 17:50
4
+ Date: 2025/2/28 13:50
5
5
  Desc: 东方财富-沪深板块-行业板块
6
6
  https://quote.eastmoney.com/center/boardlist.html#industry_board
7
7
  """
8
8
 
9
9
  import re
10
+ from functools import lru_cache
10
11
 
11
12
  import pandas as pd
12
13
  import requests
13
14
 
14
15
 
16
+ @lru_cache()
15
17
  def stock_board_industry_name_em() -> pd.DataFrame:
16
18
  """
17
19
  东方财富网-沪深板块-行业板块-名称
@@ -0,0 +1,286 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding:utf-8 -*-
3
+ """
4
+ Date: 2025/2/28 13:20
5
+ Desc: 同花顺-板块-概念板块
6
+ https://q.10jqka.com.cn/thshy/
7
+ """
8
+
9
+ from datetime import datetime
10
+ from functools import lru_cache
11
+ from io import StringIO
12
+
13
+ import pandas as pd
14
+ import requests
15
+ from bs4 import BeautifulSoup
16
+ import py_mini_racer
17
+
18
+ from akshare.datasets import get_ths_js
19
+ from akshare.utils import demjson
20
+ from akshare.utils.tqdm import get_tqdm
21
+
22
+
23
+ def _get_file_content_ths(file: str = "ths.js") -> str:
24
+ """
25
+ 获取 JS 文件的内容
26
+ :param file: JS 文件名
27
+ :type file: str
28
+ :return: 文件内容
29
+ :rtype: str
30
+ """
31
+ setting_file_path = get_ths_js(file)
32
+ with open(setting_file_path, encoding="utf-8") as f:
33
+ file_data = f.read()
34
+ return file_data
35
+
36
+
37
+ @lru_cache()
38
+ def _get_stock_board_concept_name_ths() -> dict:
39
+ """
40
+ 获取同花顺概念板块代码和名称字典
41
+ :return: 获取同花顺概念板块代码和名称字典
42
+ :rtype: dict
43
+ """
44
+ js_code = py_mini_racer.MiniRacer()
45
+ js_content = _get_file_content_ths("ths.js")
46
+ js_code.eval(js_content)
47
+ v_code = js_code.call("v")
48
+ headers = {
49
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
50
+ "Chrome/89.0.4389.90 Safari/537.36",
51
+ "Cookie": f"v={v_code}",
52
+ }
53
+ url = "https://q.10jqka.com.cn/gn/detail/code/307822/"
54
+ r = requests.get(url, headers=headers)
55
+ soup = BeautifulSoup(r.text, features="lxml")
56
+ code_list = [
57
+ item["href"].split("/")[-2]
58
+ for item in soup.find(name="div", attrs={"class": "cate_inner"}).find_all("a")
59
+ ]
60
+ name_list = [
61
+ item.text
62
+ for item in soup.find(name="div", attrs={"class": "cate_inner"}).find_all("a")
63
+ ]
64
+ name_code_map = dict(zip(name_list, code_list))
65
+ return name_code_map
66
+
67
+
68
+ def stock_board_concept_name_ths() -> pd.DataFrame:
69
+ """
70
+ 同花顺-板块-概念板块-概念
71
+ http://q.10jqka.com.cn/thshy/
72
+ :return: 所有概念板块的名称和链接
73
+ :rtype: pandas.DataFrame
74
+ """
75
+ code_name_ths_map = _get_stock_board_concept_name_ths()
76
+ temp_df = pd.DataFrame.from_dict(code_name_ths_map, orient="index")
77
+ temp_df.reset_index(inplace=True)
78
+ temp_df.columns = ["name", "code"]
79
+ temp_df = temp_df[
80
+ [
81
+ "name",
82
+ "code",
83
+ ]
84
+ ]
85
+ return temp_df
86
+
87
+
88
+ def stock_board_concept_info_ths(symbol: str = "阿里巴巴概念") -> pd.DataFrame:
89
+ """
90
+ 同花顺-板块-概念板块-板块简介
91
+ http://q.10jqka.com.cn/gn/detail/code/301558/
92
+ :param symbol: 板块简介
93
+ :type symbol: str
94
+ :return: 板块简介
95
+ :rtype: pandas.DataFrame
96
+ """
97
+ stock_board_ths_map_df = stock_board_concept_name_ths()
98
+ symbol_code = stock_board_ths_map_df[stock_board_ths_map_df["name"] == symbol][
99
+ "code"
100
+ ].values[0]
101
+ url = f"http://q.10jqka.com.cn/gn/detail/code/{symbol_code}/"
102
+ headers = {
103
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
104
+ "Chrome/89.0.4389.90 Safari/537.36",
105
+ }
106
+ r = requests.get(url, headers=headers)
107
+ soup = BeautifulSoup(r.text, features="lxml")
108
+ name_list = [
109
+ item.text.strip()
110
+ for item in soup.find(name="div", attrs={"class": "board-infos"}).find_all("dt")
111
+ ]
112
+ value_list = [
113
+ item.text.strip().replace("\n", "/")
114
+ for item in soup.find(name="div", attrs={"class": "board-infos"}).find_all("dd")
115
+ ]
116
+ temp_df = pd.DataFrame([name_list, value_list]).T
117
+ temp_df.columns = ["项目", "值"]
118
+ return temp_df
119
+
120
+
121
+ def stock_board_concept_index_ths(
122
+ symbol: str = "阿里巴巴概念",
123
+ start_date: str = "20200101",
124
+ end_date: str = "20250228",
125
+ ) -> pd.DataFrame:
126
+ """
127
+ 同花顺-板块-概念板块-指数数据
128
+ https://q.10jqka.com.cn/gn/detail/code/301558/
129
+ :param start_date: 开始时间
130
+ :type start_date: str
131
+ :param end_date: 结束时间
132
+ :type end_date: str
133
+ :param symbol: 指数数据
134
+ :type symbol: str
135
+ :return: 指数数据
136
+ :rtype: pandas.DataFrame
137
+ """
138
+ js_code = py_mini_racer.MiniRacer()
139
+ js_content = _get_file_content_ths("ths.js")
140
+ js_code.eval(js_content)
141
+ v_code = js_code.call("v")
142
+
143
+ code_map = _get_stock_board_concept_name_ths()
144
+ symbol_code = code_map[symbol]
145
+ headers = {
146
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
147
+ "Chrome/89.0.4389.90 Safari/537.36",
148
+ }
149
+ url = f"https://q.10jqka.com.cn/gn/detail/code/{symbol_code}"
150
+ r = requests.get(url=url, headers=headers)
151
+ soup = BeautifulSoup(r.text, features="lxml")
152
+ inner_code = soup.find(name="input", attrs={"id": "clid"})["value"]
153
+ big_df = pd.DataFrame()
154
+ current_year = datetime.now().year
155
+ begin_year = int(start_date[:4])
156
+ tqdm = get_tqdm()
157
+ for year in tqdm(range(begin_year, current_year + 1), leave=False):
158
+ url = f"https://d.10jqka.com.cn/v4/line/bk_{inner_code}/01/{year}.js"
159
+ headers = {
160
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
161
+ "Chrome/89.0.4389.90 Safari/537.36",
162
+ "Referer": "http://q.10jqka.com.cn",
163
+ "Host": "d.10jqka.com.cn",
164
+ "Cookie": f"v={v_code}",
165
+ }
166
+ r = requests.get(url, headers=headers)
167
+ data_text = r.text
168
+
169
+ try:
170
+ demjson.decode(data_text[data_text.find("{") : -1])
171
+ except: # noqa: E722
172
+ continue
173
+ temp_df = demjson.decode(data_text[data_text.find("{") : -1])
174
+ temp_df = pd.DataFrame(temp_df["data"].split(";"))
175
+ temp_df = temp_df.iloc[:, 0].str.split(",", expand=True)
176
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
177
+
178
+ if len(big_df.columns) == 11:
179
+ big_df.columns = [
180
+ "日期",
181
+ "开盘价",
182
+ "最高价",
183
+ "最低价",
184
+ "收盘价",
185
+ "成交量",
186
+ "成交额",
187
+ "_",
188
+ "_",
189
+ "_",
190
+ "_",
191
+ ]
192
+ else:
193
+ big_df.columns = [
194
+ "日期",
195
+ "开盘价",
196
+ "最高价",
197
+ "最低价",
198
+ "收盘价",
199
+ "成交量",
200
+ "成交额",
201
+ "_",
202
+ "_",
203
+ "_",
204
+ "_",
205
+ "_",
206
+ ]
207
+ big_df = big_df[
208
+ [
209
+ "日期",
210
+ "开盘价",
211
+ "最高价",
212
+ "最低价",
213
+ "收盘价",
214
+ "成交量",
215
+ "成交额",
216
+ ]
217
+ ]
218
+ big_df["日期"] = pd.to_datetime(big_df["日期"], errors="coerce").dt.date
219
+ big_df.index = pd.to_datetime(big_df["日期"], errors="coerce")
220
+ big_df = big_df[start_date:end_date]
221
+ big_df.reset_index(drop=True, inplace=True)
222
+ big_df["开盘价"] = pd.to_numeric(big_df["开盘价"], errors="coerce")
223
+ big_df["最高价"] = pd.to_numeric(big_df["最高价"], errors="coerce")
224
+ big_df["最低价"] = pd.to_numeric(big_df["最低价"], errors="coerce")
225
+ big_df["收盘价"] = pd.to_numeric(big_df["收盘价"], errors="coerce")
226
+ big_df["成交量"] = pd.to_numeric(big_df["成交量"], errors="coerce")
227
+ big_df["成交额"] = pd.to_numeric(big_df["成交额"], errors="coerce")
228
+ return big_df
229
+
230
+
231
+ def stock_board_concept_summary_ths() -> pd.DataFrame:
232
+ """
233
+ 同花顺-数据中心-概念板块-概念时间表
234
+ https://q.10jqka.com.cn/gn/
235
+ :return: 概念时间表
236
+ :rtype: pandas.DataFrame
237
+ """
238
+ js_code = py_mini_racer.MiniRacer()
239
+ js_content = _get_file_content_ths("ths.js")
240
+ js_code.eval(js_content)
241
+ v_code = js_code.call("v")
242
+ headers = {
243
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
244
+ "Chrome/89.0.4389.90 Safari/537.36",
245
+ "Cookie": f"v={v_code}",
246
+ }
247
+ url = "http://q.10jqka.com.cn/gn/index/field/addtime/order/desc/page/1/ajax/1/"
248
+ r = requests.get(url, headers=headers)
249
+ soup = BeautifulSoup(r.text, features="lxml")
250
+ page_num = soup.find(name="span", attrs={"class": "page_info"}).text.split("/")[1]
251
+ big_df = pd.DataFrame()
252
+ tqdm = get_tqdm()
253
+ for page in tqdm(range(1, int(page_num) + 1), leave=False):
254
+ url = f"http://q.10jqka.com.cn/gn/index/field/addtime/order/desc/page/{page}/ajax/1/"
255
+ r = requests.get(url, headers=headers)
256
+ try:
257
+ temp_df = pd.read_html(StringIO(r.text))[0]
258
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
259
+ except ValueError:
260
+ break
261
+ big_df["日期"] = pd.to_datetime(big_df["日期"], errors="coerce").dt.date
262
+ big_df["成分股数量"] = pd.to_numeric(big_df["成分股数量"], errors="coerce")
263
+ return big_df
264
+
265
+
266
+ if __name__ == "__main__":
267
+ stock_board_concept_name_ths_df = stock_board_concept_name_ths()
268
+ print(stock_board_concept_name_ths_df)
269
+
270
+ stock_board_concept_info_ths_df = stock_board_concept_info_ths(
271
+ symbol="阿里巴巴概念"
272
+ )
273
+ print(stock_board_concept_info_ths_df)
274
+
275
+ stock_board_concept_index_ths_df = stock_board_concept_index_ths(
276
+ symbol="阿里巴巴概念", start_date="20200101", end_date="20250228"
277
+ )
278
+ print(stock_board_concept_index_ths_df)
279
+
280
+ stock_board_concept_summary_ths_df = stock_board_concept_summary_ths()
281
+ print(stock_board_concept_summary_ths_df)
282
+
283
+ for stock in stock_board_concept_name_ths_df["name"]:
284
+ print(stock)
285
+ stock_board_industry_index_ths_df = stock_board_concept_index_ths(symbol=stock)
286
+ print(stock_board_industry_index_ths_df)
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/7/21 18:20
4
+ Date: 2025/2/28 13:20
5
5
  Desc: 同花顺-板块-同花顺行业
6
6
  https://q.10jqka.com.cn/thshy/
7
7
  """
@@ -29,7 +29,7 @@ def _get_file_content_ths(file: str = "ths.js") -> str:
29
29
  :rtype: str
30
30
  """
31
31
  setting_file_path = get_ths_js(file)
32
- with open(setting_file_path) as f:
32
+ with open(setting_file_path, encoding="utf-8") as f:
33
33
  file_data = f.read()
34
34
  return file_data
35
35
 
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2025/1/13 22:00
4
+ Date: 2025/2/28 13:00
5
5
  Desc: 东方财富网-数据中心-研究报告-个股研报
6
6
  https://data.eastmoney.com/report/stock.jshtml
7
7
  """
@@ -67,6 +67,9 @@ def stock_research_report_em(symbol: str = "000001") -> pd.DataFrame:
67
67
  predict_next_year_pe_title = f"{current_year + 1}-盈利预测-市盈率"
68
68
  predict_next_two_year_eps_title = f"{current_year + 2}-盈利预测-收益"
69
69
  predict_next_two_year_pe_title = f"{current_year + 2}-盈利预测-市盈率"
70
+ big_df["pdfUrl"] = big_df["infoCode"].apply(
71
+ lambda x: f"https://pdf.dfcfw.com/pdf/H3_{x}_1.pdf"
72
+ )
70
73
  big_df.rename(
71
74
  columns={
72
75
  "index": "序号",
@@ -121,6 +124,7 @@ def stock_research_report_em(symbol: str = "000001") -> pd.DataFrame:
121
124
  "authorID": "-",
122
125
  "count": "近一月个股研报数",
123
126
  "orgType": "-",
127
+ "pdfUrl": "报告PDF链接",
124
128
  },
125
129
  inplace=True,
126
130
  )
@@ -141,6 +145,7 @@ def stock_research_report_em(symbol: str = "000001") -> pd.DataFrame:
141
145
  predict_next_two_year_pe_title,
142
146
  "行业",
143
147
  "日期",
148
+ "报告PDF链接",
144
149
  ]
145
150
  ]
146
151
  big_df["日期"] = pd.to_datetime(big_df["日期"], errors="coerce").dt.date
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: akshare
3
- Version: 1.16.15
3
+ Version: 1.16.17
4
4
  Summary: AKShare is an elegant and simple financial data interface library for Python, built for human beings!
5
5
  Home-page: https://github.com/akfamily/akshare
6
6
  Author: AKFamily
@@ -50,7 +50,7 @@ Dynamic: requires-dist
50
50
  Dynamic: requires-python
51
51
  Dynamic: summary
52
52
 
53
- **欢迎加入专注于财经数据和量化投资的知识社区,请点击[了解更多](https://akshare.akfamily.xyz/learn.html)**
53
+ **欢迎加入专注于财经数据和量化投资的知识社区,获取《AKShare-财经数据宝典》,请点击[了解更多](https://akshare.akfamily.xyz/learn.html)**
54
54
 
55
55
  **量化投研视频课程:《PyBroker-入门及实战》已经上架!《PyBroker-进阶及实战》正在更新!**
56
56
 
@@ -300,6 +300,7 @@ akshare/stock_feature/stock_a_pe_and_pb.py
300
300
  akshare/stock_feature/stock_account_em.py
301
301
  akshare/stock_feature/stock_all_pb.py
302
302
  akshare/stock_feature/stock_analyst_em.py
303
+ akshare/stock_feature/stock_board_concept_ths.py
303
304
  akshare/stock_feature/stock_board_industry_ths.py
304
305
  akshare/stock_feature/stock_buffett_index_lg.py
305
306
  akshare/stock_feature/stock_classify_sina.py
File without changes
File without changes