akshare 1.12.99__py3-none-any.whl → 1.15.72__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.
Potentially problematic release.
This version of akshare might be problematic. Click here for more details.
- akshare/__init__.py +441 -138
- akshare/air/air_hebei.py +79 -53
- akshare/air/air_zhenqi.py +29 -43
- akshare/air/sunrise_tad.py +32 -17
- akshare/bank/bank_cbirc_2020.py +12 -9
- akshare/bond/bond_cb_ths.py +17 -9
- akshare/bond/bond_china.py +38 -39
- akshare/bond/bond_china_money.py +75 -48
- akshare/bond/bond_info_cm.py +28 -8
- akshare/bond/bond_issue_cninfo.py +73 -30
- akshare/bond/bond_zh_cov.py +1 -1
- akshare/bond/bond_zh_sina.py +57 -51
- akshare/cal/__init__.py +0 -0
- akshare/cal/rv.py +170 -0
- akshare/cost/cost_living.py +7 -5
- akshare/currency/currency_safe.py +7 -6
- akshare/data/cninfo.js +15 -0
- akshare/datasets.py +10 -21
- akshare/economic/macro_bank.py +95 -653
- akshare/economic/macro_china.py +772 -1024
- akshare/economic/macro_china_hk.py +65 -243
- akshare/economic/macro_china_nbs.py +24 -7
- akshare/economic/macro_constitute.py +17 -12
- akshare/economic/macro_euro.py +13 -6
- akshare/economic/macro_finance_ths.py +133 -0
- akshare/economic/macro_info_ws.py +100 -0
- akshare/economic/macro_japan.py +5 -4
- akshare/economic/macro_other.py +12 -9
- akshare/economic/macro_usa.py +376 -1940
- akshare/economic/marco_cnbs.py +11 -6
- akshare/energy/energy_carbon.py +94 -125
- akshare/event/migration.py +3 -2
- akshare/exceptions.py +43 -0
- akshare/file_fold/calendar.json +245 -2
- akshare/fortune/fortune_500.py +15 -48
- akshare/fund/fund_amac.py +157 -75
- akshare/fund/fund_em.py +191 -184
- akshare/fund/fund_etf_em.py +16 -15
- akshare/fund/fund_etf_sina.py +71 -23
- akshare/fund/fund_etf_ths.py +93 -0
- akshare/fund/fund_fee_em.py +98 -0
- akshare/fund/fund_portfolio_em.py +60 -50
- akshare/fund/fund_rank_em.py +91 -82
- akshare/fund/fund_report_cninfo.py +63 -48
- akshare/fund/fund_scale_sina.py +20 -10
- akshare/fund/fund_xq.py +139 -109
- akshare/futures/cons.py +8 -31
- akshare/futures/cot.py +185 -137
- akshare/futures/futures_basis.py +97 -32
- akshare/futures/futures_comm_ctp.py +37 -0
- akshare/futures/futures_comm_qihuo.py +74 -45
- akshare/futures/futures_daily_bar.py +121 -184
- akshare/futures/futures_hf_em.py +66 -61
- akshare/futures/futures_hq_sina.py +79 -61
- akshare/futures/futures_index_ccidx.py +6 -3
- akshare/futures/futures_inventory_99.py +61 -272
- akshare/futures/futures_news_shmet.py +4 -2
- akshare/futures/futures_roll_yield.py +12 -25
- akshare/futures/futures_spot_stock_em.py +19 -13
- akshare/futures/futures_stock_js.py +14 -12
- akshare/futures/futures_to_spot.py +38 -33
- akshare/futures/futures_warehouse_receipt.py +75 -71
- akshare/futures/futures_zh_sina.py +5 -5
- akshare/futures/symbol_var.py +18 -13
- akshare/futures_derivative/futures_contract_info_czce.py +60 -52
- akshare/futures_derivative/futures_contract_info_ine.py +43 -34
- akshare/futures_derivative/futures_contract_info_shfe.py +46 -35
- akshare/futures_derivative/futures_cot_sina.py +26 -19
- akshare/futures_derivative/futures_spot_sys.py +21 -8
- akshare/fx/currency_investing.py +19 -285
- akshare/index/index_cflp.py +29 -26
- akshare/index/index_cni.py +86 -88
- akshare/index/index_cons.py +26 -10
- akshare/index/index_cx.py +248 -47
- akshare/index/index_drewry.py +17 -16
- akshare/index/index_option_qvix.py +329 -0
- akshare/index/index_research_fund_sw.py +134 -0
- akshare/index/{index_sw_research.py → index_research_sw.py} +122 -58
- akshare/index/index_spot.py +9 -5
- akshare/index/index_stock_hk.py +35 -16
- akshare/index/index_stock_us_sina.py +1 -1
- akshare/index/index_stock_zh.py +180 -89
- akshare/index/index_stock_zh_csindex.py +15 -369
- akshare/index/index_sw.py +62 -34
- akshare/index/index_yw.py +46 -23
- akshare/index/index_zh_a_scope.py +48 -0
- akshare/index/index_zh_em.py +6 -4
- akshare/interest_rate/interbank_rate_em.py +14 -9
- akshare/movie/artist_yien.py +32 -5
- akshare/movie/movie_yien.py +92 -18
- akshare/movie/video_yien.py +28 -5
- akshare/news/news_baidu.py +78 -44
- akshare/news/news_cctv.py +38 -38
- akshare/news/news_stock.py +6 -3
- akshare/nlp/nlp_interface.py +7 -8
- akshare/option/cons.py +11 -11
- akshare/option/option_comm_qihuo.py +86 -0
- akshare/option/option_commodity.py +178 -51
- akshare/option/option_daily_stats_sse_szse.py +146 -0
- akshare/option/option_em.py +147 -138
- akshare/option/option_finance_sina.py +160 -137
- akshare/option/option_lhb_em.py +62 -56
- akshare/option/option_risk_indicator_sse.py +17 -14
- akshare/other/other_car_cpca.py +934 -0
- akshare/other/{other_car.py → other_car_gasgoo.py} +15 -54
- akshare/qdii/__init__.py +0 -0
- akshare/qdii/qdii_jsl.py +233 -0
- akshare/request.py +117 -0
- akshare/spot/spot_hog_soozhu.py +232 -0
- akshare/spot/spot_price_qh.py +121 -0
- akshare/spot/spot_sge.py +63 -10
- akshare/stock/stock_allotment_cninfo.py +10 -9
- akshare/stock/stock_board_concept_em.py +23 -14
- akshare/stock/stock_board_industry_em.py +40 -34
- akshare/stock/stock_cg_equity_mortgage.py +15 -11
- akshare/stock/stock_cg_guarantee.py +41 -51
- akshare/stock/stock_cg_lawsuit.py +36 -35
- akshare/stock/stock_dividend_cninfo.py +12 -6
- akshare/stock/stock_dzjy_em.py +347 -260
- akshare/stock/stock_fund_em.py +332 -84
- akshare/stock/stock_hk_famous.py +108 -0
- akshare/stock/stock_hk_sina.py +8 -7
- akshare/stock/stock_hold_control_cninfo.py +100 -15
- akshare/stock/stock_hold_control_em.py +4 -3
- akshare/stock/stock_hold_num_cninfo.py +18 -12
- akshare/stock/stock_hot_rank_em.py +2 -1
- akshare/stock/stock_hot_search_baidu.py +5 -2
- akshare/stock/stock_industry_cninfo.py +24 -18
- akshare/stock/stock_industry_pe_cninfo.py +45 -31
- akshare/stock/stock_industry_sw.py +9 -10
- akshare/stock/stock_info.py +25 -15
- akshare/stock/stock_info_em.py +5 -2
- akshare/stock/stock_intraday_em.py +5 -2
- akshare/stock/stock_intraday_sina.py +22 -18
- akshare/stock/stock_ipo_summary_cninfo.py +25 -10
- akshare/stock/stock_new_cninfo.py +32 -19
- akshare/stock/stock_news_cx.py +39 -0
- akshare/stock/stock_profile_cninfo.py +9 -8
- akshare/stock/stock_rank_forecast.py +8 -6
- akshare/stock/stock_share_changes_cninfo.py +18 -14
- akshare/stock/stock_share_hold.py +24 -19
- akshare/stock/stock_summary.py +54 -26
- akshare/stock/stock_us_famous.py +15 -6
- akshare/stock/stock_us_pink.py +7 -5
- akshare/stock/stock_us_sina.py +15 -12
- akshare/stock/stock_xq.py +38 -12
- akshare/stock/stock_zh_a_sina.py +53 -78
- akshare/stock/stock_zh_b_sina.py +32 -55
- akshare/stock/stock_zh_kcb_report.py +11 -9
- akshare/stock/stock_zh_kcb_sina.py +67 -64
- akshare/stock_feature/stock_a_below_net_asset_statistics.py +5 -2
- akshare/stock_feature/stock_a_high_low.py +5 -2
- akshare/stock_feature/stock_a_indicator.py +12 -9
- akshare/stock_feature/stock_a_pe_and_pb.py +27 -6
- akshare/stock_feature/stock_account_em.py +58 -40
- akshare/stock_feature/stock_analyst_em.py +36 -27
- akshare/stock_feature/stock_board_industry_ths.py +136 -400
- akshare/stock_feature/stock_comment_em.py +118 -85
- akshare/stock_feature/stock_concept_futu.py +183 -0
- akshare/stock_feature/stock_cyq_em.py +58 -54
- akshare/stock_feature/stock_disclosure_cninfo.py +147 -102
- akshare/stock_feature/stock_esg_sina.py +216 -11
- akshare/stock_feature/stock_fhps_em.py +60 -25
- akshare/stock_feature/stock_fhps_ths.py +25 -6
- akshare/stock_feature/stock_fund_flow.py +38 -25
- akshare/stock_feature/stock_gdfx_em.py +180 -95
- akshare/stock_feature/stock_gdhs.py +73 -49
- akshare/stock_feature/stock_gpzy_em.py +78 -46
- akshare/stock_feature/stock_hist_em.py +55 -23
- akshare/stock_feature/stock_hk_valuation_baidu.py +20 -8
- akshare/stock_feature/stock_hsgt_em.py +184 -452
- akshare/stock_feature/stock_info.py +52 -29
- akshare/stock_feature/stock_inner_trade_xq.py +39 -31
- akshare/stock_feature/stock_irm_cninfo.py +32 -9
- akshare/stock_feature/stock_jgdy_em.py +41 -38
- akshare/stock_feature/stock_lh_yybpm.py +36 -37
- akshare/stock_feature/stock_lhb_em.py +135 -71
- akshare/stock_feature/stock_lhb_sina.py +93 -46
- akshare/stock_feature/stock_margin_em.py +102 -0
- akshare/stock_feature/{stock_sse_margin.py → stock_margin_sse.py} +21 -15
- akshare/stock_feature/{stock_szse_margin.py → stock_margin_szse.py} +23 -19
- akshare/stock_feature/stock_market_legu.py +13 -8
- akshare/stock_feature/stock_pankou_em.py +72 -34
- akshare/stock_feature/stock_report_em.py +244 -54
- akshare/stock_feature/stock_research_report_em.py +48 -19
- akshare/stock_feature/stock_sns_sseinfo.py +15 -12
- akshare/stock_feature/stock_sy_em.py +86 -33
- akshare/stock_feature/stock_technology_ths.py +152 -120
- akshare/stock_feature/stock_tfp_em.py +35 -13
- akshare/stock_feature/stock_three_report_em.py +119 -77
- akshare/stock_feature/stock_ttm_lyr.py +4 -7
- akshare/stock_feature/stock_value_em.py +83 -0
- akshare/stock_feature/stock_wencai.py +21 -9
- akshare/stock_feature/stock_yjyg_em.py +63 -28
- akshare/stock_feature/stock_zf_pg.py +61 -38
- akshare/stock_feature/stock_zh_valuation_baidu.py +3 -2
- akshare/stock_feature/stock_ztb_em.py +62 -40
- akshare/stock_fundamental/stock_finance.py +150 -58
- akshare/stock_fundamental/stock_finance_ths.py +116 -31
- akshare/stock_fundamental/stock_mda_ym.py +5 -3
- akshare/stock_fundamental/stock_notice.py +29 -15
- akshare/stock_fundamental/stock_profit_forecast_em.py +31 -13
- akshare/stock_fundamental/stock_profit_forecast_ths.py +19 -10
- akshare/stock_fundamental/stock_register_em.py +448 -0
- akshare/stock_fundamental/stock_restricted_em.py +79 -32
- akshare/stock_fundamental/stock_zygc.py +10 -8
- akshare/stock_fundamental/stock_zyjs_ths.py +5 -3
- akshare/tool/trade_date_hist.py +4 -3
- akshare/utils/cons.py +10 -0
- akshare/utils/context.py +43 -0
- akshare/utils/demjson.py +2 -2
- akshare/utils/func.py +26 -0
- akshare/utils/tqdm.py +13 -3
- {akshare-1.12.99.dist-info → akshare-1.15.72.dist-info}/METADATA +52 -69
- akshare-1.15.72.dist-info/RECORD +385 -0
- {akshare-1.12.99.dist-info → akshare-1.15.72.dist-info}/WHEEL +1 -1
- tests/test_func.py +3 -5
- akshare/bond/bond_futures.py +0 -50
- akshare/bond/bond_investing.py +0 -139
- akshare/crypto/crypto_hist_investing.py +0 -249
- akshare/fortune/fortune_it_juzi.py +0 -123
- akshare/futures/futures_international.py +0 -170
- akshare/futures/futures_news_baidu.py +0 -54
- akshare/futures/inventory_data.py +0 -100
- akshare/futures_derivative/futures_index_price_nh.py +0 -61
- akshare/futures_derivative/futures_index_return_nh.py +0 -47
- akshare/futures_derivative/futures_index_volatility_nh.py +0 -51
- akshare/futures_derivative/futures_other_index_nh.py +0 -145
- akshare/index/index_fear_greed_funddb.py +0 -71
- akshare/index/index_investing.py +0 -232
- akshare/sport/sport_olympic_winter.py +0 -39
- akshare/stock_feature/stock_board_concept_ths.py +0 -422
- akshare/stock_fundamental/stock_register.py +0 -292
- akshare-1.12.99.dist-info/RECORD +0 -374
- {akshare-1.12.99.dist-info → akshare-1.15.72.dist-info}/LICENSE +0 -0
- {akshare-1.12.99.dist-info → akshare-1.15.72.dist-info}/top_level.txt +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding:utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Date: 2024/
|
|
4
|
+
Date: 2024/11/23 17:00
|
|
5
5
|
Desc: 东方财富-财经早餐
|
|
6
6
|
https://stock.eastmoney.com/a/czpnc.html
|
|
7
7
|
"""
|
|
@@ -10,6 +10,9 @@ from datetime import datetime
|
|
|
10
10
|
|
|
11
11
|
import pandas as pd
|
|
12
12
|
import requests
|
|
13
|
+
from bs4 import BeautifulSoup
|
|
14
|
+
|
|
15
|
+
from akshare.request import make_request_with_retry_json
|
|
13
16
|
|
|
14
17
|
|
|
15
18
|
def stock_info_cjzc_em() -> pd.DataFrame:
|
|
@@ -37,7 +40,7 @@ def stock_info_cjzc_em() -> pd.DataFrame:
|
|
|
37
40
|
r = requests.get(url, params=params)
|
|
38
41
|
data_json = r.json()
|
|
39
42
|
temp_df = pd.DataFrame(data_json["data"]["list"])
|
|
40
|
-
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
|
43
|
+
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
|
41
44
|
|
|
42
45
|
big_df = big_df[["title", "summary", "showTime", "uniqueUrl"]]
|
|
43
46
|
big_df.rename(
|
|
@@ -200,34 +203,10 @@ def stock_info_global_cls(symbol: str = "全部") -> pd.DataFrame:
|
|
|
200
203
|
:return: 财联社-电报
|
|
201
204
|
:rtype: pandas.DataFrame
|
|
202
205
|
"""
|
|
203
|
-
|
|
204
|
-
url =
|
|
205
|
-
session.get(url) # 获取 cookies
|
|
206
|
-
params = {
|
|
207
|
-
"refresh_type": "1",
|
|
208
|
-
"rn": "10",
|
|
209
|
-
"last_time": "",
|
|
210
|
-
"app": "CailianpressWap",
|
|
211
|
-
"sv": "1",
|
|
212
|
-
}
|
|
213
|
-
ts = pd.Timestamp(pd.Timestamp.now())
|
|
214
|
-
current_time = int(ts.timestamp())
|
|
215
|
-
params.update({"last_time": current_time})
|
|
216
|
-
url = "https://m.cls.cn/nodeapi/telegraphs"
|
|
217
|
-
r = session.get(url, params=params)
|
|
218
|
-
data_json = r.json()
|
|
206
|
+
url = "https://www.cls.cn/nodeapi/telegraphList"
|
|
207
|
+
data_json = make_request_with_retry_json(url, max_retries=10)
|
|
219
208
|
temp_df = pd.DataFrame(data_json["data"]["roll_data"])
|
|
220
|
-
next_time = temp_df["modified_time"].values[-1]
|
|
221
|
-
n = 1
|
|
222
209
|
big_df = temp_df.copy()
|
|
223
|
-
while n < 15:
|
|
224
|
-
params.update({"last_time": next_time})
|
|
225
|
-
r = session.get(url, params=params)
|
|
226
|
-
data_json = r.json()
|
|
227
|
-
temp_df = pd.DataFrame(data_json["data"]["roll_data"])
|
|
228
|
-
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
|
229
|
-
next_time = temp_df["modified_time"].values[-1]
|
|
230
|
-
n += 1
|
|
231
210
|
big_df = big_df[["title", "content", "ctime", "level"]]
|
|
232
211
|
big_df["ctime"] = pd.to_datetime(big_df["ctime"], unit="s", utc=True).dt.tz_convert(
|
|
233
212
|
"Asia/Shanghai"
|
|
@@ -237,7 +216,6 @@ def stock_info_global_cls(symbol: str = "全部") -> pd.DataFrame:
|
|
|
237
216
|
big_df.reset_index(inplace=True, drop=True)
|
|
238
217
|
big_df["发布日期"] = big_df["发布时间"].dt.date
|
|
239
218
|
big_df["发布时间"] = big_df["发布时间"].dt.time
|
|
240
|
-
|
|
241
219
|
if symbol == "重点":
|
|
242
220
|
big_df = big_df[(big_df["等级"] == "B") | (big_df["等级"] == "A")]
|
|
243
221
|
big_df.reset_index(inplace=True, drop=True)
|
|
@@ -248,6 +226,48 @@ def stock_info_global_cls(symbol: str = "全部") -> pd.DataFrame:
|
|
|
248
226
|
return big_df
|
|
249
227
|
|
|
250
228
|
|
|
229
|
+
def stock_info_broker_sina(page: str = "1") -> pd.DataFrame:
|
|
230
|
+
"""
|
|
231
|
+
新浪财经-证券-证券原创
|
|
232
|
+
https://finance.sina.com.cn/roll/index.d.html?cid=221431
|
|
233
|
+
:param page: 页面号
|
|
234
|
+
:type page: str
|
|
235
|
+
:return: 证券原创文章
|
|
236
|
+
:rtype: pandas.DataFrame
|
|
237
|
+
"""
|
|
238
|
+
url = "https://finance.sina.com.cn/roll/index.d.html?cid=221431"
|
|
239
|
+
params = {"page": page}
|
|
240
|
+
r = requests.get(url, params=params)
|
|
241
|
+
r.encoding = "utf-8"
|
|
242
|
+
data_text = r.text
|
|
243
|
+
soup = BeautifulSoup(data_text, features="lxml")
|
|
244
|
+
data = []
|
|
245
|
+
from datetime import datetime
|
|
246
|
+
|
|
247
|
+
current_year = datetime.now().year
|
|
248
|
+
for ul_index in range(0, 11):
|
|
249
|
+
for li_index in range(0, 6):
|
|
250
|
+
a_selector = f"#Main > div:nth-of-type(3) > ul:nth-of-type({ul_index}) > li:nth-of-type({li_index}) > a"
|
|
251
|
+
span_selector = f"#Main > div:nth-of-type(3) > ul:nth-of-type({ul_index}) > li:nth-of-type({li_index}) > span"
|
|
252
|
+
# 获取<a>标签和<span>标签内的文本内容
|
|
253
|
+
a_element = soup.select_one(a_selector)
|
|
254
|
+
span_element = soup.select_one(span_selector)
|
|
255
|
+
if a_element and span_element:
|
|
256
|
+
href = a_element.get("href")
|
|
257
|
+
target = a_element.get("target")
|
|
258
|
+
date = str(current_year) + "年" + span_element.text[1:-1]
|
|
259
|
+
text = a_element.text
|
|
260
|
+
data.append(
|
|
261
|
+
{"href": href, "target": target, "date": date, "text": text}
|
|
262
|
+
)
|
|
263
|
+
|
|
264
|
+
temp_df = pd.DataFrame(data)
|
|
265
|
+
temp_df = temp_df[["date", "text", "href"]]
|
|
266
|
+
temp_df.columns = ["时间", "内容", "链接"]
|
|
267
|
+
temp_df.sort_values(["时间"], ignore_index=True, inplace=True)
|
|
268
|
+
return temp_df
|
|
269
|
+
|
|
270
|
+
|
|
251
271
|
if __name__ == "__main__":
|
|
252
272
|
stock_info_cjzc_em_df = stock_info_cjzc_em()
|
|
253
273
|
print(stock_info_cjzc_em_df)
|
|
@@ -266,3 +286,6 @@ if __name__ == "__main__":
|
|
|
266
286
|
|
|
267
287
|
stock_info_global_cls_df = stock_info_global_cls(symbol="全部")
|
|
268
288
|
print(stock_info_global_cls_df)
|
|
289
|
+
|
|
290
|
+
stock_info_broker_sina_df = stock_info_broker_sina(page="1")
|
|
291
|
+
print(stock_info_broker_sina_df)
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
# -*- coding:utf-8 -*-
|
|
2
2
|
# !/usr/bin/env python
|
|
3
3
|
"""
|
|
4
|
-
Date:
|
|
4
|
+
Date: 2024/11/5 16:00
|
|
5
5
|
Desc: 雪球-行情中心-沪深股市-内部交易
|
|
6
6
|
https://xueqiu.com/hq/insider
|
|
7
7
|
"""
|
|
8
|
+
|
|
8
9
|
import pandas as pd
|
|
9
10
|
import requests
|
|
10
11
|
|
|
@@ -18,10 +19,10 @@ def stock_inner_trade_xq() -> pd.DataFrame:
|
|
|
18
19
|
"""
|
|
19
20
|
url = "https://xueqiu.com/service/v5/stock/f10/cn/skholderchg"
|
|
20
21
|
params = {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
"size": "100000",
|
|
23
|
+
"page": "1",
|
|
24
|
+
"extend": "true",
|
|
25
|
+
"_": "1651223013040",
|
|
25
26
|
}
|
|
26
27
|
headers = {
|
|
27
28
|
"Accept": "*/*",
|
|
@@ -38,39 +39,46 @@ def stock_inner_trade_xq() -> pd.DataFrame:
|
|
|
38
39
|
"Sec-Fetch-Dest": "empty",
|
|
39
40
|
"Sec-Fetch-Mode": "cors",
|
|
40
41
|
"Sec-Fetch-Site": "same-origin",
|
|
41
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
|
|
42
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
43
|
+
"Chrome/100.0.4896.127 Safari/537.36",
|
|
42
44
|
"X-Requested-With": "XMLHttpRequest",
|
|
43
45
|
}
|
|
44
46
|
r = requests.get(url, params=params, headers=headers)
|
|
45
47
|
data_json = r.json()
|
|
46
48
|
temp_df = pd.DataFrame(data_json["data"]["items"])
|
|
47
49
|
temp_df.columns = [
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
50
|
+
"股票代码",
|
|
51
|
+
"股票名称",
|
|
52
|
+
"变动人",
|
|
53
|
+
"-",
|
|
54
|
+
"变动日期",
|
|
55
|
+
"变动股数",
|
|
56
|
+
"成交均价",
|
|
57
|
+
"变动后持股数",
|
|
58
|
+
"与董监高关系",
|
|
59
|
+
"董监高职务",
|
|
60
|
+
]
|
|
61
|
+
temp_df = temp_df[
|
|
62
|
+
[
|
|
63
|
+
"股票代码",
|
|
64
|
+
"股票名称",
|
|
65
|
+
"变动日期",
|
|
66
|
+
"变动人",
|
|
67
|
+
"变动股数",
|
|
68
|
+
"成交均价",
|
|
69
|
+
"变动后持股数",
|
|
70
|
+
"与董监高关系",
|
|
71
|
+
"董监高职务",
|
|
72
|
+
]
|
|
58
73
|
]
|
|
59
|
-
temp_df =
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
'与董监高关系',
|
|
68
|
-
'董监高职务',
|
|
69
|
-
]]
|
|
70
|
-
temp_df['变动日期'] = pd.to_datetime(temp_df['变动日期'], unit="ms").dt.date
|
|
71
|
-
temp_df['变动股数'] = pd.to_numeric(temp_df['变动股数'], errors="coerce")
|
|
72
|
-
temp_df['成交均价'] = pd.to_numeric(temp_df['成交均价'], errors="coerce")
|
|
73
|
-
temp_df['变动后持股数'] = pd.to_numeric(temp_df['变动后持股数'], errors="coerce")
|
|
74
|
+
temp_df["变动日期"] = (
|
|
75
|
+
pd.to_datetime(temp_df["变动日期"], unit="ms", utc=True)
|
|
76
|
+
.dt.tz_convert("Asia/Shanghai")
|
|
77
|
+
.dt.date
|
|
78
|
+
)
|
|
79
|
+
temp_df["变动股数"] = pd.to_numeric(temp_df["变动股数"], errors="coerce")
|
|
80
|
+
temp_df["成交均价"] = pd.to_numeric(temp_df["成交均价"], errors="coerce")
|
|
81
|
+
temp_df["变动后持股数"] = pd.to_numeric(temp_df["变动后持股数"], errors="coerce")
|
|
74
82
|
return temp_df
|
|
75
83
|
|
|
76
84
|
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding:utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Date:
|
|
4
|
+
Date: 2024/5/20 16:00
|
|
5
5
|
Desc: 互动易-提问与回答
|
|
6
6
|
https://irm.cninfo.com.cn/
|
|
7
7
|
"""
|
|
8
|
+
|
|
8
9
|
import pandas as pd
|
|
9
10
|
import requests
|
|
10
|
-
|
|
11
|
+
|
|
12
|
+
from akshare.utils.tqdm import get_tqdm
|
|
11
13
|
|
|
12
14
|
|
|
13
15
|
def _fetch_org_id(symbol: str = "000001") -> str:
|
|
@@ -51,12 +53,13 @@ def stock_irm_cninfo(symbol: str = "002594") -> pd.DataFrame:
|
|
|
51
53
|
total_page = int(data_json["totalPage"])
|
|
52
54
|
total_page = 10 if total_page > 10 else total_page
|
|
53
55
|
big_df = pd.DataFrame()
|
|
56
|
+
tqdm = get_tqdm()
|
|
54
57
|
for page in tqdm(range(1, 1 + total_page), leave=False):
|
|
55
58
|
params.update({"pageNum": page})
|
|
56
59
|
r = requests.post(url, params=params)
|
|
57
60
|
data_json = r.json()
|
|
58
61
|
temp_df = pd.DataFrame(data_json["rows"])
|
|
59
|
-
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
|
62
|
+
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
|
60
63
|
big_df.rename(
|
|
61
64
|
columns={
|
|
62
65
|
"indexId": "问题编号",
|
|
@@ -111,8 +114,18 @@ def stock_irm_cninfo(symbol: str = "002594") -> pd.DataFrame:
|
|
|
111
114
|
]
|
|
112
115
|
big_df["行业"] = [item[0] for item in big_df["行业"]]
|
|
113
116
|
big_df["行业代码"] = [item[0] for item in big_df["行业代码"]]
|
|
114
|
-
big_df["提问时间"] =
|
|
115
|
-
|
|
117
|
+
big_df["提问时间"] = (
|
|
118
|
+
pd.to_datetime(big_df["提问时间"], unit="ms", errors="coerce")
|
|
119
|
+
.dt.tz_localize("UTC")
|
|
120
|
+
.dt.tz_convert("Asia/Shanghai")
|
|
121
|
+
.dt.strftime("%Y-%m-%d %H:%M:%S")
|
|
122
|
+
)
|
|
123
|
+
big_df["更新时间"] = (
|
|
124
|
+
pd.to_datetime(big_df["更新时间"], unit="ms", errors="coerce")
|
|
125
|
+
.dt.tz_localize("UTC")
|
|
126
|
+
.dt.tz_convert("Asia/Shanghai")
|
|
127
|
+
.dt.strftime("%Y-%m-%d %H:%M:%S")
|
|
128
|
+
)
|
|
116
129
|
big_df["来源"] = big_df["来源"].map(
|
|
117
130
|
{
|
|
118
131
|
"2": "APP",
|
|
@@ -120,7 +133,7 @@ def stock_irm_cninfo(symbol: str = "002594") -> pd.DataFrame:
|
|
|
120
133
|
"4": "网站",
|
|
121
134
|
}
|
|
122
135
|
)
|
|
123
|
-
big_df["来源"].fillna("网站"
|
|
136
|
+
big_df["来源"] = big_df["来源"].fillna("网站")
|
|
124
137
|
return big_df
|
|
125
138
|
|
|
126
139
|
|
|
@@ -128,7 +141,7 @@ def stock_irm_ans_cninfo(symbol: str = "1513586704097333248") -> pd.DataFrame:
|
|
|
128
141
|
"""
|
|
129
142
|
互动易-回答
|
|
130
143
|
https://irm.cninfo.com.cn/ircs/question/questionDetail?questionId=1515236357817618432
|
|
131
|
-
:param symbol: 提问者编号; 通过 ak.stock_irm_cninfo 来获取具体的提问者编号
|
|
144
|
+
:param symbol: 提问者编号; 通过 ak.stock_irm_cninfo() 来获取具体的提问者编号
|
|
132
145
|
:type symbol: str
|
|
133
146
|
:return: 回答
|
|
134
147
|
:rtype: str
|
|
@@ -163,8 +176,18 @@ def stock_irm_ans_cninfo(symbol: str = "1513586704097333248") -> pd.DataFrame:
|
|
|
163
176
|
"回答时间",
|
|
164
177
|
]
|
|
165
178
|
]
|
|
166
|
-
temp_df["提问时间"] =
|
|
167
|
-
|
|
179
|
+
temp_df["提问时间"] = (
|
|
180
|
+
pd.to_datetime(temp_df["提问时间"], unit="ms", errors="coerce")
|
|
181
|
+
.dt.tz_localize("UTC")
|
|
182
|
+
.dt.tz_convert("Asia/Shanghai")
|
|
183
|
+
.dt.strftime("%Y-%m-%d %H:%M:%S")
|
|
184
|
+
)
|
|
185
|
+
temp_df["回答时间"] = (
|
|
186
|
+
pd.to_datetime(temp_df["回答时间"], unit="ms", errors="coerce")
|
|
187
|
+
.dt.tz_localize("UTC")
|
|
188
|
+
.dt.tz_convert("Asia/Shanghai")
|
|
189
|
+
.dt.strftime("%Y-%m-%d %H:%M:%S")
|
|
190
|
+
)
|
|
168
191
|
return temp_df
|
|
169
192
|
|
|
170
193
|
|
|
@@ -7,6 +7,7 @@ http://data.eastmoney.com/jgdy/
|
|
|
7
7
|
东方财富网-数据中心-特色数据-机构调研-机构调研统计: http://data.eastmoney.com/jgdy/tj.html
|
|
8
8
|
东方财富网-数据中心-特色数据-机构调研-机构调研详细: http://data.eastmoney.com/jgdy/xx.html
|
|
9
9
|
"""
|
|
10
|
+
|
|
10
11
|
import pandas as pd
|
|
11
12
|
import requests
|
|
12
13
|
from tqdm import tqdm
|
|
@@ -23,26 +24,26 @@ def stock_jgdy_tj_em(date: str = "20220101") -> pd.DataFrame:
|
|
|
23
24
|
"""
|
|
24
25
|
url = "http://datacenter-web.eastmoney.com/api/data/v1/get"
|
|
25
26
|
params = {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
27
|
+
"sortColumns": "NOTICE_DATE,SUM,RECEIVE_START_DATE,SECURITY_CODE",
|
|
28
|
+
"sortTypes": "-1,-1,-1,1",
|
|
29
|
+
"pageSize": "500",
|
|
30
|
+
"pageNumber": "1",
|
|
31
|
+
"reportName": "RPT_ORG_SURVEYNEW",
|
|
32
|
+
"columns": "ALL",
|
|
33
|
+
"quoteColumns": "f2~01~SECURITY_CODE~CLOSE_PRICE,f3~01~SECURITY_CODE~CHANGE_RATE",
|
|
34
|
+
"source": "WEB",
|
|
35
|
+
"client": "WEB",
|
|
36
|
+
"filter": f"""(NUMBERNEW="1")(IS_SOURCE="1")(RECEIVE_START_DATE>'{'-'.join([date[:4], date[4:6], date[6:]])}')""",
|
|
36
37
|
}
|
|
37
38
|
r = requests.get(url, params=params)
|
|
38
39
|
data_json = r.json()
|
|
39
|
-
total_page = data_json[
|
|
40
|
+
total_page = data_json["result"]["pages"]
|
|
40
41
|
big_df = pd.DataFrame()
|
|
41
|
-
for page in tqdm(range(1, total_page+1), leave=False):
|
|
42
|
+
for page in tqdm(range(1, total_page + 1), leave=False):
|
|
42
43
|
params.update({"pageNumber": page})
|
|
43
44
|
r = requests.get(url, params=params)
|
|
44
45
|
data_json = r.json()
|
|
45
|
-
temp_df = pd.DataFrame(data_json[
|
|
46
|
+
temp_df = pd.DataFrame(data_json["result"]["data"])
|
|
46
47
|
big_df = pd.concat([big_df, temp_df])
|
|
47
48
|
big_df.reset_index(inplace=True)
|
|
48
49
|
big_df["index"] = list(range(1, len(big_df) + 1))
|
|
@@ -96,45 +97,47 @@ def stock_jgdy_tj_em(date: str = "20220101") -> pd.DataFrame:
|
|
|
96
97
|
"公告日期",
|
|
97
98
|
]
|
|
98
99
|
]
|
|
99
|
-
big_df[
|
|
100
|
-
big_df[
|
|
101
|
-
big_df[
|
|
102
|
-
big_df[
|
|
103
|
-
big_df[
|
|
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_datetime(big_df["接待日期"]).dt.date
|
|
104
|
+
big_df["公告日期"] = pd.to_datetime(big_df["公告日期"]).dt.date
|
|
104
105
|
return big_df
|
|
105
106
|
|
|
106
107
|
|
|
107
|
-
def stock_jgdy_detail_em(date: str = "
|
|
108
|
+
def stock_jgdy_detail_em(date: str = "20241211") -> pd.DataFrame:
|
|
108
109
|
"""
|
|
109
110
|
东方财富网-数据中心-特色数据-机构调研-机构调研详细
|
|
110
|
-
|
|
111
|
+
https://data.eastmoney.com/jgdy/xx.html
|
|
111
112
|
:param date: 开始时间
|
|
112
113
|
:type date: str
|
|
113
114
|
:return: 机构调研详细
|
|
114
115
|
:rtype: pandas.DataFrame
|
|
115
116
|
"""
|
|
116
|
-
url = "
|
|
117
|
+
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
|
117
118
|
params = {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
119
|
+
"sortColumns": "NOTICE_DATE,RECEIVE_START_DATE,SECURITY_CODE,NUMBERNEW",
|
|
120
|
+
"sortTypes": "-1,-1,1,-1",
|
|
121
|
+
"pageSize": "50",
|
|
122
|
+
"pageNumber": "1",
|
|
123
|
+
"reportName": "RPT_ORG_SURVEY",
|
|
124
|
+
"columns": "SECUCODE,SECURITY_CODE,SECURITY_NAME_ABBR,NOTICE_DATE,RECEIVE_START_DATE,"
|
|
125
|
+
"RECEIVE_OBJECT,RECEIVE_PLACE,RECEIVE_WAY_EXPLAIN,INVESTIGATORS,RECEPTIONIST,ORG_TYPE",
|
|
126
|
+
"quoteColumns": "f2~01~SECURITY_CODE~CLOSE_PRICE,f3~01~SECURITY_CODE~CHANGE_RATE",
|
|
127
|
+
"quoteType": "0",
|
|
128
|
+
"source": "WEB",
|
|
129
|
+
"client": "WEB",
|
|
130
|
+
"filter": f"""(IS_SOURCE="1")(RECEIVE_START_DATE>'{'-'.join([date[:4], date[4:6], date[6:]])}')""",
|
|
128
131
|
}
|
|
129
132
|
r = requests.get(url, params=params)
|
|
130
133
|
data_json = r.json()
|
|
131
|
-
total_page = data_json[
|
|
134
|
+
total_page = data_json["result"]["pages"]
|
|
132
135
|
big_df = pd.DataFrame()
|
|
133
|
-
for page in tqdm(range(1, total_page+1), leave=False):
|
|
136
|
+
for page in tqdm(range(1, total_page + 1), leave=False):
|
|
134
137
|
params.update({"pageNumber": page})
|
|
135
138
|
r = requests.get(url, params=params)
|
|
136
139
|
data_json = r.json()
|
|
137
|
-
temp_df = pd.DataFrame(data_json[
|
|
140
|
+
temp_df = pd.DataFrame(data_json["result"]["data"])
|
|
138
141
|
big_df = pd.concat([big_df, temp_df])
|
|
139
142
|
big_df.reset_index(inplace=True)
|
|
140
143
|
big_df["index"] = list(range(1, len(big_df) + 1))
|
|
@@ -171,10 +174,10 @@ def stock_jgdy_detail_em(date: str = "20220101") -> pd.DataFrame:
|
|
|
171
174
|
"公告日期",
|
|
172
175
|
]
|
|
173
176
|
]
|
|
174
|
-
big_df[
|
|
175
|
-
big_df[
|
|
176
|
-
big_df[
|
|
177
|
-
big_df[
|
|
177
|
+
big_df["最新价"] = pd.to_numeric(big_df["最新价"], errors="coerce")
|
|
178
|
+
big_df["涨跌幅"] = pd.to_numeric(big_df["涨跌幅"], errors="coerce")
|
|
179
|
+
big_df["调研日期"] = pd.to_datetime(big_df["调研日期"], errors="coerce").dt.date
|
|
180
|
+
big_df["公告日期"] = pd.to_datetime(big_df["公告日期"], errors="coerce").dt.date
|
|
178
181
|
return big_df
|
|
179
182
|
|
|
180
183
|
|
|
@@ -1,37 +1,40 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding:utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Date:
|
|
4
|
+
Date: 2024/5/6 20:30
|
|
5
5
|
Desc: 同花顺-数据中心-营业部排名
|
|
6
|
-
|
|
6
|
+
https://data.10jqka.com.cn/market/longhu/
|
|
7
7
|
"""
|
|
8
|
-
|
|
8
|
+
|
|
9
|
+
from io import StringIO
|
|
10
|
+
|
|
9
11
|
import pandas as pd
|
|
10
|
-
|
|
12
|
+
import requests
|
|
11
13
|
from bs4 import BeautifulSoup
|
|
12
14
|
|
|
15
|
+
from akshare.utils.tqdm import get_tqdm
|
|
16
|
+
from akshare.utils.cons import headers
|
|
17
|
+
|
|
13
18
|
|
|
14
19
|
def stock_lh_yyb_most() -> pd.DataFrame:
|
|
15
20
|
"""
|
|
16
21
|
同花顺-数据中心-营业部排名-上榜次数最多
|
|
17
|
-
|
|
22
|
+
https://data.10jqka.com.cn/market/longhu/
|
|
18
23
|
:return: 上榜次数最多
|
|
19
24
|
:rtype: pandas.DataFrame
|
|
20
25
|
"""
|
|
21
|
-
url = "
|
|
22
|
-
headers = {
|
|
23
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36"
|
|
24
|
-
}
|
|
26
|
+
url = "https://data.10jqka.com.cn/ifmarket/lhbyyb/type/1/tab/sbcs/field/sbcs/sort/desc/page/1/"
|
|
25
27
|
r = requests.get(url, headers=headers)
|
|
26
|
-
soup = BeautifulSoup(r.text, "lxml")
|
|
27
|
-
page_str = soup.find("span", attrs={"class": "page_info"}).text
|
|
28
|
+
soup = BeautifulSoup(r.text, features="lxml")
|
|
29
|
+
page_str = soup.find(name="span", attrs={"class": "page_info"}).text
|
|
28
30
|
total_page = int(page_str.split("/")[1]) + 1
|
|
29
31
|
big_df = pd.DataFrame()
|
|
30
|
-
|
|
31
|
-
|
|
32
|
+
tqdm = get_tqdm()
|
|
33
|
+
for page in tqdm(range(1, total_page), leave=False):
|
|
34
|
+
url = f"https://data.10jqka.com.cn/ifmarket/lhbyyb/type/1/tab/sbcs/field/sbcs/sort/desc/page/{page}/"
|
|
32
35
|
r = requests.get(url, headers=headers)
|
|
33
|
-
temp_df = pd.read_html(r.text)[0]
|
|
34
|
-
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
|
36
|
+
temp_df = pd.read_html(StringIO(r.text))[0]
|
|
37
|
+
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
|
35
38
|
big_df.reset_index(inplace=True, drop=True)
|
|
36
39
|
return big_df
|
|
37
40
|
|
|
@@ -39,24 +42,22 @@ def stock_lh_yyb_most() -> pd.DataFrame:
|
|
|
39
42
|
def stock_lh_yyb_capital() -> pd.DataFrame:
|
|
40
43
|
"""
|
|
41
44
|
同花顺-数据中心-营业部排名-资金实力最强
|
|
42
|
-
|
|
45
|
+
https://data.10jqka.com.cn/market/longhu/
|
|
43
46
|
:return: 资金实力最强
|
|
44
47
|
:rtype: pandas.DataFrame
|
|
45
48
|
"""
|
|
46
|
-
url = "
|
|
47
|
-
headers = {
|
|
48
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36"
|
|
49
|
-
}
|
|
49
|
+
url = "https://data.10jqka.com.cn/ifmarket/lhbyyb/type/1/tab/zjsl/field/zgczje/sort/desc/page/1/"
|
|
50
50
|
r = requests.get(url, headers=headers)
|
|
51
|
-
soup = BeautifulSoup(r.text, "lxml")
|
|
52
|
-
page_str = soup.find("span", attrs={"class": "page_info"}).text
|
|
51
|
+
soup = BeautifulSoup(r.text, features="lxml")
|
|
52
|
+
page_str = soup.find(name="span", attrs={"class": "page_info"}).text
|
|
53
53
|
total_page = int(page_str.split("/")[1]) + 1
|
|
54
54
|
big_df = pd.DataFrame()
|
|
55
|
-
|
|
56
|
-
|
|
55
|
+
tqdm = get_tqdm()
|
|
56
|
+
for page in tqdm(range(1, total_page), leave=False):
|
|
57
|
+
url = f"https://data.10jqka.com.cn/ifmarket/lhbyyb/type/1/tab/zjsl/field/zgczje/sort/desc/page/{page}/"
|
|
57
58
|
r = requests.get(url, headers=headers)
|
|
58
|
-
temp_df = pd.read_html(r.text)[0]
|
|
59
|
-
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
|
59
|
+
temp_df = pd.read_html(StringIO(r.text))[0]
|
|
60
|
+
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
|
60
61
|
big_df.reset_index(inplace=True, drop=True)
|
|
61
62
|
return big_df
|
|
62
63
|
|
|
@@ -64,24 +65,22 @@ def stock_lh_yyb_capital() -> pd.DataFrame:
|
|
|
64
65
|
def stock_lh_yyb_control() -> pd.DataFrame:
|
|
65
66
|
"""
|
|
66
67
|
同花顺-数据中心-营业部排名-抱团操作实力
|
|
67
|
-
|
|
68
|
+
https://data.10jqka.com.cn/market/longhu/
|
|
68
69
|
:return: 抱团操作实力
|
|
69
70
|
:rtype: pandas.DataFrame
|
|
70
71
|
"""
|
|
71
|
-
url = "
|
|
72
|
-
headers = {
|
|
73
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36"
|
|
74
|
-
}
|
|
72
|
+
url = "https://data.10jqka.com.cn/ifmarket/lhbyyb/type/1/tab/btcz/field/xsjs/sort/desc/page/1/"
|
|
75
73
|
r = requests.get(url, headers=headers)
|
|
76
|
-
soup = BeautifulSoup(r.text, "lxml")
|
|
77
|
-
page_str = soup.find("span", attrs={"class": "page_info"}).text
|
|
74
|
+
soup = BeautifulSoup(r.text, features="lxml")
|
|
75
|
+
page_str = soup.find(name="span", attrs={"class": "page_info"}).text
|
|
78
76
|
total_page = int(page_str.split("/")[1]) + 1
|
|
79
77
|
big_df = pd.DataFrame()
|
|
80
|
-
|
|
81
|
-
|
|
78
|
+
tqdm = get_tqdm()
|
|
79
|
+
for page in tqdm(range(1, total_page), leave=False):
|
|
80
|
+
url = f"https://data.10jqka.com.cn/ifmarket/lhbyyb/type/1/tab/btcz/field/xsjs/sort/desc/page/{page}/"
|
|
82
81
|
r = requests.get(url, headers=headers)
|
|
83
|
-
temp_df = pd.read_html(r.text)[0]
|
|
84
|
-
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
|
82
|
+
temp_df = pd.read_html(StringIO(r.text))[0]
|
|
83
|
+
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
|
85
84
|
big_df.reset_index(inplace=True, drop=True)
|
|
86
85
|
return big_df
|
|
87
86
|
|