使用pd.read_json()提取网页中的json数据?

2024-05-16 01:06:27 发布

您现在位置:Python中文网/ 问答频道 /正文

正在尝试从此页“https://www.hkex.com.hk/Market-Data/Statistics/Consolidated-Reports/Monthly-Bulletin?sc_lang=en#select1=0&select2=28”提取表。通过chorme的inspect/network功能,数据请求链接为“https://www.hkex.com.hk/eng/stat/smstat/mthbull/rpt_turnover_short_selling_current_month_1910.json?_=1574650413485”。直接访问时,此链接看起来像json格式。但是,使用此链接的代码不起作用

我的代码:

import pandas as pd

url="https://www.hkex.com.hk/eng/stat/smstat/mthbull/rpt_turnover_short_selling_current_month_1910.json?_=1574650413485"

df = pd.read_json(url)
print(df.info(verbose=True))
print(df)

还尝试:

url="https://www.hkex.com.hk/eng/stat/smstat/mthbull/rpt_turnover_short_selling_current_month_1910.json?"

Tags: httpscomjson链接wwwengstatshort
1条回答
网友
1楼 · 发布于 2024-05-16 01:06:27

您可以尝试先下载json,然后将其转换回DataFrame

import pandas as pd

url='https://www.hkex.com.hk/eng/stat/smstat/mthbull/rpt_turnover_short_selling_current_month_1910.json?_=1574650413485'

import urllib.request, json 
with urllib.request.urlopen(url) as r:
    data = json.loads(r.read().decode())

df = pd.DataFrame(data['tables'][0]['body'])
columns = [item['text'] for item in data['tables'][0]['header']]
row_count = max(df['row'])
new_df = pd.DataFrame(df.text.values.reshape((row_count,-1)),columns = columns)

相关问题 更多 >