akshare 1.14.49__py3-none-any.whl → 1.17.99__py3-none-any.whl

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 (343) hide show
  1. akshare/__init__.py +595 -129
  2. akshare/air/air_hebei.py +77 -54
  3. akshare/air/air_zhenqi.py +0 -4
  4. akshare/air/cons.py +1 -0
  5. akshare/air/crypto.js +1 -1
  6. akshare/air/outcrypto.js +1 -1
  7. akshare/article/cons.py +1 -0
  8. akshare/article/epu_index.py +4 -3
  9. akshare/article/ff_factor.py +19 -8
  10. akshare/article/fred_md.py +4 -1
  11. akshare/article/risk_rv.py +3 -8
  12. akshare/bank/bank_cbirc_2020.py +11 -11
  13. akshare/bank/cons.py +7 -6
  14. akshare/bond/bond_buy_back_em.py +228 -0
  15. akshare/bond/bond_cb_sina.py +1 -0
  16. akshare/bond/bond_cb_ths.py +17 -9
  17. akshare/bond/bond_cbond.py +19 -14
  18. akshare/bond/bond_china.py +38 -39
  19. akshare/bond/bond_china_money.py +1 -1
  20. akshare/bond/bond_convert.py +10 -9
  21. akshare/bond/bond_em.py +37 -17
  22. akshare/bond/bond_summary.py +38 -37
  23. akshare/bond/bond_zh_cov.py +31 -40
  24. akshare/bond/bond_zh_sina.py +4 -0
  25. akshare/bond/cons.py +14 -11
  26. akshare/cal/__init__.py +0 -0
  27. akshare/cal/rv.py +170 -0
  28. akshare/cost/cost_living.py +7 -5
  29. akshare/crypto/__init__.py +1 -1
  30. akshare/crypto/crypto_bitcoin_cme.py +9 -7
  31. akshare/crypto/crypto_hold.py +4 -2
  32. akshare/currency/currency.py +1 -0
  33. akshare/currency/currency_china_bank_sina.py +11 -6
  34. akshare/data/__init__.py +1 -1
  35. akshare/data/cninfo.js +1 -1
  36. akshare/datasets.py +10 -21
  37. akshare/economic/cons.py +10 -3
  38. akshare/economic/macro_australia.py +74 -69
  39. akshare/economic/macro_bank.py +95 -653
  40. akshare/economic/macro_canada.py +92 -81
  41. akshare/economic/macro_china.py +97 -105
  42. akshare/economic/macro_china_hk.py +0 -1
  43. akshare/economic/macro_euro.py +103 -56
  44. akshare/economic/macro_finance_ths.py +7 -5
  45. akshare/economic/macro_germany.py +1 -1
  46. akshare/economic/macro_japan.py +0 -1
  47. akshare/economic/macro_other.py +1 -6
  48. akshare/economic/macro_swiss.py +2 -3
  49. akshare/economic/macro_uk.py +1 -1
  50. akshare/economic/macro_usa.py +7 -9
  51. akshare/economic/marco_cnbs.py +11 -6
  52. akshare/energy/energy_carbon.py +0 -1
  53. akshare/energy/energy_oil_em.py +1 -2
  54. akshare/event/cons.py +1 -0
  55. akshare/exceptions.py +43 -0
  56. akshare/file_fold/calendar.json +245 -2
  57. akshare/forex/__init__.py +0 -0
  58. akshare/forex/cons.py +192 -0
  59. akshare/forex/forex_em.py +149 -0
  60. akshare/fortune/fortune_500.py +1 -37
  61. akshare/fortune/fortune_bloomberg.py +6 -3
  62. akshare/fortune/fortune_forbes_500.py +3 -6
  63. akshare/fortune/fortune_hurun.py +2 -1
  64. akshare/fortune/fortune_xincaifu_500.py +17 -14
  65. akshare/fund/fund_announcement_em.py +145 -0
  66. akshare/fund/fund_aum_em.py +49 -35
  67. akshare/fund/fund_em.py +251 -220
  68. akshare/fund/fund_etf_em.py +44 -35
  69. akshare/fund/fund_etf_sina.py +75 -27
  70. akshare/fund/fund_etf_ths.py +2 -0
  71. akshare/fund/fund_fee_em.py +172 -0
  72. akshare/fund/fund_fhsp_em.py +42 -32
  73. akshare/fund/fund_init_em.py +8 -5
  74. akshare/fund/fund_lof_em.py +12 -19
  75. akshare/fund/fund_manager.py +25 -11
  76. akshare/fund/fund_overview_em.py +42 -0
  77. akshare/fund/fund_portfolio_em.py +23 -21
  78. akshare/fund/fund_position_lg.py +19 -8
  79. akshare/fund/fund_rank_em.py +2 -5
  80. akshare/fund/fund_rating.py +33 -12
  81. akshare/fund/fund_scale_em.py +24 -13
  82. akshare/fund/fund_scale_sina.py +20 -10
  83. akshare/fund/fund_xq.py +3 -2
  84. akshare/futures/cons.py +135 -39
  85. akshare/futures/cot.py +55 -56
  86. akshare/futures/futures_basis.py +49 -11
  87. akshare/futures/futures_comex_em.py +1 -0
  88. akshare/futures/futures_comm_ctp.py +1 -1
  89. akshare/futures/futures_contract_detail.py +59 -9
  90. akshare/futures/futures_daily_bar.py +66 -59
  91. akshare/futures/futures_foreign.py +14 -8
  92. akshare/futures/futures_hf_em.py +215 -61
  93. akshare/futures/futures_hist_em.py +191 -0
  94. akshare/futures/futures_hq_sina.py +5 -3
  95. akshare/futures/futures_index_ccidx.py +24 -82
  96. akshare/futures/futures_inventory_99.py +70 -272
  97. akshare/futures/futures_inventory_em.py +14 -11
  98. akshare/futures/futures_news_shmet.py +2 -2
  99. akshare/futures/futures_roll_yield.py +11 -24
  100. akshare/futures/futures_rule.py +7 -3
  101. akshare/futures/futures_rule_em.py +38 -0
  102. akshare/futures/futures_settlement_price_sgx.py +21 -6
  103. akshare/futures/futures_stock_js.py +0 -1
  104. akshare/futures/futures_to_spot.py +5 -6
  105. akshare/futures/futures_warehouse_receipt.py +48 -47
  106. akshare/futures/futures_zh_sina.py +3 -3
  107. akshare/futures/receipt.py +298 -165
  108. akshare/futures/requests_fun.py +16 -3
  109. akshare/futures/symbol_var.py +32 -13
  110. akshare/futures_derivative/cons.py +100 -103
  111. akshare/futures_derivative/futures_contract_info_cffex.py +55 -39
  112. akshare/futures_derivative/futures_contract_info_czce.py +2 -0
  113. akshare/futures_derivative/futures_contract_info_dce.py +43 -17
  114. akshare/futures_derivative/futures_contract_info_gfex.py +43 -31
  115. akshare/futures_derivative/futures_contract_info_ine.py +43 -34
  116. akshare/futures_derivative/futures_contract_info_shfe.py +3 -4
  117. akshare/futures_derivative/futures_cot_sina.py +8 -6
  118. akshare/futures_derivative/futures_index_sina.py +25 -13
  119. akshare/fx/cons.py +12 -7
  120. akshare/fx/fx_c_swap_cm.py +62 -0
  121. akshare/fx/fx_quote.py +3 -2
  122. akshare/fx/fx_quote_baidu.py +2 -1
  123. akshare/hf/__init__.py +1 -1
  124. akshare/hf/hf_sp500.py +8 -7
  125. akshare/index/cons.py +132 -28
  126. akshare/index/index_cni.py +7 -7
  127. akshare/index/index_cons.py +2 -2
  128. akshare/index/index_csindex.py +68 -0
  129. akshare/index/index_cx.py +20 -20
  130. akshare/index/index_drewry.py +17 -16
  131. akshare/index/index_eri.py +1 -0
  132. akshare/index/index_global_em.py +167 -0
  133. akshare/index/index_global_sina.py +82 -0
  134. akshare/index/index_kq_fz.py +17 -14
  135. akshare/index/index_kq_ss.py +1 -0
  136. akshare/index/index_option_qvix.py +351 -16
  137. akshare/index/index_research_sw.py +21 -21
  138. akshare/index/index_spot.py +9 -5
  139. akshare/index/index_stock_hk.py +5 -9
  140. akshare/index/index_stock_zh.py +111 -24
  141. akshare/index/index_stock_zh_csindex.py +3 -367
  142. akshare/index/index_sugar.py +18 -4
  143. akshare/index/index_sw.py +10 -2
  144. akshare/index/index_yw.py +53 -75
  145. akshare/index/index_zh_em.py +15 -82
  146. akshare/interest_rate/interbank_rate_em.py +0 -1
  147. akshare/movie/jm.js +0 -1
  148. akshare/news/__init__.py +1 -1
  149. akshare/news/news_baidu.py +395 -222
  150. akshare/news/news_stock.py +49 -16
  151. akshare/option/cons.py +2 -2
  152. akshare/option/option_commodity.py +341 -220
  153. akshare/option/option_commodity_sina.py +22 -26
  154. akshare/option/option_contract_info_ctp.py +63 -0
  155. akshare/option/option_current_sse.py +61 -0
  156. akshare/option/option_current_szse.py +84 -0
  157. akshare/option/option_czce.py +37 -9
  158. akshare/option/option_daily_stats_sse_szse.py +0 -1
  159. akshare/option/option_em.py +4 -8
  160. akshare/option/option_finance.py +60 -12
  161. akshare/option/option_finance_sina.py +7 -7
  162. akshare/option/option_lhb_em.py +0 -1
  163. akshare/option/option_margin.py +62 -0
  164. akshare/option/option_premium_analysis_em.py +58 -53
  165. akshare/option/option_risk_analysis_em.py +11 -8
  166. akshare/option/option_risk_indicator_sse.py +3 -4
  167. akshare/option/option_value_analysis_em.py +62 -55
  168. akshare/other/__init__.py +1 -1
  169. akshare/pro/__init__.py +0 -1
  170. akshare/pro/client.py +6 -4
  171. akshare/pro/cons.py +3 -2
  172. akshare/pro/data_pro.py +6 -5
  173. akshare/qdii/__init__.py +0 -0
  174. akshare/qdii/qdii_jsl.py +233 -0
  175. akshare/qhkc/__init__.py +1 -6
  176. akshare/qhkc/qhkc_api.py +64 -22
  177. akshare/qhkc_web/__init__.py +1 -6
  178. akshare/qhkc_web/qhkc_fund.py +10 -6
  179. akshare/qhkc_web/qhkc_index.py +28 -14
  180. akshare/qhkc_web/qhkc_tool.py +62 -59
  181. akshare/rate/__init__.py +1 -1
  182. akshare/rate/repo_rate.py +36 -32
  183. akshare/reits/__init__.py +1 -1
  184. akshare/reits/reits_basic.py +149 -13
  185. akshare/request.py +117 -0
  186. akshare/spot/__init__.py +1 -1
  187. akshare/spot/spot_hog_soozhu.py +165 -3
  188. akshare/spot/spot_sge.py +70 -9
  189. akshare/stock/cons.py +60 -23
  190. akshare/stock/stock_allotment_cninfo.py +8 -8
  191. akshare/stock/stock_ask_bid_em.py +3 -78
  192. akshare/stock/stock_board_concept_em.py +160 -35
  193. akshare/stock/stock_board_industry_em.py +163 -70
  194. akshare/stock/stock_dividend_cninfo.py +31 -17
  195. akshare/stock/stock_dzjy_em.py +347 -260
  196. akshare/stock/stock_fund_em.py +72 -64
  197. akshare/stock/stock_fund_hold.py +1 -2
  198. akshare/stock/stock_gsrl_em.py +1 -0
  199. akshare/stock/stock_hk_comparison_em.py +175 -0
  200. akshare/stock/stock_hk_famous.py +4 -5
  201. akshare/stock/stock_hk_fhpx_ths.py +2 -1
  202. akshare/stock/stock_hk_hot_rank_em.py +1 -0
  203. akshare/stock/stock_hk_sina.py +84 -36
  204. akshare/stock/stock_hold_control_cninfo.py +82 -0
  205. akshare/stock/stock_hold_control_em.py +0 -2
  206. akshare/stock/stock_hot_rank_em.py +4 -1
  207. akshare/stock/stock_hot_search_baidu.py +32 -19
  208. akshare/stock/stock_hot_up_em.py +4 -1
  209. akshare/stock/stock_hsgt_em.py +155 -0
  210. akshare/stock/stock_industry.py +1 -0
  211. akshare/stock/stock_industry_cninfo.py +1 -2
  212. akshare/stock/stock_info.py +6 -4
  213. akshare/stock/stock_info_em.py +17 -11
  214. akshare/stock/stock_intraday_em.py +4 -78
  215. akshare/stock/stock_intraday_sina.py +2 -2
  216. akshare/stock/stock_news_cx.py +39 -0
  217. akshare/stock/stock_profile_cninfo.py +7 -7
  218. akshare/stock/stock_profile_em.py +302 -0
  219. akshare/stock/stock_rank_forecast.py +6 -5
  220. akshare/stock/stock_repurchase_em.py +7 -2
  221. akshare/stock/stock_share_changes_cninfo.py +7 -5
  222. akshare/stock/stock_share_hold.py +24 -20
  223. akshare/stock/stock_stop.py +6 -6
  224. akshare/stock/stock_summary.py +153 -417
  225. akshare/stock/stock_us_famous.py +5 -6
  226. akshare/stock/stock_us_js.py +3 -2
  227. akshare/stock/stock_us_pink.py +38 -27
  228. akshare/stock/stock_us_sina.py +7 -3
  229. akshare/stock/stock_weibo_nlp.py +18 -20
  230. akshare/stock/stock_xq.py +24 -22
  231. akshare/stock/stock_zh_a_sina.py +8 -5
  232. akshare/stock/stock_zh_a_special.py +240 -243
  233. akshare/stock/stock_zh_a_tick_tx.py +11 -3
  234. akshare/stock/stock_zh_ah_tx.py +23 -26
  235. akshare/stock/stock_zh_b_sina.py +2 -2
  236. akshare/stock/stock_zh_comparison_em.py +250 -0
  237. akshare/stock/stock_zh_kcb_sina.py +67 -64
  238. akshare/stock_a/__init__.py +0 -0
  239. akshare/stock_a/stock_board_concept_name_em.py +170 -0
  240. akshare/stock_a/stock_individual_fund_flow_rank.py +258 -0
  241. akshare/stock_a/stock_zh_a_spot.py +212 -0
  242. akshare/stock_feature/cons.py +1 -0
  243. akshare/stock_feature/stock_a_indicator.py +9 -54
  244. akshare/stock_feature/stock_a_pe_and_pb.py +23 -5
  245. akshare/stock_feature/stock_account_em.py +0 -1
  246. akshare/stock_feature/stock_all_pb.py +2 -1
  247. akshare/stock_feature/stock_analyst_em.py +36 -30
  248. akshare/stock_feature/stock_board_concept_ths.py +328 -0
  249. akshare/stock_feature/stock_board_industry_ths.py +57 -2
  250. akshare/stock_feature/stock_buffett_index_lg.py +10 -8
  251. akshare/stock_feature/stock_classify_sina.py +3 -6
  252. akshare/stock_feature/stock_comment_em.py +81 -144
  253. akshare/stock_feature/stock_congestion_lg.py +2 -1
  254. akshare/stock_feature/stock_cyq_em.py +5 -11
  255. akshare/stock_feature/stock_disclosure_cninfo.py +6 -6
  256. akshare/stock_feature/stock_dxsyl_em.py +121 -74
  257. akshare/stock_feature/stock_ebs_lg.py +5 -4
  258. akshare/stock_feature/stock_esg_sina.py +29 -7
  259. akshare/stock_feature/stock_fhps_em.py +2 -1
  260. akshare/stock_feature/stock_fhps_ths.py +15 -7
  261. akshare/stock_feature/stock_fund_flow.py +30 -22
  262. akshare/stock_feature/stock_gddh_em.py +19 -11
  263. akshare/stock_feature/stock_gdfx_em.py +226 -113
  264. akshare/stock_feature/stock_gdhs.py +75 -50
  265. akshare/stock_feature/stock_gdzjc_em.py +21 -10
  266. akshare/stock_feature/stock_gpzy_em.py +78 -46
  267. akshare/stock_feature/stock_gxl_lg.py +3 -2
  268. akshare/stock_feature/stock_hist_em.py +137 -234
  269. akshare/stock_feature/stock_hist_tx.py +13 -10
  270. akshare/stock_feature/stock_hk_valuation_baidu.py +20 -8
  271. akshare/stock_feature/stock_hot_xq.py +4 -6
  272. akshare/stock_feature/stock_hsgt_em.py +269 -97
  273. akshare/stock_feature/stock_hsgt_exchange_rate.py +115 -87
  274. akshare/stock_feature/stock_hsgt_min_em.py +13 -16
  275. akshare/stock_feature/stock_info.py +7 -80
  276. akshare/stock_feature/stock_inner_trade_xq.py +38 -31
  277. akshare/stock_feature/stock_jgdy_em.py +43 -40
  278. akshare/stock_feature/stock_lhb_em.py +119 -3
  279. akshare/stock_feature/stock_margin_em.py +0 -1
  280. akshare/stock_feature/stock_margin_sse.py +0 -2
  281. akshare/stock_feature/stock_pankou_em.py +71 -35
  282. akshare/stock_feature/stock_qsjy_em.py +13 -4
  283. akshare/stock_feature/stock_report_em.py +151 -7
  284. akshare/stock_feature/stock_research_report_em.py +55 -20
  285. akshare/stock_feature/stock_sy_em.py +20 -15
  286. akshare/stock_feature/stock_technology_ths.py +122 -77
  287. akshare/stock_feature/stock_tfp_em.py +2 -1
  288. akshare/stock_feature/stock_three_report_em.py +21 -5
  289. akshare/stock_feature/stock_ttm_lyr.py +18 -9
  290. akshare/stock_feature/stock_value_em.py +83 -0
  291. akshare/stock_feature/stock_yjbb_em.py +58 -32
  292. akshare/stock_feature/stock_yjyg_cninfo.py +6 -2
  293. akshare/stock_feature/stock_yjyg_em.py +1 -1
  294. akshare/stock_feature/stock_yzxdr_em.py +24 -22
  295. akshare/stock_feature/stock_zdhtmx_em.py +20 -6
  296. akshare/stock_feature/stock_zh_vote_baidu.py +4 -1
  297. akshare/stock_feature/stock_ztb_em.py +39 -24
  298. akshare/stock_fundamental/__init__.py +1 -1
  299. akshare/stock_fundamental/stock_basic_info_xq.py +119 -0
  300. akshare/stock_fundamental/{stock_finance_hk.py → stock_finance_hk_em.py} +23 -16
  301. akshare/stock_fundamental/{stock_finance.py → stock_finance_sina.py} +60 -7
  302. akshare/stock_fundamental/stock_finance_ths.py +524 -57
  303. akshare/stock_fundamental/stock_finance_us_em.py +268 -0
  304. akshare/stock_fundamental/stock_gbjg_em.py +80 -0
  305. akshare/stock_fundamental/stock_hold.py +26 -17
  306. akshare/stock_fundamental/stock_ipo_declare.py +1 -0
  307. akshare/stock_fundamental/stock_kcb_detail_sse.py +10 -10
  308. akshare/stock_fundamental/stock_kcb_sse.py +26 -25
  309. akshare/stock_fundamental/stock_notice.py +12 -3
  310. akshare/stock_fundamental/stock_profit_forecast_em.py +31 -13
  311. akshare/stock_fundamental/stock_profit_forecast_hk_etnet.py +64 -41
  312. akshare/stock_fundamental/stock_profit_forecast_ths.py +86 -35
  313. akshare/stock_fundamental/stock_recommend.py +20 -4
  314. akshare/stock_fundamental/stock_zygc.py +5 -62
  315. akshare/utils/context.py +43 -0
  316. akshare/utils/demjson.py +2009 -1338
  317. akshare/utils/func.py +49 -2
  318. akshare/utils/multi_decrypt.py +53 -0
  319. akshare/utils/token_process.py +6 -5
  320. {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info}/METADATA +54 -80
  321. akshare-1.17.99.dist-info/RECORD +409 -0
  322. {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info}/WHEEL +1 -1
  323. {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info/licenses}/LICENSE +1 -1
  324. tests/test_func.py +3 -5
  325. akshare/bond/bond_futures.py +0 -50
  326. akshare/bond/bond_investing.py +0 -139
  327. akshare/crypto/crypto_hist_investing.py +0 -249
  328. akshare/fund/fund_announcement.py +0 -56
  329. akshare/futures/futures_international.py +0 -170
  330. akshare/futures/futures_news_baidu.py +0 -54
  331. akshare/futures/inventory_data.py +0 -100
  332. akshare/futures_derivative/futures_index_price_nh.py +0 -61
  333. akshare/futures_derivative/futures_index_return_nh.py +0 -47
  334. akshare/futures_derivative/futures_index_volatility_nh.py +0 -53
  335. akshare/futures_derivative/futures_other_index_nh.py +0 -145
  336. akshare/index/index_fear_greed_funddb.py +0 -78
  337. akshare/index/index_investing.py +0 -232
  338. akshare/sport/__init__.py +0 -6
  339. akshare/sport/sport_olympic.py +0 -27
  340. akshare/stock_feature/stock_wencai.py +0 -104
  341. akshare/stock_fundamental/stock_mda_ym.py +0 -40
  342. akshare-1.14.49.dist-info/RECORD +0 -387
  343. {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info}/top_level.txt +0 -0
@@ -8,6 +8,7 @@ https://data.eastmoney.com/xg/xg/dxsyl.html
8
8
  东方财富网-数据中心-新股数据-新股申购与中签查询
9
9
  https://data.eastmoney.com/xg/xg/default_2.html
10
10
  """
11
+
11
12
  import pandas as pd
12
13
  import requests
13
14
 
@@ -93,14 +94,30 @@ def stock_dxsyl_em() -> pd.DataFrame:
93
94
  ]
94
95
  big_df["发行价"] = pd.to_numeric(big_df["发行价"], errors="coerce")
95
96
  big_df["最新价"] = pd.to_numeric(big_df["最新价"], errors="coerce")
96
- big_df["网上-发行中签率"] = pd.to_numeric(big_df["网上-发行中签率"], errors="coerce")
97
- big_df["网上-有效申购股数"] = pd.to_numeric(big_df["网上-有效申购股数"], errors="coerce")
98
- big_df["网上-有效申购户数"] = pd.to_numeric(big_df["网上-有效申购户数"], errors="coerce")
99
- big_df["网上-超额认购倍数"] = pd.to_numeric(big_df["网上-超额认购倍数"], errors="coerce")
100
- big_df["网下-配售中签率"] = pd.to_numeric(big_df["网下-配售中签率"], errors="coerce")
101
- big_df["网下-有效申购股数"] = pd.to_numeric(big_df["网下-有效申购股数"], errors="coerce")
102
- big_df["网下-有效申购户数"] = pd.to_numeric(big_df["网下-有效申购户数"], errors="coerce")
103
- big_df["网下-配售认购倍数"] = pd.to_numeric(big_df["网下-配售认购倍数"], errors="coerce")
97
+ big_df["网上-发行中签率"] = pd.to_numeric(
98
+ big_df["网上-发行中签率"], errors="coerce"
99
+ )
100
+ big_df["网上-有效申购股数"] = pd.to_numeric(
101
+ big_df["网上-有效申购股数"], errors="coerce"
102
+ )
103
+ big_df["网上-有效申购户数"] = pd.to_numeric(
104
+ big_df["网上-有效申购户数"], errors="coerce"
105
+ )
106
+ big_df["网上-超额认购倍数"] = pd.to_numeric(
107
+ big_df["网上-超额认购倍数"], errors="coerce"
108
+ )
109
+ big_df["网下-配售中签率"] = pd.to_numeric(
110
+ big_df["网下-配售中签率"], errors="coerce"
111
+ )
112
+ big_df["网下-有效申购股数"] = pd.to_numeric(
113
+ big_df["网下-有效申购股数"], errors="coerce"
114
+ )
115
+ big_df["网下-有效申购户数"] = pd.to_numeric(
116
+ big_df["网下-有效申购户数"], errors="coerce"
117
+ )
118
+ big_df["网下-配售认购倍数"] = pd.to_numeric(
119
+ big_df["网下-配售认购倍数"], errors="coerce"
120
+ )
104
121
  big_df["总发行数量"] = pd.to_numeric(big_df["总发行数量"], errors="coerce")
105
122
  big_df["开盘溢价"] = pd.to_numeric(big_df["开盘溢价"], errors="coerce")
106
123
  big_df["首日涨幅"] = pd.to_numeric(big_df["首日涨幅"], errors="coerce")
@@ -151,47 +168,47 @@ def stock_xgsglb_em(symbol: str = "全部股票") -> pd.DataFrame:
151
168
 
152
169
  big_df.rename(
153
170
  columns={
154
- 'ORG_CODE': '-',
155
- 'SECURITY_CODE': '代码',
156
- 'SECUCODE': '带市场标识股票代码',
157
- 'SECURITY_NAME_ABBR': '简称',
158
- 'APPLY_CODE': '申购代码',
159
- 'EXPECT_ISSUE_NUM': '发行总数',
160
- 'PRICE_WAY': '定价方式',
161
- 'ISSUE_PRICE': '发行价格',
162
- 'ISSUE_PE_RATIO': '发行市盈率',
163
- 'APPLY_DATE': '申购日',
164
- 'RESULT_NOTICE_DATE': '发行结果公告日期',
165
- 'SELECT_LISTING_DATE': '上市首日-上市日',
166
- 'ONLINE_ISSUE_NUM': '网上-发行数量',
167
- 'APPLY_AMT_UPPER': '网上-顶格所需资金',
168
- 'APPLY_NUM_UPPER': '网上-申购上限',
169
- 'ONLINE_PAY_DATE': '网上申购缴款日期',
170
- 'ONLINE_REFUND_DATE': '网上申购资金退款日',
171
- 'INFO_CODE': '-',
172
- 'ONLINE_ISSUE_LWR': '中签率',
173
- 'NEWEST_PRICE': '最新价格-价格',
174
- 'CLOSE_PRICE': '首日收盘价',
175
- 'INITIAL_MULTIPLE': '-',
176
- 'PER_SHARES_INCOME': '上市首日-每百股获利',
177
- 'LD_CLOSE_CHANGE': '上市首日-涨幅',
178
- 'TURNOVERRATE': '首日换手率',
179
- 'AMPLITUDE': '首日振幅',
180
- 'ONLINE_APPLY_LOWER': '-',
181
- 'MAIN_BUSINESS': '主营业务',
182
- 'INDUSTRY_PE_RATIO': '行业市盈率',
183
- 'APPLY_AMT_100': '稳获百股需配资金',
184
- 'TAKE_UP_TIME': '资金占用时间',
185
- 'CAPTURE_PROFIT': '上市首日-约合年化收益',
186
- 'APPLY_SHARE_100': '每获配百股需配股数',
187
- 'AVERAGE_PRICE': '上市首日-均价',
188
- 'ORG_VAN': '参与申购人数',
189
- 'VA_AMT': '参与申购资金',
190
- 'ISSUE_PRICE_ADJFACTOR': '-'
171
+ "ORG_CODE": "-",
172
+ "SECURITY_CODE": "代码",
173
+ "SECUCODE": "带市场标识股票代码",
174
+ "SECURITY_NAME_ABBR": "简称",
175
+ "APPLY_CODE": "申购代码",
176
+ "EXPECT_ISSUE_NUM": "发行总数",
177
+ "PRICE_WAY": "定价方式",
178
+ "ISSUE_PRICE": "发行价格",
179
+ "ISSUE_PE_RATIO": "发行市盈率",
180
+ "APPLY_DATE": "申购日",
181
+ "RESULT_NOTICE_DATE": "发行结果公告日期",
182
+ "SELECT_LISTING_DATE": "上市首日-上市日",
183
+ "ONLINE_ISSUE_NUM": "网上-发行数量",
184
+ "APPLY_AMT_UPPER": "网上-顶格所需资金",
185
+ "APPLY_NUM_UPPER": "网上-申购上限",
186
+ "ONLINE_PAY_DATE": "网上申购缴款日期",
187
+ "ONLINE_REFUND_DATE": "网上申购资金退款日",
188
+ "INFO_CODE": "-",
189
+ "ONLINE_ISSUE_LWR": "中签率",
190
+ "NEWEST_PRICE": "最新价格-价格",
191
+ "CLOSE_PRICE": "首日收盘价",
192
+ "INITIAL_MULTIPLE": "-",
193
+ "PER_SHARES_INCOME": "上市首日-每百股获利",
194
+ "LD_CLOSE_CHANGE": "上市首日-涨幅",
195
+ "TURNOVERRATE": "首日换手率",
196
+ "AMPLITUDE": "首日振幅",
197
+ "ONLINE_APPLY_LOWER": "-",
198
+ "MAIN_BUSINESS": "主营业务",
199
+ "INDUSTRY_PE_RATIO": "行业市盈率",
200
+ "APPLY_AMT_100": "稳获百股需配资金",
201
+ "TAKE_UP_TIME": "资金占用时间",
202
+ "CAPTURE_PROFIT": "上市首日-约合年化收益",
203
+ "APPLY_SHARE_100": "每获配百股需配股数",
204
+ "AVERAGE_PRICE": "上市首日-均价",
205
+ "ORG_VAN": "参与申购人数",
206
+ "VA_AMT": "参与申购资金",
207
+ "ISSUE_PRICE_ADJFACTOR": "-",
191
208
  },
192
- inplace=True
209
+ inplace=True,
193
210
  )
194
- big_df['最新价格-累计涨幅'] = big_df['首日收盘价'] / big_df['最新价格-价格']
211
+ big_df["最新价格-累计涨幅"] = big_df["首日收盘价"] / big_df["最新价格-价格"]
195
212
 
196
213
  big_df = big_df[
197
214
  [
@@ -205,39 +222,61 @@ def stock_xgsglb_em(symbol: str = "全部股票") -> pd.DataFrame:
205
222
  "发行价格",
206
223
  "申购日",
207
224
  "中签率",
208
- '稳获百股需配资金',
209
- '最新价格-价格',
210
- '最新价格-累计涨幅',
211
- '上市首日-上市日',
212
- '上市首日-均价',
213
- '上市首日-涨幅',
214
- '上市首日-每百股获利',
215
- '上市首日-约合年化收益',
216
- '发行市盈率',
217
- '行业市盈率',
225
+ "稳获百股需配资金",
226
+ "最新价格-价格",
227
+ "最新价格-累计涨幅",
228
+ "上市首日-上市日",
229
+ "上市首日-均价",
230
+ "上市首日-涨幅",
231
+ "上市首日-每百股获利",
232
+ "上市首日-约合年化收益",
233
+ "发行市盈率",
234
+ "行业市盈率",
218
235
  "参与申购资金",
219
236
  "参与申购人数",
220
237
  ]
221
238
  ]
222
239
  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")
240
+ big_df["网上-发行数量"] = pd.to_numeric(
241
+ big_df["网上-发行数量"], errors="coerce"
242
+ )
243
+ big_df["网上-申购上限"] = pd.to_numeric(
244
+ big_df["网上-申购上限"], errors="coerce"
245
+ )
246
+ big_df["网上-顶格所需资金"] = pd.to_numeric(
247
+ big_df["网上-顶格所需资金"], errors="coerce"
248
+ )
226
249
  big_df["发行价格"] = pd.to_numeric(big_df["发行价格"], errors="coerce")
227
250
  big_df["中签率"] = pd.to_numeric(big_df["中签率"], errors="coerce")
228
- big_df["稳获百股需配资金"] = pd.to_numeric(big_df["稳获百股需配资金"], errors="coerce")
229
- big_df["最新价格-价格"] = pd.to_numeric(big_df["最新价格-价格"], errors="coerce")
230
- big_df["最新价格-累计涨幅"] = pd.to_numeric(big_df["最新价格-累计涨幅"], errors="coerce")
231
- big_df["上市首日-均价"] = pd.to_numeric(big_df["上市首日-均价"], errors="coerce")
232
- big_df["上市首日-涨幅"] = pd.to_numeric(big_df["上市首日-涨幅"], errors="coerce")
233
- big_df["上市首日-每百股获利"] = pd.to_numeric(big_df["上市首日-每百股获利"], errors="coerce")
234
- big_df["上市首日-约合年化收益"] = pd.to_numeric(big_df["上市首日-约合年化收益"], errors="coerce")
251
+ big_df["稳获百股需配资金"] = pd.to_numeric(
252
+ big_df["稳获百股需配资金"], errors="coerce"
253
+ )
254
+ big_df["最新价格-价格"] = pd.to_numeric(
255
+ big_df["最新价格-价格"], errors="coerce"
256
+ )
257
+ big_df["最新价格-累计涨幅"] = pd.to_numeric(
258
+ big_df["最新价格-累计涨幅"], errors="coerce"
259
+ )
260
+ big_df["上市首日-均价"] = pd.to_numeric(
261
+ big_df["上市首日-均价"], errors="coerce"
262
+ )
263
+ big_df["上市首日-涨幅"] = pd.to_numeric(
264
+ big_df["上市首日-涨幅"], errors="coerce"
265
+ )
266
+ big_df["上市首日-每百股获利"] = pd.to_numeric(
267
+ big_df["上市首日-每百股获利"], errors="coerce"
268
+ )
269
+ big_df["上市首日-约合年化收益"] = pd.to_numeric(
270
+ big_df["上市首日-约合年化收益"], errors="coerce"
271
+ )
235
272
  big_df["发行市盈率"] = pd.to_numeric(big_df["发行市盈率"], errors="coerce")
236
273
  big_df["行业市盈率"] = pd.to_numeric(big_df["行业市盈率"], errors="coerce")
237
274
  big_df["参与申购资金"] = pd.to_numeric(big_df["参与申购资金"], errors="coerce")
238
275
  big_df["参与申购人数"] = pd.to_numeric(big_df["参与申购人数"], errors="coerce")
239
276
  big_df["申购日"] = pd.to_datetime(big_df["申购日"], errors="coerce").dt.date
240
- big_df["上市首日-上市日"] = pd.to_datetime(big_df["上市首日-上市日"], errors="coerce").dt.date
277
+ big_df["上市首日-上市日"] = pd.to_datetime(
278
+ big_df["上市首日-上市日"], errors="coerce"
279
+ ).dt.date
241
280
  return big_df
242
281
  else:
243
282
  params = {
@@ -261,15 +300,15 @@ def stock_xgsglb_em(symbol: str = "全部股票") -> pd.DataFrame:
261
300
  r = requests.get(url, params=params)
262
301
  data_json = r.json()
263
302
  temp_df = pd.DataFrame(data_json["result"]["data"])
264
- big_df = pd.concat([big_df, temp_df], ignore_index=True)
303
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
265
304
  big_df.rename(
266
305
  columns={
267
306
  "SECURITY_CODE": "股票代码",
268
307
  "SECURITY_NAME": "股票简称",
269
308
  "TRADE_MARKET_CODE": "-",
270
309
  "APPLY_CODE": "申购代码",
271
- "TRADE_MARKET": "-",
272
- "MARKET_TYPE": "-",
310
+ "TRADE_MARKET": "交易所",
311
+ "MARKET_TYPE": "板块",
273
312
  "ORG_TYPE": "-",
274
313
  "ISSUE_NUM": "发行总数",
275
314
  "ONLINE_ISSUE_NUM": "网上发行",
@@ -320,6 +359,8 @@ def stock_xgsglb_em(symbol: str = "全部股票") -> pd.DataFrame:
320
359
  "股票代码",
321
360
  "股票简称",
322
361
  "申购代码",
362
+ "交易所",
363
+ "板块",
323
364
  "发行总数",
324
365
  "网上发行",
325
366
  "顶格申购需配市值",
@@ -347,7 +388,9 @@ def stock_xgsglb_em(symbol: str = "全部股票") -> pd.DataFrame:
347
388
  big_df["中签缴款日期"] = pd.to_datetime(big_df["中签缴款日期"]).dt.date
348
389
  big_df["发行总数"] = pd.to_numeric(big_df["发行总数"], errors="coerce")
349
390
  big_df["网上发行"] = pd.to_numeric(big_df["网上发行"], errors="coerce")
350
- big_df["顶格申购需配市值"] = pd.to_numeric(big_df["顶格申购需配市值"], errors="coerce")
391
+ big_df["顶格申购需配市值"] = pd.to_numeric(
392
+ big_df["顶格申购需配市值"], errors="coerce"
393
+ )
351
394
  big_df["申购上限"] = pd.to_numeric(big_df["申购上限"], errors="coerce")
352
395
  big_df["发行价格"] = pd.to_numeric(big_df["发行价格"], errors="coerce")
353
396
  big_df["最新价"] = pd.to_numeric(big_df["最新价"], errors="coerce")
@@ -355,8 +398,12 @@ def stock_xgsglb_em(symbol: str = "全部股票") -> pd.DataFrame:
355
398
  big_df["发行市盈率"] = pd.to_numeric(big_df["发行市盈率"], errors="coerce")
356
399
  big_df["行业市盈率"] = pd.to_numeric(big_df["行业市盈率"], errors="coerce")
357
400
  big_df["中签率"] = pd.to_numeric(big_df["中签率"], errors="coerce")
358
- big_df["询价累计报价倍数"] = pd.to_numeric(big_df["询价累计报价倍数"], errors="coerce")
359
- big_df["配售对象报价家数"] = pd.to_numeric(big_df["配售对象报价家数"], errors="coerce")
401
+ big_df["询价累计报价倍数"] = pd.to_numeric(
402
+ big_df["询价累计报价倍数"], errors="coerce"
403
+ )
404
+ big_df["配售对象报价家数"] = pd.to_numeric(
405
+ big_df["配售对象报价家数"], errors="coerce"
406
+ )
360
407
  big_df["涨幅"] = pd.to_numeric(big_df["涨幅"], errors="coerce")
361
408
  big_df["每中一签获利"] = pd.to_numeric(big_df["每中一签获利"], errors="coerce")
362
409
  return big_df
@@ -1,10 +1,11 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2023/4/5 22:05
4
+ Date: 2025/3/19 15:30
5
5
  Desc: 乐咕乐股-股债利差
6
6
  https://legulegu.com/stockdata/equity-bond-spread
7
7
  """
8
+
8
9
  import pandas as pd
9
10
  import requests
10
11
 
@@ -24,11 +25,11 @@ def stock_ebs_lg() -> pd.DataFrame:
24
25
  r = requests.get(
25
26
  url,
26
27
  params=params,
27
- **get_cookie_csrf(url="https://legulegu.com/stockdata/equity-bond-spread")
28
+ **get_cookie_csrf(url="https://legulegu.com/stockdata/equity-bond-spread"),
28
29
  )
29
30
  data_json = r.json()
30
31
  temp_df = pd.DataFrame(data_json["data"])
31
- temp_df["date"] = pd.to_datetime(temp_df["date"]).dt.date
32
+ temp_df["date"] = pd.to_datetime(temp_df["date"], errors="coerce").dt.date
32
33
  temp_df.rename(
33
34
  columns={
34
35
  "date": "日期",
@@ -46,7 +47,7 @@ def stock_ebs_lg() -> pd.DataFrame:
46
47
  "股债利差均线",
47
48
  ]
48
49
  ]
49
- temp_df['日期'] = pd.to_datetime(temp_df['日期']).dt.date
50
+ temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
50
51
  temp_df["沪深300指数"] = pd.to_numeric(temp_df["沪深300指数"], errors="coerce")
51
52
  temp_df["股债利差"] = pd.to_numeric(temp_df["股债利差"], errors="coerce")
52
53
  temp_df["股债利差均线"] = pd.to_numeric(temp_df["股债利差均线"], errors="coerce")
@@ -7,10 +7,10 @@ https://finance.sina.com.cn/esg/
7
7
  """
8
8
 
9
9
  import math
10
+ from akshare.utils.tqdm import get_tqdm
10
11
 
11
12
  import pandas as pd
12
13
  import requests
13
- from tqdm import tqdm
14
14
 
15
15
 
16
16
  def stock_esg_msci_sina() -> pd.DataFrame:
@@ -25,6 +25,7 @@ def stock_esg_msci_sina() -> pd.DataFrame:
25
25
  data_json = r.json()
26
26
  page_num = math.ceil(int(data_json["result"]["data"]["total"]) / 100)
27
27
  big_df = pd.DataFrame()
28
+ tqdm = get_tqdm()
28
29
  for page in tqdm(range(1, page_num + 1), leave=False):
29
30
  headers = {
30
31
  "Referer": "https://finance.sina.com.cn/",
@@ -175,6 +176,7 @@ def stock_esg_rate_sina() -> pd.DataFrame:
175
176
  data_json = r.json()
176
177
  page_num = math.ceil(int(data_json["result"]["data"]["info"]["total"]) / 200)
177
178
  big_df = pd.DataFrame()
179
+ tqdm = get_tqdm()
178
180
  for page in tqdm(range(1, page_num + 1), leave=False):
179
181
  url = f"https://global.finance.sina.com.cn/api/openapi.php/EsgService.getEsgStocks?page={page}&num=200"
180
182
  r = requests.get(url)
@@ -223,10 +225,20 @@ def stock_esg_zd_sina() -> pd.DataFrame:
223
225
  :return: 秩鼎
224
226
  :rtype: pandas.DataFrame
225
227
  """
226
- url = "https://global.finance.sina.com.cn/api/openapi.php/EsgService.getZdEsgStocks?p=1&num=20000"
227
- r = requests.get(url)
228
+ url = "https://global.finance.sina.com.cn/api/openapi.php/EsgService.getZdEsgStocks"
229
+ params = {"p": "1", "num": "100"}
230
+ r = requests.get(url, params=params)
228
231
  data_json = r.json()
229
- big_df = pd.DataFrame(data_json["result"]["data"]["data"])
232
+ tqdm = get_tqdm()
233
+ total_page = math.ceil(int(data_json["result"]["data"]["total"]) / 100)
234
+ temp_list = []
235
+ for page in tqdm(range(1, total_page + 1), leave=False):
236
+ params = {"p": str(page), "num": "100"}
237
+ r = requests.get(url, params=params)
238
+ data_json = r.json()
239
+ temp_df = pd.DataFrame(data_json["result"]["data"]["data"])
240
+ temp_list.append(temp_df)
241
+ big_df = pd.concat(temp_list, ignore_index=True)
230
242
  big_df.rename(
231
243
  columns={
232
244
  "ticker": "股票代码",
@@ -259,10 +271,20 @@ def stock_esg_hz_sina() -> pd.DataFrame:
259
271
  :return: 华证指数
260
272
  :rtype: pandas.DataFrame
261
273
  """
262
- url = "https://global.finance.sina.com.cn/api/openapi.php/EsgService.getHzEsgStocks?p=1&num=20000"
263
- r = requests.get(url)
274
+ url = "https://global.finance.sina.com.cn/api/openapi.php/EsgService.getHzEsgStocks"
275
+ params = {"p": 1, "num": "100"}
276
+ r = requests.get(url, params=params)
264
277
  data_json = r.json()
265
- big_df = pd.DataFrame(data_json["result"]["data"]["data"])
278
+ total_page = math.ceil(int(data_json["result"]["data"]["total"]) / 100)
279
+ big_df = pd.DataFrame()
280
+ tqdm = get_tqdm()
281
+ for page in tqdm(range(1, total_page + 1), leave=False):
282
+ params = {"p": str(page), "num": "100"}
283
+ r = requests.get(url, params=params)
284
+ data_json = r.json()
285
+ temp_df = pd.DataFrame(data_json["result"]["data"]["data"])
286
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
287
+
266
288
  big_df.rename(
267
289
  columns={
268
290
  "date": "日期",
@@ -1,13 +1,14 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2023/4/7 15:22
4
+ Date: 2025/3/18 15:00
5
5
  Desc: 东方财富网-数据中心-年报季报-分红送配
6
6
  https://data.eastmoney.com/yjfp/
7
7
  """
8
8
 
9
9
  import pandas as pd
10
10
  import requests
11
+
11
12
  from akshare.utils.tqdm import get_tqdm
12
13
 
13
14
 
@@ -39,16 +39,24 @@ def stock_fhps_detail_ths(symbol: str = "603444") -> pd.DataFrame:
39
39
  temp_df["实施公告日"] = pd.to_datetime(
40
40
  temp_df["实施公告日"], format="%Y-%m-%d", errors="coerce"
41
41
  ).dt.date
42
- temp_df["A股股权登记日"] = pd.to_datetime(
43
- temp_df["A股股权登记日"], format="%Y-%m-%d", errors="coerce"
44
- ).dt.date
45
- temp_df["A股除权除息日"] = pd.to_datetime(
46
- temp_df["A股除权除息日"], format="%Y-%m-%d", errors="coerce"
47
- ).dt.date
42
+ if "A股股权登记日" in temp_df.columns:
43
+ temp_df["A股股权登记日"] = pd.to_datetime(
44
+ temp_df["A股股权登记日"], format="%Y-%m-%d", errors="coerce"
45
+ ).dt.date
46
+ temp_df["A股除权除息日"] = pd.to_datetime(
47
+ temp_df["A股除权除息日"], format="%Y-%m-%d", errors="coerce"
48
+ ).dt.date
49
+ else:
50
+ temp_df["B股股权登记日"] = pd.to_datetime(
51
+ temp_df["B股股权登记日"], format="%Y-%m-%d", errors="coerce"
52
+ ).dt.date
53
+ temp_df["B股除权除息日"] = pd.to_datetime(
54
+ temp_df["B股除权除息日"], format="%Y-%m-%d", errors="coerce"
55
+ ).dt.date
48
56
  temp_df.sort_values(by=["董事会日期"], ignore_index=True, inplace=True)
49
57
  return temp_df
50
58
 
51
59
 
52
60
  if __name__ == "__main__":
53
- stock_fhps_detail_ths_df = stock_fhps_detail_ths(symbol="603444")
61
+ stock_fhps_detail_ths_df = stock_fhps_detail_ths(symbol="200596")
54
62
  print(stock_fhps_detail_ths_df)
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/2/21 11:00
4
+ Date: 2024/8/15 18:00
5
5
  Desc: 同花顺-数据中心-资金流向
6
6
  同花顺-数据中心-资金流向-个股资金流
7
7
  https://data.10jqka.com.cn/funds/ggzjl/#refCountId=data_55f13c2c_254
@@ -33,7 +33,7 @@ def _get_file_content_ths(file: str = "ths.js") -> str:
33
33
  :rtype: str
34
34
  """
35
35
  setting_file_path = get_ths_js(file)
36
- with open(setting_file_path) as f:
36
+ with open(setting_file_path, encoding="utf-8") as f:
37
37
  file_data = f.read()
38
38
  return file_data
39
39
 
@@ -61,13 +61,14 @@ def stock_fund_flow_individual(symbol: str = "即时") -> pd.DataFrame:
61
61
  "Host": "data.10jqka.com.cn",
62
62
  "Pragma": "no-cache",
63
63
  "Referer": "http://data.10jqka.com.cn/funds/hyzjl/",
64
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36",
64
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
65
+ "Chrome/90.0.4430.85 Safari/537.36",
65
66
  "X-Requested-With": "XMLHttpRequest",
66
67
  }
67
68
  url = "http://data.10jqka.com.cn/funds/ggzjl/field/code/order/desc/ajax/1/free/1/"
68
69
  r = requests.get(url, headers=headers)
69
- soup = BeautifulSoup(r.text, "lxml")
70
- raw_page = soup.find("span", attrs={"class": "page_info"}).text
70
+ soup = BeautifulSoup(r.text, features="lxml")
71
+ raw_page = soup.find(name="span", attrs={"class": "page_info"}).text
71
72
  page_num = raw_page.split("/")[1]
72
73
  if symbol == "3日排行":
73
74
  url = "http://data.10jqka.com.cn/funds/ggzjl/board/3/field/zdf/order/desc/page/{}/ajax/1/free/1/"
@@ -96,12 +97,13 @@ def stock_fund_flow_individual(symbol: str = "即时") -> pd.DataFrame:
96
97
  "Host": "data.10jqka.com.cn",
97
98
  "Pragma": "no-cache",
98
99
  "Referer": "http://data.10jqka.com.cn/funds/hyzjl/",
99
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36",
100
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
101
+ "Chrome/90.0.4430.85 Safari/537.36",
100
102
  "X-Requested-With": "XMLHttpRequest",
101
103
  }
102
104
  r = requests.get(url.format(page), headers=headers)
103
105
  temp_df = pd.read_html(StringIO(r.text))[0]
104
- big_df = pd.concat([big_df, temp_df], ignore_index=True)
106
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
105
107
 
106
108
  del big_df["序号"]
107
109
  big_df.reset_index(inplace=True)
@@ -155,15 +157,16 @@ def stock_fund_flow_concept(symbol: str = "即时") -> pd.DataFrame:
155
157
  "Host": "data.10jqka.com.cn",
156
158
  "Pragma": "no-cache",
157
159
  "Referer": "http://data.10jqka.com.cn/funds/gnzjl/",
158
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36",
160
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
161
+ "Chrome/90.0.4430.85 Safari/537.36",
159
162
  "X-Requested-With": "XMLHttpRequest",
160
163
  }
161
164
  url = (
162
165
  "http://data.10jqka.com.cn/funds/gnzjl/field/tradezdf/order/desc/ajax/1/free/1/"
163
166
  )
164
167
  r = requests.get(url, headers=headers)
165
- soup = BeautifulSoup(r.text, "lxml")
166
- raw_page = soup.find("span", attrs={"class": "page_info"}).text
168
+ soup = BeautifulSoup(r.text, features="lxml")
169
+ raw_page = soup.find(name="span", attrs={"class": "page_info"}).text
167
170
  page_num = raw_page.split("/")[1]
168
171
  if symbol == "3日排行":
169
172
  url = "http://data.10jqka.com.cn/funds/gnzjl/board/3/field/tradezdf/order/desc/page/{}/ajax/1/free/1/"
@@ -192,12 +195,13 @@ def stock_fund_flow_concept(symbol: str = "即时") -> pd.DataFrame:
192
195
  "Host": "data.10jqka.com.cn",
193
196
  "Pragma": "no-cache",
194
197
  "Referer": "http://data.10jqka.com.cn/funds/gnzjl/",
195
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36",
198
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
199
+ "Chrome/90.0.4430.85 Safari/537.36",
196
200
  "X-Requested-With": "XMLHttpRequest",
197
201
  }
198
202
  r = requests.get(url.format(page), headers=headers)
199
203
  temp_df = pd.read_html(StringIO(r.text))[0]
200
- big_df = pd.concat([big_df, temp_df], ignore_index=True)
204
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
201
205
 
202
206
  del big_df["序号"]
203
207
  big_df.reset_index(inplace=True)
@@ -259,15 +263,16 @@ def stock_fund_flow_industry(symbol: str = "即时") -> pd.DataFrame:
259
263
  "Host": "data.10jqka.com.cn",
260
264
  "Pragma": "no-cache",
261
265
  "Referer": "http://data.10jqka.com.cn/funds/hyzjl/",
262
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36",
266
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
267
+ "Chrome/90.0.4430.85 Safari/537.36",
263
268
  "X-Requested-With": "XMLHttpRequest",
264
269
  }
265
270
  url = (
266
271
  "http://data.10jqka.com.cn/funds/hyzjl/field/tradezdf/order/desc/ajax/1/free/1/"
267
272
  )
268
273
  r = requests.get(url, headers=headers)
269
- soup = BeautifulSoup(r.text, "lxml")
270
- raw_page = soup.find("span", attrs={"class": "page_info"}).text
274
+ soup = BeautifulSoup(r.text, features="lxml")
275
+ raw_page = soup.find(name="span", attrs={"class": "page_info"}).text
271
276
  page_num = raw_page.split("/")[1]
272
277
  if symbol == "3日排行":
273
278
  url = "http://data.10jqka.com.cn/funds/hyzjl/board/3/field/tradezdf/order/desc/page/{}/ajax/1/free/1/"
@@ -296,12 +301,13 @@ def stock_fund_flow_industry(symbol: str = "即时") -> pd.DataFrame:
296
301
  "Host": "data.10jqka.com.cn",
297
302
  "Pragma": "no-cache",
298
303
  "Referer": "http://data.10jqka.com.cn/funds/hyzjl/",
299
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36",
304
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
305
+ "Chrome/90.0.4430.85 Safari/537.36",
300
306
  "X-Requested-With": "XMLHttpRequest",
301
307
  }
302
308
  r = requests.get(url.format(page), headers=headers)
303
309
  temp_df = pd.read_html(StringIO(r.text))[0]
304
- big_df = pd.concat([big_df, temp_df], ignore_index=True)
310
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
305
311
 
306
312
  del big_df["序号"]
307
313
  big_df.reset_index(inplace=True)
@@ -361,13 +367,14 @@ def stock_fund_flow_big_deal() -> pd.DataFrame:
361
367
  "Host": "data.10jqka.com.cn",
362
368
  "Pragma": "no-cache",
363
369
  "Referer": "http://data.10jqka.com.cn/funds/hyzjl/",
364
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36",
370
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
371
+ "Chrome/90.0.4430.85 Safari/537.36",
365
372
  "X-Requested-With": "XMLHttpRequest",
366
373
  }
367
374
  url = "http://data.10jqka.com.cn/funds/ddzz/order/desc/ajax/1/free/1/"
368
375
  r = requests.get(url, headers=headers)
369
- soup = BeautifulSoup(r.text, "lxml")
370
- raw_page = soup.find("span", attrs={"class": "page_info"}).text
376
+ soup = BeautifulSoup(r.text, features="lxml")
377
+ raw_page = soup.find(name="span", attrs={"class": "page_info"}).text
371
378
  page_num = raw_page.split("/")[1]
372
379
  url = "http://data.10jqka.com.cn/funds/ddzz/order/asc/page/{}/ajax/1/free/1/"
373
380
  big_df = pd.DataFrame()
@@ -387,12 +394,13 @@ def stock_fund_flow_big_deal() -> pd.DataFrame:
387
394
  "Host": "data.10jqka.com.cn",
388
395
  "Pragma": "no-cache",
389
396
  "Referer": "http://data.10jqka.com.cn/funds/hyzjl/",
390
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36",
397
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
398
+ "Chrome/90.0.4430.85 Safari/537.36",
391
399
  "X-Requested-With": "XMLHttpRequest",
392
400
  }
393
401
  r = requests.get(url.format(page), headers=headers)
394
402
  temp_df = pd.read_html(StringIO(r.text))[0]
395
- big_df = pd.concat([big_df, temp_df], ignore_index=True)
403
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
396
404
 
397
405
  big_df.columns = [
398
406
  "成交时间",