akshare 1.14.39__tar.gz → 1.14.41__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.

Potentially problematic release.


This version of akshare might be problematic. Click here for more details.

Files changed (394) hide show
  1. {akshare-1.14.39 → akshare-1.14.41}/PKG-INFO +1 -1
  2. {akshare-1.14.39 → akshare-1.14.41}/akshare/__init__.py +8 -1
  3. {akshare-1.14.39 → akshare-1.14.41}/akshare/fund/fund_rank_em.py +89 -80
  4. {akshare-1.14.39 → akshare-1.14.41}/akshare/fund/fund_report_cninfo.py +23 -19
  5. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_cg_equity_mortgage.py +11 -10
  6. akshare-1.14.41/akshare/stock/stock_hk_famous.py +108 -0
  7. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_hold_control_cninfo.py +17 -15
  8. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_hold_num_cninfo.py +11 -10
  9. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_us_famous.py +15 -6
  10. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_board_industry_ths.py +1 -1
  11. {akshare-1.14.39 → akshare-1.14.41}/akshare.egg-info/PKG-INFO +1 -1
  12. {akshare-1.14.39 → akshare-1.14.41}/akshare.egg-info/SOURCES.txt +1 -0
  13. {akshare-1.14.39 → akshare-1.14.41}/LICENSE +0 -0
  14. {akshare-1.14.39 → akshare-1.14.41}/README.md +0 -0
  15. {akshare-1.14.39 → akshare-1.14.41}/akshare/air/__init__.py +0 -0
  16. {akshare-1.14.39 → akshare-1.14.41}/akshare/air/air_hebei.py +0 -0
  17. {akshare-1.14.39 → akshare-1.14.41}/akshare/air/air_zhenqi.py +0 -0
  18. {akshare-1.14.39 → akshare-1.14.41}/akshare/air/cons.py +0 -0
  19. {akshare-1.14.39 → akshare-1.14.41}/akshare/air/crypto.js +0 -0
  20. {akshare-1.14.39 → akshare-1.14.41}/akshare/air/outcrypto.js +0 -0
  21. {akshare-1.14.39 → akshare-1.14.41}/akshare/air/sunrise_tad.py +0 -0
  22. {akshare-1.14.39 → akshare-1.14.41}/akshare/article/__init__.py +0 -0
  23. {akshare-1.14.39 → akshare-1.14.41}/akshare/article/cons.py +0 -0
  24. {akshare-1.14.39 → akshare-1.14.41}/akshare/article/epu_index.py +0 -0
  25. {akshare-1.14.39 → akshare-1.14.41}/akshare/article/ff_factor.py +0 -0
  26. {akshare-1.14.39 → akshare-1.14.41}/akshare/article/fred_md.py +0 -0
  27. {akshare-1.14.39 → akshare-1.14.41}/akshare/article/risk_rv.py +0 -0
  28. {akshare-1.14.39 → akshare-1.14.41}/akshare/bank/__init__.py +0 -0
  29. {akshare-1.14.39 → akshare-1.14.41}/akshare/bank/bank_cbirc_2020.py +0 -0
  30. {akshare-1.14.39 → akshare-1.14.41}/akshare/bank/cons.py +0 -0
  31. {akshare-1.14.39 → akshare-1.14.41}/akshare/bond/__init__.py +0 -0
  32. {akshare-1.14.39 → akshare-1.14.41}/akshare/bond/bond_cb_sina.py +0 -0
  33. {akshare-1.14.39 → akshare-1.14.41}/akshare/bond/bond_cb_ths.py +0 -0
  34. {akshare-1.14.39 → akshare-1.14.41}/akshare/bond/bond_cbond.py +0 -0
  35. {akshare-1.14.39 → akshare-1.14.41}/akshare/bond/bond_china.py +0 -0
  36. {akshare-1.14.39 → akshare-1.14.41}/akshare/bond/bond_china_money.py +0 -0
  37. {akshare-1.14.39 → akshare-1.14.41}/akshare/bond/bond_convert.py +0 -0
  38. {akshare-1.14.39 → akshare-1.14.41}/akshare/bond/bond_em.py +0 -0
  39. {akshare-1.14.39 → akshare-1.14.41}/akshare/bond/bond_futures.py +0 -0
  40. {akshare-1.14.39 → akshare-1.14.41}/akshare/bond/bond_info_cm.py +0 -0
  41. {akshare-1.14.39 → akshare-1.14.41}/akshare/bond/bond_investing.py +0 -0
  42. {akshare-1.14.39 → akshare-1.14.41}/akshare/bond/bond_issue_cninfo.py +0 -0
  43. {akshare-1.14.39 → akshare-1.14.41}/akshare/bond/bond_nafmii.py +0 -0
  44. {akshare-1.14.39 → akshare-1.14.41}/akshare/bond/bond_summary.py +0 -0
  45. {akshare-1.14.39 → akshare-1.14.41}/akshare/bond/bond_zh_cov.py +0 -0
  46. {akshare-1.14.39 → akshare-1.14.41}/akshare/bond/bond_zh_sina.py +0 -0
  47. {akshare-1.14.39 → akshare-1.14.41}/akshare/bond/cons.py +0 -0
  48. {akshare-1.14.39 → akshare-1.14.41}/akshare/cost/__init__.py +0 -0
  49. {akshare-1.14.39 → akshare-1.14.41}/akshare/cost/cost_living.py +0 -0
  50. {akshare-1.14.39 → akshare-1.14.41}/akshare/crypto/__init__.py +0 -0
  51. {akshare-1.14.39 → akshare-1.14.41}/akshare/crypto/crypto_bitcoin_cme.py +0 -0
  52. {akshare-1.14.39 → akshare-1.14.41}/akshare/crypto/crypto_hist_investing.py +0 -0
  53. {akshare-1.14.39 → akshare-1.14.41}/akshare/crypto/crypto_hold.py +0 -0
  54. {akshare-1.14.39 → akshare-1.14.41}/akshare/currency/__init__.py +0 -0
  55. {akshare-1.14.39 → akshare-1.14.41}/akshare/currency/currency.py +0 -0
  56. {akshare-1.14.39 → akshare-1.14.41}/akshare/currency/currency_china_bank_sina.py +0 -0
  57. {akshare-1.14.39 → akshare-1.14.41}/akshare/currency/currency_safe.py +0 -0
  58. {akshare-1.14.39 → akshare-1.14.41}/akshare/data/__init__.py +0 -0
  59. {akshare-1.14.39 → akshare-1.14.41}/akshare/data/cninfo.js +0 -0
  60. {akshare-1.14.39 → akshare-1.14.41}/akshare/data/crypto_info.zip +0 -0
  61. {akshare-1.14.39 → akshare-1.14.41}/akshare/data/ths.js +0 -0
  62. {akshare-1.14.39 → akshare-1.14.41}/akshare/datasets.py +0 -0
  63. {akshare-1.14.39 → akshare-1.14.41}/akshare/economic/__init__.py +0 -0
  64. {akshare-1.14.39 → akshare-1.14.41}/akshare/economic/cons.py +0 -0
  65. {akshare-1.14.39 → akshare-1.14.41}/akshare/economic/macro_australia.py +0 -0
  66. {akshare-1.14.39 → akshare-1.14.41}/akshare/economic/macro_bank.py +0 -0
  67. {akshare-1.14.39 → akshare-1.14.41}/akshare/economic/macro_canada.py +0 -0
  68. {akshare-1.14.39 → akshare-1.14.41}/akshare/economic/macro_china.py +0 -0
  69. {akshare-1.14.39 → akshare-1.14.41}/akshare/economic/macro_china_hk.py +0 -0
  70. {akshare-1.14.39 → akshare-1.14.41}/akshare/economic/macro_china_nbs.py +0 -0
  71. {akshare-1.14.39 → akshare-1.14.41}/akshare/economic/macro_constitute.py +0 -0
  72. {akshare-1.14.39 → akshare-1.14.41}/akshare/economic/macro_euro.py +0 -0
  73. {akshare-1.14.39 → akshare-1.14.41}/akshare/economic/macro_finance_ths.py +0 -0
  74. {akshare-1.14.39 → akshare-1.14.41}/akshare/economic/macro_germany.py +0 -0
  75. {akshare-1.14.39 → akshare-1.14.41}/akshare/economic/macro_info_ws.py +0 -0
  76. {akshare-1.14.39 → akshare-1.14.41}/akshare/economic/macro_japan.py +0 -0
  77. {akshare-1.14.39 → akshare-1.14.41}/akshare/economic/macro_other.py +0 -0
  78. {akshare-1.14.39 → akshare-1.14.41}/akshare/economic/macro_swiss.py +0 -0
  79. {akshare-1.14.39 → akshare-1.14.41}/akshare/economic/macro_uk.py +0 -0
  80. {akshare-1.14.39 → akshare-1.14.41}/akshare/economic/macro_usa.py +0 -0
  81. {akshare-1.14.39 → akshare-1.14.41}/akshare/economic/marco_cnbs.py +0 -0
  82. {akshare-1.14.39 → akshare-1.14.41}/akshare/energy/__init__.py +0 -0
  83. {akshare-1.14.39 → akshare-1.14.41}/akshare/energy/energy_carbon.py +0 -0
  84. {akshare-1.14.39 → akshare-1.14.41}/akshare/energy/energy_oil_em.py +0 -0
  85. {akshare-1.14.39 → akshare-1.14.41}/akshare/event/__init__.py +0 -0
  86. {akshare-1.14.39 → akshare-1.14.41}/akshare/event/cons.py +0 -0
  87. {akshare-1.14.39 → akshare-1.14.41}/akshare/event/migration.py +0 -0
  88. {akshare-1.14.39 → akshare-1.14.41}/akshare/file_fold/__init__.py +0 -0
  89. {akshare-1.14.39 → akshare-1.14.41}/akshare/file_fold/calendar.json +0 -0
  90. {akshare-1.14.39 → akshare-1.14.41}/akshare/fortune/__init__.py +0 -0
  91. {akshare-1.14.39 → akshare-1.14.41}/akshare/fortune/fortune_500.py +0 -0
  92. {akshare-1.14.39 → akshare-1.14.41}/akshare/fortune/fortune_bloomberg.py +0 -0
  93. {akshare-1.14.39 → akshare-1.14.41}/akshare/fortune/fortune_forbes_500.py +0 -0
  94. {akshare-1.14.39 → akshare-1.14.41}/akshare/fortune/fortune_hurun.py +0 -0
  95. {akshare-1.14.39 → akshare-1.14.41}/akshare/fortune/fortune_it_juzi.py +0 -0
  96. {akshare-1.14.39 → akshare-1.14.41}/akshare/fortune/fortune_xincaifu_500.py +0 -0
  97. {akshare-1.14.39 → akshare-1.14.41}/akshare/fund/__init__.py +0 -0
  98. {akshare-1.14.39 → akshare-1.14.41}/akshare/fund/fund_amac.py +0 -0
  99. {akshare-1.14.39 → akshare-1.14.41}/akshare/fund/fund_announcement.py +0 -0
  100. {akshare-1.14.39 → akshare-1.14.41}/akshare/fund/fund_aum_em.py +0 -0
  101. {akshare-1.14.39 → akshare-1.14.41}/akshare/fund/fund_em.py +0 -0
  102. {akshare-1.14.39 → akshare-1.14.41}/akshare/fund/fund_etf_em.py +0 -0
  103. {akshare-1.14.39 → akshare-1.14.41}/akshare/fund/fund_etf_sina.py +0 -0
  104. {akshare-1.14.39 → akshare-1.14.41}/akshare/fund/fund_etf_ths.py +0 -0
  105. {akshare-1.14.39 → akshare-1.14.41}/akshare/fund/fund_fhsp_em.py +0 -0
  106. {akshare-1.14.39 → akshare-1.14.41}/akshare/fund/fund_init_em.py +0 -0
  107. {akshare-1.14.39 → akshare-1.14.41}/akshare/fund/fund_lof_em.py +0 -0
  108. {akshare-1.14.39 → akshare-1.14.41}/akshare/fund/fund_manager.py +0 -0
  109. {akshare-1.14.39 → akshare-1.14.41}/akshare/fund/fund_portfolio_em.py +0 -0
  110. {akshare-1.14.39 → akshare-1.14.41}/akshare/fund/fund_position_lg.py +0 -0
  111. {akshare-1.14.39 → akshare-1.14.41}/akshare/fund/fund_rating.py +0 -0
  112. {akshare-1.14.39 → akshare-1.14.41}/akshare/fund/fund_scale_em.py +0 -0
  113. {akshare-1.14.39 → akshare-1.14.41}/akshare/fund/fund_scale_sina.py +0 -0
  114. {akshare-1.14.39 → akshare-1.14.41}/akshare/fund/fund_xq.py +0 -0
  115. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures/__init__.py +0 -0
  116. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures/cons.py +0 -0
  117. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures/cot.py +0 -0
  118. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures/futures_basis.py +0 -0
  119. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures/futures_comex_em.py +0 -0
  120. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures/futures_comm_ctp.py +0 -0
  121. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures/futures_comm_qihuo.py +0 -0
  122. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures/futures_contract_detail.py +0 -0
  123. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures/futures_daily_bar.py +0 -0
  124. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures/futures_foreign.py +0 -0
  125. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures/futures_hf_em.py +0 -0
  126. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures/futures_hq_sina.py +0 -0
  127. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures/futures_index_ccidx.py +0 -0
  128. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures/futures_international.py +0 -0
  129. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures/futures_inventory_99.py +0 -0
  130. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures/futures_inventory_em.py +0 -0
  131. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures/futures_news_baidu.py +0 -0
  132. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures/futures_news_shmet.py +0 -0
  133. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures/futures_roll_yield.py +0 -0
  134. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures/futures_rule.py +0 -0
  135. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures/futures_settlement_price_sgx.py +0 -0
  136. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures/futures_spot_stock_em.py +0 -0
  137. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures/futures_stock_js.py +0 -0
  138. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures/futures_to_spot.py +0 -0
  139. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures/futures_warehouse_receipt.py +0 -0
  140. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures/futures_zh_sina.py +0 -0
  141. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures/inventory_data.py +0 -0
  142. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures/receipt.py +0 -0
  143. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures/requests_fun.py +0 -0
  144. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures/symbol_var.py +0 -0
  145. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures_derivative/__init__.py +0 -0
  146. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures_derivative/cons.py +0 -0
  147. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures_derivative/futures_contract_info_cffex.py +0 -0
  148. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures_derivative/futures_contract_info_czce.py +0 -0
  149. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures_derivative/futures_contract_info_dce.py +0 -0
  150. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures_derivative/futures_contract_info_gfex.py +0 -0
  151. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures_derivative/futures_contract_info_ine.py +0 -0
  152. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures_derivative/futures_contract_info_shfe.py +0 -0
  153. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures_derivative/futures_cot_sina.py +0 -0
  154. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures_derivative/futures_hog.py +0 -0
  155. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures_derivative/futures_index_price_nh.py +0 -0
  156. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures_derivative/futures_index_return_nh.py +0 -0
  157. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures_derivative/futures_index_sina.py +0 -0
  158. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures_derivative/futures_index_volatility_nh.py +0 -0
  159. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures_derivative/futures_other_index_nh.py +0 -0
  160. {akshare-1.14.39 → akshare-1.14.41}/akshare/futures_derivative/futures_spot_sys.py +0 -0
  161. {akshare-1.14.39 → akshare-1.14.41}/akshare/fx/__init__.py +0 -0
  162. {akshare-1.14.39 → akshare-1.14.41}/akshare/fx/cons.py +0 -0
  163. {akshare-1.14.39 → akshare-1.14.41}/akshare/fx/currency_investing.py +0 -0
  164. {akshare-1.14.39 → akshare-1.14.41}/akshare/fx/fx_quote.py +0 -0
  165. {akshare-1.14.39 → akshare-1.14.41}/akshare/fx/fx_quote_baidu.py +0 -0
  166. {akshare-1.14.39 → akshare-1.14.41}/akshare/hf/__init__.py +0 -0
  167. {akshare-1.14.39 → akshare-1.14.41}/akshare/hf/hf_sp500.py +0 -0
  168. {akshare-1.14.39 → akshare-1.14.41}/akshare/index/__init__.py +0 -0
  169. {akshare-1.14.39 → akshare-1.14.41}/akshare/index/cons.py +0 -0
  170. {akshare-1.14.39 → akshare-1.14.41}/akshare/index/index_cflp.py +0 -0
  171. {akshare-1.14.39 → akshare-1.14.41}/akshare/index/index_cni.py +0 -0
  172. {akshare-1.14.39 → akshare-1.14.41}/akshare/index/index_cons.py +0 -0
  173. {akshare-1.14.39 → akshare-1.14.41}/akshare/index/index_cx.py +0 -0
  174. {akshare-1.14.39 → akshare-1.14.41}/akshare/index/index_drewry.py +0 -0
  175. {akshare-1.14.39 → akshare-1.14.41}/akshare/index/index_eri.py +0 -0
  176. {akshare-1.14.39 → akshare-1.14.41}/akshare/index/index_fear_greed_funddb.py +0 -0
  177. {akshare-1.14.39 → akshare-1.14.41}/akshare/index/index_hog.py +0 -0
  178. {akshare-1.14.39 → akshare-1.14.41}/akshare/index/index_investing.py +0 -0
  179. {akshare-1.14.39 → akshare-1.14.41}/akshare/index/index_kq_fz.py +0 -0
  180. {akshare-1.14.39 → akshare-1.14.41}/akshare/index/index_kq_ss.py +0 -0
  181. {akshare-1.14.39 → akshare-1.14.41}/akshare/index/index_option_qvix.py +0 -0
  182. {akshare-1.14.39 → akshare-1.14.41}/akshare/index/index_research_fund_sw.py +0 -0
  183. {akshare-1.14.39 → akshare-1.14.41}/akshare/index/index_research_sw.py +0 -0
  184. {akshare-1.14.39 → akshare-1.14.41}/akshare/index/index_spot.py +0 -0
  185. {akshare-1.14.39 → akshare-1.14.41}/akshare/index/index_stock_hk.py +0 -0
  186. {akshare-1.14.39 → akshare-1.14.41}/akshare/index/index_stock_us_sina.py +0 -0
  187. {akshare-1.14.39 → akshare-1.14.41}/akshare/index/index_stock_zh.py +0 -0
  188. {akshare-1.14.39 → akshare-1.14.41}/akshare/index/index_stock_zh_csindex.py +0 -0
  189. {akshare-1.14.39 → akshare-1.14.41}/akshare/index/index_sugar.py +0 -0
  190. {akshare-1.14.39 → akshare-1.14.41}/akshare/index/index_sw.py +0 -0
  191. {akshare-1.14.39 → akshare-1.14.41}/akshare/index/index_yw.py +0 -0
  192. {akshare-1.14.39 → akshare-1.14.41}/akshare/index/index_zh_a_scope.py +0 -0
  193. {akshare-1.14.39 → akshare-1.14.41}/akshare/index/index_zh_em.py +0 -0
  194. {akshare-1.14.39 → akshare-1.14.41}/akshare/interest_rate/__init__.py +0 -0
  195. {akshare-1.14.39 → akshare-1.14.41}/akshare/interest_rate/interbank_rate_em.py +0 -0
  196. {akshare-1.14.39 → akshare-1.14.41}/akshare/movie/__init__.py +0 -0
  197. {akshare-1.14.39 → akshare-1.14.41}/akshare/movie/artist_yien.py +0 -0
  198. {akshare-1.14.39 → akshare-1.14.41}/akshare/movie/jm.js +0 -0
  199. {akshare-1.14.39 → akshare-1.14.41}/akshare/movie/movie_yien.py +0 -0
  200. {akshare-1.14.39 → akshare-1.14.41}/akshare/movie/video_yien.py +0 -0
  201. {akshare-1.14.39 → akshare-1.14.41}/akshare/news/__init__.py +0 -0
  202. {akshare-1.14.39 → akshare-1.14.41}/akshare/news/news_baidu.py +0 -0
  203. {akshare-1.14.39 → akshare-1.14.41}/akshare/news/news_cctv.py +0 -0
  204. {akshare-1.14.39 → akshare-1.14.41}/akshare/news/news_stock.py +0 -0
  205. {akshare-1.14.39 → akshare-1.14.41}/akshare/nlp/__init__.py +0 -0
  206. {akshare-1.14.39 → akshare-1.14.41}/akshare/nlp/nlp_interface.py +0 -0
  207. {akshare-1.14.39 → akshare-1.14.41}/akshare/option/__init__.py +0 -0
  208. {akshare-1.14.39 → akshare-1.14.41}/akshare/option/cons.py +0 -0
  209. {akshare-1.14.39 → akshare-1.14.41}/akshare/option/option_comm_qihuo.py +0 -0
  210. {akshare-1.14.39 → akshare-1.14.41}/akshare/option/option_commodity.py +0 -0
  211. {akshare-1.14.39 → akshare-1.14.41}/akshare/option/option_commodity_sina.py +0 -0
  212. {akshare-1.14.39 → akshare-1.14.41}/akshare/option/option_czce.py +0 -0
  213. {akshare-1.14.39 → akshare-1.14.41}/akshare/option/option_daily_stats_sse_szse.py +0 -0
  214. {akshare-1.14.39 → akshare-1.14.41}/akshare/option/option_em.py +0 -0
  215. {akshare-1.14.39 → akshare-1.14.41}/akshare/option/option_finance.py +0 -0
  216. {akshare-1.14.39 → akshare-1.14.41}/akshare/option/option_finance_sina.py +0 -0
  217. {akshare-1.14.39 → akshare-1.14.41}/akshare/option/option_lhb_em.py +0 -0
  218. {akshare-1.14.39 → akshare-1.14.41}/akshare/option/option_premium_analysis_em.py +0 -0
  219. {akshare-1.14.39 → akshare-1.14.41}/akshare/option/option_risk_analysis_em.py +0 -0
  220. {akshare-1.14.39 → akshare-1.14.41}/akshare/option/option_risk_indicator_sse.py +0 -0
  221. {akshare-1.14.39 → akshare-1.14.41}/akshare/option/option_value_analysis_em.py +0 -0
  222. {akshare-1.14.39 → akshare-1.14.41}/akshare/other/__init__.py +0 -0
  223. {akshare-1.14.39 → akshare-1.14.41}/akshare/other/other_car_cpca.py +0 -0
  224. {akshare-1.14.39 → akshare-1.14.41}/akshare/other/other_car_gasgoo.py +0 -0
  225. {akshare-1.14.39 → akshare-1.14.41}/akshare/pro/__init__.py +0 -0
  226. {akshare-1.14.39 → akshare-1.14.41}/akshare/pro/client.py +0 -0
  227. {akshare-1.14.39 → akshare-1.14.41}/akshare/pro/cons.py +0 -0
  228. {akshare-1.14.39 → akshare-1.14.41}/akshare/pro/data_pro.py +0 -0
  229. {akshare-1.14.39 → akshare-1.14.41}/akshare/qhkc/__init__.py +0 -0
  230. {akshare-1.14.39 → akshare-1.14.41}/akshare/qhkc/qhkc_api.py +0 -0
  231. {akshare-1.14.39 → akshare-1.14.41}/akshare/qhkc_web/__init__.py +0 -0
  232. {akshare-1.14.39 → akshare-1.14.41}/akshare/qhkc_web/qhkc_fund.py +0 -0
  233. {akshare-1.14.39 → akshare-1.14.41}/akshare/qhkc_web/qhkc_index.py +0 -0
  234. {akshare-1.14.39 → akshare-1.14.41}/akshare/qhkc_web/qhkc_tool.py +0 -0
  235. {akshare-1.14.39 → akshare-1.14.41}/akshare/rate/__init__.py +0 -0
  236. {akshare-1.14.39 → akshare-1.14.41}/akshare/rate/repo_rate.py +0 -0
  237. {akshare-1.14.39 → akshare-1.14.41}/akshare/reits/__init__.py +0 -0
  238. {akshare-1.14.39 → akshare-1.14.41}/akshare/reits/reits_basic.py +0 -0
  239. {akshare-1.14.39 → akshare-1.14.41}/akshare/sport/__init__.py +0 -0
  240. {akshare-1.14.39 → akshare-1.14.41}/akshare/sport/sport_olympic.py +0 -0
  241. {akshare-1.14.39 → akshare-1.14.41}/akshare/sport/sport_olympic_winter.py +0 -0
  242. {akshare-1.14.39 → akshare-1.14.41}/akshare/spot/__init__.py +0 -0
  243. {akshare-1.14.39 → akshare-1.14.41}/akshare/spot/spot_price_qh.py +0 -0
  244. {akshare-1.14.39 → akshare-1.14.41}/akshare/spot/spot_sge.py +0 -0
  245. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/__init__.py +0 -0
  246. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/cons.py +0 -0
  247. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_allotment_cninfo.py +0 -0
  248. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_ask_bid_em.py +0 -0
  249. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_board_concept_em.py +0 -0
  250. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_board_industry_em.py +0 -0
  251. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_cg_guarantee.py +0 -0
  252. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_cg_lawsuit.py +0 -0
  253. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_dividend_cninfo.py +0 -0
  254. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_dzjy_em.py +0 -0
  255. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_fund_em.py +0 -0
  256. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_fund_hold.py +0 -0
  257. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_gsrl_em.py +0 -0
  258. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_hk_fhpx_ths.py +0 -0
  259. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_hk_hot_rank_em.py +0 -0
  260. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_hk_sina.py +0 -0
  261. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_hold_control_em.py +0 -0
  262. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_hot_rank_em.py +0 -0
  263. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_hot_search_baidu.py +0 -0
  264. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_hot_up_em.py +0 -0
  265. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_industry.py +0 -0
  266. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_industry_cninfo.py +0 -0
  267. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_industry_pe_cninfo.py +0 -0
  268. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_industry_sw.py +0 -0
  269. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_info.py +0 -0
  270. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_info_em.py +0 -0
  271. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_intraday_em.py +0 -0
  272. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_intraday_sina.py +0 -0
  273. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_ipo_summary_cninfo.py +0 -0
  274. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_new_cninfo.py +0 -0
  275. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_profile_cninfo.py +0 -0
  276. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_rank_forecast.py +0 -0
  277. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_repurchase_em.py +0 -0
  278. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_share_changes_cninfo.py +0 -0
  279. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_share_hold.py +0 -0
  280. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_stop.py +0 -0
  281. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_summary.py +0 -0
  282. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_us_js.py +0 -0
  283. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_us_pink.py +0 -0
  284. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_us_sina.py +0 -0
  285. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_weibo_nlp.py +0 -0
  286. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_xq.py +0 -0
  287. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_zh_a_sina.py +0 -0
  288. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_zh_a_special.py +0 -0
  289. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_zh_a_tick_tx.py +0 -0
  290. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_zh_ah_tx.py +0 -0
  291. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_zh_b_sina.py +0 -0
  292. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_zh_kcb_report.py +0 -0
  293. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock/stock_zh_kcb_sina.py +0 -0
  294. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/__init__.py +0 -0
  295. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/cons.py +0 -0
  296. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_a_below_net_asset_statistics.py +0 -0
  297. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_a_high_low.py +0 -0
  298. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_a_indicator.py +0 -0
  299. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_a_pe_and_pb.py +0 -0
  300. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_account_em.py +0 -0
  301. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_all_pb.py +0 -0
  302. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_analyst_em.py +0 -0
  303. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_buffett_index_lg.py +0 -0
  304. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_classify_sina.py +0 -0
  305. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_comment_em.py +0 -0
  306. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_concept_futu.py +0 -0
  307. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_congestion_lg.py +0 -0
  308. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_cyq_em.py +0 -0
  309. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_disclosure_cninfo.py +0 -0
  310. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_dxsyl_em.py +0 -0
  311. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_ebs_lg.py +0 -0
  312. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_esg_sina.py +0 -0
  313. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_fhps_em.py +0 -0
  314. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_fhps_ths.py +0 -0
  315. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_fund_flow.py +0 -0
  316. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_gddh_em.py +0 -0
  317. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_gdfx_em.py +0 -0
  318. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_gdhs.py +0 -0
  319. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_gdzjc_em.py +0 -0
  320. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_gpzy_em.py +0 -0
  321. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_gxl_lg.py +0 -0
  322. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_hist_em.py +0 -0
  323. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_hist_tx.py +0 -0
  324. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_hk_valuation_baidu.py +0 -0
  325. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_hot_xq.py +0 -0
  326. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_hsgt_em.py +0 -0
  327. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_hsgt_exchange_rate.py +0 -0
  328. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_hsgt_min_em.py +0 -0
  329. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_info.py +0 -0
  330. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_inner_trade_xq.py +0 -0
  331. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_irm_cninfo.py +0 -0
  332. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_jgdy_em.py +0 -0
  333. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_lh_yybpm.py +0 -0
  334. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_lhb_em.py +0 -0
  335. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_lhb_sina.py +0 -0
  336. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_margin_em.py +0 -0
  337. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_margin_sse.py +0 -0
  338. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_margin_szse.py +0 -0
  339. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_market_legu.py +0 -0
  340. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_pankou_em.py +0 -0
  341. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_qsjy_em.py +0 -0
  342. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_report_em.py +0 -0
  343. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_research_report_em.py +0 -0
  344. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_sns_sseinfo.py +0 -0
  345. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_sy_em.py +0 -0
  346. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_technology_ths.py +0 -0
  347. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_tfp_em.py +0 -0
  348. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_three_report_em.py +0 -0
  349. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_ttm_lyr.py +0 -0
  350. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_wencai.py +0 -0
  351. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_yjbb_em.py +0 -0
  352. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_yjyg_cninfo.py +0 -0
  353. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_yjyg_em.py +0 -0
  354. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_yzxdr_em.py +0 -0
  355. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_zdhtmx_em.py +0 -0
  356. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_zf_pg.py +0 -0
  357. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_zh_valuation_baidu.py +0 -0
  358. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_zh_vote_baidu.py +0 -0
  359. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/stock_ztb_em.py +0 -0
  360. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_feature/ths.js +0 -0
  361. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_fundamental/__init__.py +0 -0
  362. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_fundamental/stock_finance.py +0 -0
  363. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_fundamental/stock_finance_hk.py +0 -0
  364. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_fundamental/stock_finance_ths.py +0 -0
  365. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_fundamental/stock_hold.py +0 -0
  366. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_fundamental/stock_ipo_declare.py +0 -0
  367. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_fundamental/stock_kcb_detail_sse.py +0 -0
  368. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_fundamental/stock_kcb_sse.py +0 -0
  369. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_fundamental/stock_mda_ym.py +0 -0
  370. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_fundamental/stock_notice.py +0 -0
  371. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_fundamental/stock_profit_forecast_em.py +0 -0
  372. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_fundamental/stock_profit_forecast_hk_etnet.py +0 -0
  373. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_fundamental/stock_profit_forecast_ths.py +0 -0
  374. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_fundamental/stock_recommend.py +0 -0
  375. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_fundamental/stock_register_em.py +0 -0
  376. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_fundamental/stock_restricted_em.py +0 -0
  377. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_fundamental/stock_zygc.py +0 -0
  378. {akshare-1.14.39 → akshare-1.14.41}/akshare/stock_fundamental/stock_zyjs_ths.py +0 -0
  379. {akshare-1.14.39 → akshare-1.14.41}/akshare/tool/__init__.py +0 -0
  380. {akshare-1.14.39 → akshare-1.14.41}/akshare/tool/trade_date_hist.py +0 -0
  381. {akshare-1.14.39 → akshare-1.14.41}/akshare/utils/__init__.py +0 -0
  382. {akshare-1.14.39 → akshare-1.14.41}/akshare/utils/cons.py +0 -0
  383. {akshare-1.14.39 → akshare-1.14.41}/akshare/utils/demjson.py +0 -0
  384. {akshare-1.14.39 → akshare-1.14.41}/akshare/utils/func.py +0 -0
  385. {akshare-1.14.39 → akshare-1.14.41}/akshare/utils/token_process.py +0 -0
  386. {akshare-1.14.39 → akshare-1.14.41}/akshare/utils/tqdm.py +0 -0
  387. {akshare-1.14.39 → akshare-1.14.41}/akshare.egg-info/dependency_links.txt +0 -0
  388. {akshare-1.14.39 → akshare-1.14.41}/akshare.egg-info/requires.txt +0 -0
  389. {akshare-1.14.39 → akshare-1.14.41}/akshare.egg-info/top_level.txt +0 -0
  390. {akshare-1.14.39 → akshare-1.14.41}/pyproject.toml +0 -0
  391. {akshare-1.14.39 → akshare-1.14.41}/setup.cfg +0 -0
  392. {akshare-1.14.39 → akshare-1.14.41}/setup.py +0 -0
  393. {akshare-1.14.39 → akshare-1.14.41}/tests/__init__.py +0 -0
  394. {akshare-1.14.39 → akshare-1.14.41}/tests/test_func.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: akshare
3
- Version: 1.14.39
3
+ Version: 1.14.41
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
@@ -2850,9 +2850,11 @@ amac_manager_cancelled_info # 中国证券投资基金业协会-信息公示-诚
2850
2850
  1.14.37 fix: fix stock_zh_kcb_report_em interface
2851
2851
  1.14.38 fix: fix stock_industry_clf_hist_sw interface
2852
2852
  1.14.39 fix: fix stock_zh_b_daily interface
2853
+ 1.14.40 fix: fix fund_open_fund_rank_em interface
2854
+ 1.14.41 fix: fix fund_report_asset_allocation_cninfo interface
2853
2855
  """
2854
2856
 
2855
- __version__ = "1.14.39"
2857
+ __version__ = "1.14.41"
2856
2858
  __author__ = "AKFamily"
2857
2859
 
2858
2860
  import sys
@@ -2874,6 +2876,11 @@ if sys.version_info < (3, 9):
2874
2876
 
2875
2877
  del sys
2876
2878
 
2879
+ """
2880
+ 知名港股
2881
+ """
2882
+ from akshare.stock.stock_hk_famous import stock_hk_famous_spot_em
2883
+
2877
2884
  """
2878
2885
  同花顺-数据中心-宏观数据-股票筹资
2879
2886
  """
@@ -1,12 +1,13 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/2/29 18:00
4
+ Date: 2024/7/24 13:00
5
5
  Desc: 东方财富网-数据中心-开放基金排行
6
6
  https://fund.eastmoney.com/data/fundranking.html
7
7
  名词解释
8
8
  https://help.1234567.com.cn/list_236.html
9
9
  """
10
+
10
11
  from datetime import datetime, date
11
12
 
12
13
  import pandas as pd
@@ -33,7 +34,7 @@ def fund_open_fund_rank_em(symbol: str = "全部") -> pd.DataFrame:
33
34
  """
34
35
  东方财富网-数据中心-开放基金排行
35
36
  https://fund.eastmoney.com/data/fundranking.html
36
- :param symbol: choice of {"全部", "股票型", "混合型", "债券型", "指数型", "QDII", "LOF", "FOF"}
37
+ :param symbol: choice of {"全部", "股票型", "混合型", "债券型", "指数型", "QDII", "FOF"}
37
38
  :type symbol: str
38
39
  :return: 开放基金排行
39
40
  :rtype: pandas.DataFrame
@@ -69,12 +70,13 @@ def fund_open_fund_rank_em(symbol: str = "全部") -> pd.DataFrame:
69
70
  "v": "0.1591891419018292",
70
71
  }
71
72
  headers = {
72
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36",
73
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
74
+ "Chrome/81.0.4044.138 Safari/537.36",
73
75
  "Referer": "https://fund.eastmoney.com/fundguzhi.html",
74
76
  }
75
77
  r = requests.get(url, params=params, headers=headers)
76
78
  data_text = r.text
77
- data_json = demjson.decode(data_text[data_text.find("{"): -1])
79
+ data_json = demjson.decode(data_text[data_text.find("{") : -1])
78
80
  temp_df = pd.DataFrame(data_json["datas"])
79
81
  temp_df = temp_df.iloc[:, 0].str.split(",", expand=True)
80
82
  temp_df.reset_index(inplace=True)
@@ -129,20 +131,20 @@ def fund_open_fund_rank_em(symbol: str = "全部") -> pd.DataFrame:
129
131
  "手续费",
130
132
  ]
131
133
  ]
132
- temp_df['日期'] = pd.to_datetime(temp_df['日期'], errors="coerce").dt.date
133
- temp_df['单位净值'] = pd.to_numeric(temp_df['单位净值'], errors="coerce")
134
- temp_df['累计净值'] = pd.to_numeric(temp_df['累计净值'], errors="coerce")
135
- temp_df['日增长率'] = pd.to_numeric(temp_df['日增长率'], errors="coerce")
136
- temp_df['近1周'] = pd.to_numeric(temp_df['近1周'], errors="coerce")
137
- temp_df['近1月'] = pd.to_numeric(temp_df['近1月'], errors="coerce")
138
- temp_df['近3月'] = pd.to_numeric(temp_df['近3月'], errors="coerce")
139
- temp_df['近6月'] = pd.to_numeric(temp_df['近6月'], errors="coerce")
140
- temp_df['近1年'] = pd.to_numeric(temp_df['近1年'], errors="coerce")
141
- temp_df['近2年'] = pd.to_numeric(temp_df['近2年'], errors="coerce")
142
- temp_df['近3年'] = pd.to_numeric(temp_df['近3年'], errors="coerce")
143
- temp_df['今年来'] = pd.to_numeric(temp_df['今年来'], errors="coerce")
144
- temp_df['成立来'] = pd.to_numeric(temp_df['成立来'], errors="coerce")
145
- temp_df['自定义'] = pd.to_numeric(temp_df['自定义'], errors="coerce")
134
+ temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
135
+ temp_df["单位净值"] = pd.to_numeric(temp_df["单位净值"], errors="coerce")
136
+ temp_df["累计净值"] = pd.to_numeric(temp_df["累计净值"], errors="coerce")
137
+ temp_df["日增长率"] = pd.to_numeric(temp_df["日增长率"], errors="coerce")
138
+ temp_df["近1周"] = pd.to_numeric(temp_df["近1周"], errors="coerce")
139
+ temp_df["近1月"] = pd.to_numeric(temp_df["近1月"], errors="coerce")
140
+ temp_df["近3月"] = pd.to_numeric(temp_df["近3月"], errors="coerce")
141
+ temp_df["近6月"] = pd.to_numeric(temp_df["近6月"], errors="coerce")
142
+ temp_df["近1年"] = pd.to_numeric(temp_df["近1年"], errors="coerce")
143
+ temp_df["近2年"] = pd.to_numeric(temp_df["近2年"], errors="coerce")
144
+ temp_df["近3年"] = pd.to_numeric(temp_df["近3年"], errors="coerce")
145
+ temp_df["今年来"] = pd.to_numeric(temp_df["今年来"], errors="coerce")
146
+ temp_df["成立来"] = pd.to_numeric(temp_df["成立来"], errors="coerce")
147
+ temp_df["自定义"] = pd.to_numeric(temp_df["自定义"], errors="coerce")
146
148
  return temp_df
147
149
 
148
150
 
@@ -167,12 +169,13 @@ def fund_exchange_rank_em() -> pd.DataFrame:
167
169
  "v": "0.1591891419018292",
168
170
  }
169
171
  headers = {
170
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36",
172
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
173
+ "Chrome/81.0.4044.138 Safari/537.36",
171
174
  "Referer": "https://fund.eastmoney.com/fundguzhi.html",
172
175
  }
173
176
  r = requests.get(url, params=params, headers=headers)
174
177
  text_data = r.text
175
- json_data = demjson.decode(text_data[text_data.find("{"): -1])
178
+ json_data = demjson.decode(text_data[text_data.find("{") : -1])
176
179
  temp_df = pd.DataFrame(json_data["datas"])
177
180
  temp_df = temp_df.iloc[:, 0].str.split(",", expand=True)
178
181
  temp_df.reset_index(inplace=True)
@@ -224,19 +227,19 @@ def fund_exchange_rank_em() -> pd.DataFrame:
224
227
  "成立日期",
225
228
  ]
226
229
  ]
227
- temp_df['日期'] = pd.to_datetime(temp_df['日期']).dt.date
228
- temp_df['成立日期'] = pd.to_datetime(temp_df['成立日期']).dt.date
229
- temp_df['单位净值'] = pd.to_numeric(temp_df['单位净值'], errors="coerce")
230
- temp_df['累计净值'] = pd.to_numeric(temp_df['累计净值'], errors="coerce")
231
- temp_df['近1周'] = pd.to_numeric(temp_df['近1周'], errors="coerce")
232
- temp_df['近1月'] = pd.to_numeric(temp_df['近1月'], errors="coerce")
233
- temp_df['近3月'] = pd.to_numeric(temp_df['近3月'], errors="coerce")
234
- temp_df['近6月'] = pd.to_numeric(temp_df['近6月'], errors="coerce")
235
- temp_df['近1年'] = pd.to_numeric(temp_df['近1年'], errors="coerce")
236
- temp_df['近2年'] = pd.to_numeric(temp_df['近2年'], errors="coerce")
237
- temp_df['近3年'] = pd.to_numeric(temp_df['近3年'], errors="coerce")
238
- temp_df['今年来'] = pd.to_numeric(temp_df['今年来'], errors="coerce")
239
- temp_df['成立来'] = pd.to_numeric(temp_df['成立来'], errors="coerce")
230
+ temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
231
+ temp_df["成立日期"] = pd.to_datetime(temp_df["成立日期"]).dt.date
232
+ temp_df["单位净值"] = pd.to_numeric(temp_df["单位净值"], errors="coerce")
233
+ temp_df["累计净值"] = pd.to_numeric(temp_df["累计净值"], errors="coerce")
234
+ temp_df["近1周"] = pd.to_numeric(temp_df["近1周"], errors="coerce")
235
+ temp_df["近1月"] = pd.to_numeric(temp_df["近1月"], errors="coerce")
236
+ temp_df["近3月"] = pd.to_numeric(temp_df["近3月"], errors="coerce")
237
+ temp_df["近6月"] = pd.to_numeric(temp_df["近6月"], errors="coerce")
238
+ temp_df["近1年"] = pd.to_numeric(temp_df["近1年"], errors="coerce")
239
+ temp_df["近2年"] = pd.to_numeric(temp_df["近2年"], errors="coerce")
240
+ temp_df["近3年"] = pd.to_numeric(temp_df["近3年"], errors="coerce")
241
+ temp_df["今年来"] = pd.to_numeric(temp_df["今年来"], errors="coerce")
242
+ temp_df["成立来"] = pd.to_numeric(temp_df["成立来"], errors="coerce")
240
243
  return temp_df
241
244
 
242
245
 
@@ -259,7 +262,8 @@ def fund_money_rank_em() -> pd.DataFrame:
259
262
  "_": "1603867224251",
260
263
  }
261
264
  headers = {
262
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36",
265
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
266
+ "Chrome/81.0.4044.138 Safari/537.36",
263
267
  "Referer": "https://fund.eastmoney.com/fundguzhi.html",
264
268
  }
265
269
  r = requests.get(url, params=params, headers=headers)
@@ -319,20 +323,24 @@ def fund_money_rank_em() -> pd.DataFrame:
319
323
  "手续费",
320
324
  ]
321
325
  ]
322
- temp_df['日期'] = pd.to_datetime(temp_df['日期']).dt.date
323
- temp_df['万份收益'] = pd.to_numeric(temp_df['万份收益'], errors="coerce")
324
- temp_df['年化收益率7日'] = pd.to_numeric(temp_df['年化收益率7日'], errors="coerce")
325
- temp_df['年化收益率14日'] = pd.to_numeric(temp_df['年化收益率14日'], errors="coerce")
326
- temp_df['年化收益率28'] = pd.to_numeric(temp_df['年化收益率28日'], errors="coerce")
327
- temp_df['近1月'] = pd.to_numeric(temp_df['近1月'], errors="coerce")
328
- temp_df['近3月'] = pd.to_numeric(temp_df['近3月'], errors="coerce")
329
- temp_df['近6月'] = pd.to_numeric(temp_df['近6月'], errors="coerce")
330
- temp_df['近1年'] = pd.to_numeric(temp_df['近1年'], errors="coerce")
331
- temp_df['2年'] = pd.to_numeric(temp_df['2年'], errors="coerce")
332
- temp_df['近3年'] = pd.to_numeric(temp_df['近3年'], errors="coerce")
333
- temp_df['5年'] = pd.to_numeric(temp_df['5年'], errors="coerce")
334
- temp_df['今年来'] = pd.to_numeric(temp_df['今年来'], errors="coerce")
335
- temp_df['成立来'] = pd.to_numeric(temp_df['成立来'], errors="coerce")
326
+ temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
327
+ temp_df["万份收益"] = pd.to_numeric(temp_df["万份收益"], errors="coerce")
328
+ temp_df["年化收益率7日"] = pd.to_numeric(temp_df["年化收益率7日"], errors="coerce")
329
+ temp_df["年化收益率14日"] = pd.to_numeric(
330
+ temp_df["年化收益率14"], errors="coerce"
331
+ )
332
+ temp_df["年化收益率28日"] = pd.to_numeric(
333
+ temp_df["年化收益率28日"], errors="coerce"
334
+ )
335
+ temp_df["1月"] = pd.to_numeric(temp_df["1月"], errors="coerce")
336
+ temp_df["近3月"] = pd.to_numeric(temp_df["近3月"], errors="coerce")
337
+ temp_df["6月"] = pd.to_numeric(temp_df["6月"], errors="coerce")
338
+ temp_df["近1年"] = pd.to_numeric(temp_df["近1年"], errors="coerce")
339
+ temp_df["近2年"] = pd.to_numeric(temp_df["近2年"], errors="coerce")
340
+ temp_df["近3年"] = pd.to_numeric(temp_df["近3年"], errors="coerce")
341
+ temp_df["近5年"] = pd.to_numeric(temp_df["近5年"], errors="coerce")
342
+ temp_df["今年来"] = pd.to_numeric(temp_df["今年来"], errors="coerce")
343
+ temp_df["成立来"] = pd.to_numeric(temp_df["成立来"], errors="coerce")
336
344
  return temp_df
337
345
 
338
346
 
@@ -358,13 +366,14 @@ def fund_lcx_rank_em() -> pd.DataFrame:
358
366
  "_": "1603867224251",
359
367
  }
360
368
  headers = {
361
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36",
369
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
370
+ "Chrome/81.0.4044.138 Safari/537.36",
362
371
  "Referer": "https://fund.eastmoney.com/fundguzhi.html",
363
372
  }
364
373
  r = requests.get(url, params=params, headers=headers)
365
374
  try:
366
375
  data_json = r.json()
367
- except:
376
+ except: # noqa: E722
368
377
  return pd.DataFrame()
369
378
  temp_df = pd.DataFrame(data_json["Data"])
370
379
  temp_df.reset_index(inplace=True)
@@ -427,21 +436,22 @@ def fund_hk_rank_em() -> pd.DataFrame:
427
436
  format_date = datetime.now().date().isoformat()
428
437
  url = "https://overseas.1234567.com.cn/overseasapi/OpenApiHander.ashx"
429
438
  params = {
430
- 'api': 'HKFDApi',
431
- 'm': 'MethodFundList',
432
- 'action': '1',
433
- 'pageindex': '0',
434
- 'pagesize': '5000',
435
- 'dy': '1',
436
- 'date1': format_date,
437
- 'date2': format_date,
438
- 'sortfield': 'Y',
439
- 'sorttype': '-1',
440
- 'isbuy': '0',
441
- '_': '1610790553848',
439
+ "api": "HKFDApi",
440
+ "m": "MethodFundList",
441
+ "action": "1",
442
+ "pageindex": "0",
443
+ "pagesize": "5000",
444
+ "dy": "1",
445
+ "date1": format_date,
446
+ "date2": format_date,
447
+ "sortfield": "Y",
448
+ "sorttype": "-1",
449
+ "isbuy": "0",
450
+ "_": "1610790553848",
442
451
  }
443
452
  headers = {
444
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36",
453
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
454
+ "Chrome/81.0.4044.138 Safari/537.36",
445
455
  "Referer": "https://fund.eastmoney.com/fundguzhi.html",
446
456
  }
447
457
  r = requests.get(url, params=params, headers=headers)
@@ -494,20 +504,22 @@ def fund_hk_rank_em() -> pd.DataFrame:
494
504
  "香港基金代码",
495
505
  ]
496
506
  ]
497
- temp_df['日期'] = pd.to_datetime(temp_df['日期']).dt.date
498
- temp_df['单位净值'] = pd.to_numeric(temp_df['单位净值'], errors="coerce")
499
- temp_df['日增长率'] = pd.to_numeric(temp_df['日增长率'], errors="coerce")
500
- temp_df['近1周'] = pd.to_numeric(temp_df['近1周'], errors="coerce")
501
- temp_df['近1月'] = pd.to_numeric(temp_df['近1月'], errors="coerce")
502
- temp_df['近3月'] = pd.to_numeric(temp_df['近3月'], errors="coerce")
503
- temp_df['近6月'] = pd.to_numeric(temp_df['近6月'], errors="coerce")
504
- temp_df['近1年'] = pd.to_numeric(temp_df['近1年'], errors="coerce")
505
- temp_df['近2年'] = pd.to_numeric(temp_df['近2年'], errors="coerce")
506
- temp_df['近3年'] = pd.to_numeric(temp_df['近3年'], errors="coerce")
507
- temp_df['今年来'] = pd.to_numeric(temp_df['今年来'], errors="coerce")
508
- temp_df['成立来'] = pd.to_numeric(temp_df['成立来'], errors="coerce")
509
- temp_df['成立来'] = pd.to_numeric(temp_df['成立来'], errors="coerce")
510
- temp_df['可购买'] = temp_df['可购买'].map(lambda x: "可购买" if x == "1" else "不可购买")
507
+ temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
508
+ temp_df["单位净值"] = pd.to_numeric(temp_df["单位净值"], errors="coerce")
509
+ temp_df["日增长率"] = pd.to_numeric(temp_df["日增长率"], errors="coerce")
510
+ temp_df["近1周"] = pd.to_numeric(temp_df["近1周"], errors="coerce")
511
+ temp_df["近1月"] = pd.to_numeric(temp_df["近1月"], errors="coerce")
512
+ temp_df["近3月"] = pd.to_numeric(temp_df["近3月"], errors="coerce")
513
+ temp_df["近6月"] = pd.to_numeric(temp_df["近6月"], errors="coerce")
514
+ temp_df["近1年"] = pd.to_numeric(temp_df["近1年"], errors="coerce")
515
+ temp_df["近2年"] = pd.to_numeric(temp_df["近2年"], errors="coerce")
516
+ temp_df["近3年"] = pd.to_numeric(temp_df["近3年"], errors="coerce")
517
+ temp_df["今年来"] = pd.to_numeric(temp_df["今年来"], errors="coerce")
518
+ temp_df["成立来"] = pd.to_numeric(temp_df["成立来"], errors="coerce")
519
+ temp_df["成立来"] = pd.to_numeric(temp_df["成立来"], errors="coerce")
520
+ temp_df["可购买"] = temp_df["可购买"].map(
521
+ lambda x: "可购买" if x == "1" else "不可购买"
522
+ )
511
523
  return temp_df
512
524
 
513
525
 
@@ -530,9 +542,6 @@ if __name__ == "__main__":
530
542
  fund_open_fund_rank_em_df = fund_open_fund_rank_em(symbol="QDII")
531
543
  print(fund_open_fund_rank_em_df)
532
544
 
533
- fund_open_fund_rank_em_df = fund_open_fund_rank_em(symbol="LOF")
534
- print(fund_open_fund_rank_em_df)
535
-
536
545
  fund_open_fund_rank_em_df = fund_open_fund_rank_em(symbol="FOF")
537
546
  print(fund_open_fund_rank_em_df)
538
547
 
@@ -1,14 +1,14 @@
1
1
  # -*- coding:utf-8 -*-
2
2
  # !/usr/bin/env python
3
3
  """
4
- Date: 2023/6/13 16:12
4
+ Date: 2024/7/24 23:30
5
5
  Desc: 巨潮资讯-数据中心-专题统计-基金报表
6
- http://webapi.cninfo.com.cn/#/thematicStatistics
6
+ https://webapi.cninfo.com.cn/#/thematicStatistics
7
7
  """
8
8
 
9
9
  import pandas as pd
10
- import requests
11
10
  import py_mini_racer
11
+ import requests
12
12
 
13
13
  from akshare.datasets import get_ths_js
14
14
 
@@ -22,7 +22,7 @@ def _get_file_content_cninfo(file: str = "cninfo.js") -> str:
22
22
  :rtype: str
23
23
  """
24
24
  setting_file_path = get_ths_js(file)
25
- with open(setting_file_path) as f:
25
+ with open(setting_file_path, encoding="utf-8") as f:
26
26
  file_data = f.read()
27
27
  return file_data
28
28
 
@@ -30,13 +30,13 @@ def _get_file_content_cninfo(file: str = "cninfo.js") -> str:
30
30
  def fund_report_stock_cninfo(date: str = "20210630") -> pd.DataFrame:
31
31
  """
32
32
  巨潮资讯-数据中心-专题统计-基金报表-基金重仓股
33
- http://webapi.cninfo.com.cn/#/thematicStatistics
33
+ https://webapi.cninfo.com.cn/#/thematicStatistics
34
34
  :param date: 报告时间; choice of {"XXXX0331", "XXXX0630", "XXXX0930", "XXXX1231"}
35
35
  :type date: str
36
36
  :return: 基金重仓股
37
37
  :rtype: pandas.DataFrame
38
38
  """
39
- url = "http://webapi.cninfo.com.cn/api/sysapi/p_sysapi1112"
39
+ url = "https://webapi.cninfo.com.cn/api/sysapi/p_sysapi1112"
40
40
  js_code = py_mini_racer.MiniRacer()
41
41
  js_content = _get_file_content_cninfo("cninfo.js")
42
42
  js_code.eval(js_content)
@@ -49,11 +49,12 @@ def fund_report_stock_cninfo(date: str = "20210630") -> pd.DataFrame:
49
49
  "Cache-Control": "no-cache",
50
50
  "Content-Length": "0",
51
51
  "Host": "webapi.cninfo.com.cn",
52
- "Origin": "http://webapi.cninfo.com.cn",
52
+ "Origin": "https://webapi.cninfo.com.cn",
53
53
  "Pragma": "no-cache",
54
54
  "Proxy-Connection": "keep-alive",
55
- "Referer": "http://webapi.cninfo.com.cn/",
56
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36",
55
+ "Referer": "https://webapi.cninfo.com.cn/",
56
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
57
+ "Chrome/93.0.4577.63 Safari/537.36",
57
58
  "X-Requested-With": "XMLHttpRequest",
58
59
  }
59
60
  params = {
@@ -89,19 +90,20 @@ def fund_report_stock_cninfo(date: str = "20210630") -> pd.DataFrame:
89
90
  temp_df["持股总数"] = pd.to_numeric(temp_df["持股总数"], errors="coerce")
90
91
  temp_df["持股总市值"] = pd.to_numeric(temp_df["持股总市值"], errors="coerce")
91
92
  temp_df["基金覆盖家数"] = pd.to_numeric(temp_df["基金覆盖家数"], errors="coerce")
93
+ temp_df["序号"] = range(1, len(temp_df) + 1)
92
94
  return temp_df
93
95
 
94
96
 
95
97
  def fund_report_industry_allocation_cninfo(date: str = "20210630") -> pd.DataFrame:
96
98
  """
97
99
  巨潮资讯-数据中心-专题统计-基金报表-基金行业配置
98
- http://webapi.cninfo.com.cn/#/thematicStatistics
100
+ https://webapi.cninfo.com.cn/#/thematicStatistics
99
101
  :param date: 报告时间; choice of {"XXXX0331", "XXXX0630", "XXXX0930", "XXXX1231"}, 从 2017 年开始
100
102
  :type date: str
101
103
  :return: 基金行业配置
102
104
  :rtype: pandas.DataFrame
103
105
  """
104
- url = "http://webapi.cninfo.com.cn/api/sysapi/p_sysapi1113"
106
+ url = "https://webapi.cninfo.com.cn/api/sysapi/p_sysapi1113"
105
107
  js_code = py_mini_racer.MiniRacer()
106
108
  js_content = _get_file_content_cninfo("cninfo.js")
107
109
  js_code.eval(js_content)
@@ -114,11 +116,12 @@ def fund_report_industry_allocation_cninfo(date: str = "20210630") -> pd.DataFra
114
116
  "Cache-Control": "no-cache",
115
117
  "Content-Length": "0",
116
118
  "Host": "webapi.cninfo.com.cn",
117
- "Origin": "http://webapi.cninfo.com.cn",
119
+ "Origin": "https://webapi.cninfo.com.cn",
118
120
  "Pragma": "no-cache",
119
121
  "Proxy-Connection": "keep-alive",
120
- "Referer": "http://webapi.cninfo.com.cn/",
121
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36",
122
+ "Referer": "https://webapi.cninfo.com.cn/",
123
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
124
+ "Chrome/93.0.4577.63 Safari/537.36",
122
125
  "X-Requested-With": "XMLHttpRequest",
123
126
  }
124
127
  params = {
@@ -158,11 +161,11 @@ def fund_report_industry_allocation_cninfo(date: str = "20210630") -> pd.DataFra
158
161
  def fund_report_asset_allocation_cninfo() -> pd.DataFrame:
159
162
  """
160
163
  巨潮资讯-数据中心-专题统计-基金报表-基金资产配置
161
- http://webapi.cninfo.com.cn/#/thematicStatistics
164
+ https://webapi.cninfo.com.cn/#/thematicStatistics
162
165
  :return: 基金资产配置
163
166
  :rtype: pandas.DataFrame
164
167
  """
165
- url = "http://webapi.cninfo.com.cn/api/sysapi/p_sysapi1114"
168
+ url = "https://webapi.cninfo.com.cn/api/sysapi/p_sysapi1114"
166
169
  js_code = py_mini_racer.MiniRacer()
167
170
  js_content = _get_file_content_cninfo("cninfo.js")
168
171
  js_code.eval(js_content)
@@ -175,11 +178,12 @@ def fund_report_asset_allocation_cninfo() -> pd.DataFrame:
175
178
  "Cache-Control": "no-cache",
176
179
  "Content-Length": "0",
177
180
  "Host": "webapi.cninfo.com.cn",
178
- "Origin": "http://webapi.cninfo.com.cn",
181
+ "Origin": "https://webapi.cninfo.com.cn",
179
182
  "Pragma": "no-cache",
180
183
  "Proxy-Connection": "keep-alive",
181
- "Referer": "http://webapi.cninfo.com.cn/",
182
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36",
184
+ "Referer": "https://webapi.cninfo.com.cn/",
185
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
186
+ "Chrome/93.0.4577.63 Safari/537.36",
183
187
  "X-Requested-With": "XMLHttpRequest",
184
188
  }
185
189
  r = requests.post(url, headers=headers)
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2023/5/29 23:34
4
+ Date: 2024/7/24 23:30
5
5
  Desc: 巨潮资讯-数据中心-专题统计-公司治理-股权质押
6
- http://webapi.cninfo.com.cn/#/thematicStatistics
6
+ https://webapi.cninfo.com.cn/#/thematicStatistics
7
7
  """
8
8
 
9
9
  import pandas as pd
10
- import requests
11
10
  import py_mini_racer
11
+ import requests
12
12
 
13
13
  from akshare.datasets import get_ths_js
14
14
 
@@ -22,7 +22,7 @@ def _get_file_content_ths(file: str = "cninfo.js") -> str:
22
22
  :rtype: str
23
23
  """
24
24
  setting_file_path = get_ths_js(file)
25
- with open(setting_file_path) as f:
25
+ with open(setting_file_path, encoding="utf-8") as f:
26
26
  file_data = f.read()
27
27
  return file_data
28
28
 
@@ -30,13 +30,13 @@ def _get_file_content_ths(file: str = "cninfo.js") -> str:
30
30
  def stock_cg_equity_mortgage_cninfo(date: str = "20210930") -> pd.DataFrame:
31
31
  """
32
32
  巨潮资讯-数据中心-专题统计-公司治理-股权质押
33
- http://webapi.cninfo.com.cn/#/thematicStatistics
33
+ https://webapi.cninfo.com.cn/#/thematicStatistics
34
34
  :param date: 开始统计时间
35
35
  :type date: str
36
36
  :return: 股权质押
37
37
  :rtype: pandas.DataFrame
38
38
  """
39
- url = "http://webapi.cninfo.com.cn/api/sysapi/p_sysapi1094"
39
+ url = "https://webapi.cninfo.com.cn/api/sysapi/p_sysapi1094"
40
40
  js_code = py_mini_racer.MiniRacer()
41
41
  js_content = _get_file_content_ths("cninfo.js")
42
42
  js_code.eval(js_content)
@@ -49,11 +49,12 @@ def stock_cg_equity_mortgage_cninfo(date: str = "20210930") -> pd.DataFrame:
49
49
  "Cache-Control": "no-cache",
50
50
  "Content-Length": "0",
51
51
  "Host": "webapi.cninfo.com.cn",
52
- "Origin": "http://webapi.cninfo.com.cn",
52
+ "Origin": "https://webapi.cninfo.com.cn",
53
53
  "Pragma": "no-cache",
54
54
  "Proxy-Connection": "keep-alive",
55
- "Referer": "http://webapi.cninfo.com.cn/",
56
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36",
55
+ "Referer": "https://webapi.cninfo.com.cn/",
56
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
57
+ "Chrome/93.0.4577.63 Safari/537.36",
57
58
  "X-Requested-With": "XMLHttpRequest",
58
59
  }
59
60
  params = {
@@ -88,7 +89,7 @@ def stock_cg_equity_mortgage_cninfo(date: str = "20210930") -> pd.DataFrame:
88
89
  "累计质押占总股本比例",
89
90
  ]
90
91
  ]
91
- temp_df["公告日期"] = pd.to_datetime(temp_df["公告日期"]).dt.date
92
+ temp_df["公告日期"] = pd.to_datetime(temp_df["公告日期"], errors="coerce").dt.date
92
93
  temp_df["质押数量"] = pd.to_numeric(temp_df["质押数量"], errors="coerce")
93
94
  temp_df["占总股本比例"] = pd.to_numeric(temp_df["占总股本比例"], errors="coerce")
94
95
  temp_df["质押解除数量"] = pd.to_numeric(temp_df["质押解除数量"], errors="coerce")
@@ -0,0 +1,108 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding:utf-8 -*-
3
+ """
4
+ Date: 2024/7/24 13:30
5
+ Desc: 东方财富网-行情中心-港股市场-知名港股
6
+ https://quote.eastmoney.com/center/gridlist.html#hk_wellknown
7
+ """
8
+
9
+ import pandas as pd
10
+ import requests
11
+
12
+
13
+ def stock_hk_famous_spot_em() -> pd.DataFrame:
14
+ """
15
+ 东方财富网-行情中心-港股市场-知名港股
16
+ https://quote.eastmoney.com/center/gridlist.html#hk_wellknown
17
+ :return: 知名美股实时行情
18
+ :rtype: pandas.DataFrame
19
+ """
20
+ url = "https://69.push2.eastmoney.com/api/qt/clist/get"
21
+ params = {
22
+ "pn": "1",
23
+ "pz": "2000",
24
+ "po": "1",
25
+ "np": "1",
26
+ "ut": "bd1d9ddb04089700cf9c27f6f7426281",
27
+ "fltt": "2",
28
+ "invt": "2",
29
+ "dect": "1",
30
+ "wbp2u": "|0|0|0|web",
31
+ "fid": "f3",
32
+ "fs": "b:DLMK0106",
33
+ "fields": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,"
34
+ "f25,f26,f22,f33,f11,f62,f128,f136,f115,f152",
35
+ "_": "1631271634231",
36
+ }
37
+ r = requests.get(url, params=params)
38
+ data_json = r.json()
39
+ temp_df = pd.DataFrame(data_json["data"]["diff"])
40
+ temp_df.columns = [
41
+ "_",
42
+ "最新价",
43
+ "涨跌幅",
44
+ "涨跌额",
45
+ "成交量",
46
+ "成交额",
47
+ "_",
48
+ "_",
49
+ "_",
50
+ "_",
51
+ "_",
52
+ "代码",
53
+ "编码",
54
+ "名称",
55
+ "最高",
56
+ "最低",
57
+ "今开",
58
+ "昨收",
59
+ "总市值",
60
+ "_",
61
+ "_",
62
+ "_",
63
+ "_",
64
+ "_",
65
+ "_",
66
+ "_",
67
+ "_",
68
+ "市盈率",
69
+ "_",
70
+ "_",
71
+ "_",
72
+ "_",
73
+ "_",
74
+ ]
75
+ temp_df.reset_index(inplace=True)
76
+ temp_df["index"] = range(1, len(temp_df) + 1)
77
+ temp_df.rename(columns={"index": "序号"}, inplace=True)
78
+ temp_df = temp_df[
79
+ [
80
+ "序号",
81
+ "代码",
82
+ "名称",
83
+ "最新价",
84
+ "涨跌额",
85
+ "涨跌幅",
86
+ "今开",
87
+ "最高",
88
+ "最低",
89
+ "昨收",
90
+ "成交量",
91
+ "成交额",
92
+ ]
93
+ ]
94
+ temp_df["最新价"] = pd.to_numeric(temp_df["最新价"], errors="coerce")
95
+ temp_df["涨跌额"] = pd.to_numeric(temp_df["涨跌额"], errors="coerce")
96
+ temp_df["涨跌幅"] = pd.to_numeric(temp_df["涨跌幅"], errors="coerce")
97
+ temp_df["今开"] = pd.to_numeric(temp_df["今开"], errors="coerce")
98
+ temp_df["最高"] = pd.to_numeric(temp_df["最高"], errors="coerce")
99
+ temp_df["最低"] = pd.to_numeric(temp_df["最低"], errors="coerce")
100
+ temp_df["昨收"] = pd.to_numeric(temp_df["昨收"], errors="coerce")
101
+ temp_df["成交量"] = pd.to_numeric(temp_df["成交量"], errors="coerce")
102
+ temp_df["成交额"] = pd.to_numeric(temp_df["成交额"], errors="coerce")
103
+ return temp_df
104
+
105
+
106
+ if __name__ == "__main__":
107
+ stock_hk_famous_spot_em_df = stock_hk_famous_spot_em()
108
+ print(stock_hk_famous_spot_em_df)