如何将Json数据提取到pandas df?

问题描述 投票:0回答:2

[尝试从this page中提取新闻标题。屏幕上显示的数据看起来像json格式。每个nodeid是一个新闻条目。但是,以下代码不起作用:

import pandas as pd
urlco = "https://www.mpfinance.com/fin/getlisting.php?block=daily&startissue=20200118&fixiss=1"

print(urlco)
dfA = pd.read_json(urlco)
print(dfA)
json pandas extract
2个回答
2
投票

这里的问题是,您尝试加载的json格式不符合自动加载大熊猫的正确格式。进行一些光控操作可获得预期的结果。

以下代码应该起作用:

import pandas as pd
import json, urllib

url = "https://www.mpfinance.com/fin/getlisting.php?block=daily&startissue=20200118&fixiss=1"

response = urllib.request.urlopen(url)
data = json.loads(response.read())

df = pd.DataFrame.from_records(data.get('listing'))

# print(df.head(2))
    nodeid  docissue    docsection  sectionname     docparent   parentname  ordertext   heading1    heading2    alt     summary     time    time2   pubdate     pubdate2    link    tag     author  imprate     realnativeads   bimage  video   videoplayer
0   1579286154686   20200118    S00002  財經  S00001  報章內容    eaa1    中國出生率70年最低 失人口紅利 勞動人口連降8年 人均收入增速低過GDP       中國出生率70年最低 失人口紅利 勞動人口連降8年 人均收入增速低過GDP   【明報專訊】國家統計局昨日公布2019年主要經濟數據,全年GDP增速6.1%,守住6%至6.5%的官方目標區間,GDP總...     2020-01-18 04:30:00         2020年1月18日  2020-1-18   ../fin/daily2.php?node=1579286154686&issue=20200118     經濟;             False   https://fs.mingpao.com/fin/20200118/s00002/0fe56067030fcabe89cf843bc312b479.jpg         
1   1579286155903   20200118    S00002  財經  S00001  報章內容    eaa2    去年GDP增6.1% 第4季保六靠投資         去年GDP增6.1% 第4季保六靠投資     【明報專訊】國家統計局昨日公布2019年中國經濟數據,去年第四季GDP增速6%,與第三季持平,全年GDP則增長6.1%,...     2020-01-18 04:30:00         2020年1月18日  2020-1-18   ../fin/daily2.php?node=1579286155903&issue=20200118     經濟;             False   https://fs.mingpao.com/fin/20200118/s00002/0fe58f80b880233386a37a7fb11ea929.jpg     ```

0
投票

您可以尝试以下方法:

import json
import pandas as pd
from urllib.request import urlopen
urlco = "https://www.mpfinance.com/fin/getlisting.php?block=daily&startissue=20200118&fixiss=1"
response = urlopen(urlco)
response = response.read().decode('utf-8-sig')
result = json.loads(response)
df = pd.DataFrame(result['listing'])
print(df.head())
          nodeid  docissue docsection sectionname docparent parentname  \
0  1579286154686  20200118     S00002          財經    S00001       報章內容   
1  1579286155903  20200118     S00002          財經    S00001       報章內容   
2  1579286156356  20200118     S00002          財經    S00001       報章內容   
3  1579286156402  20200118     S00002          財經    S00001       報章內容   
4  1579286156808  20200118     S00002          財經    S00001       報章內容   

  ordertext                               heading1 heading2  \
0      eaa1  中國出生率70年最低 失人口紅利 勞動人口連降8年 人均收入增速低過GDP            
1      eaa2                    去年GDP增6.1% 第4季保六靠投資            
2      eaa3                   人行全周淨投放9000億 創單周歷史新高            
3      eab1                    去年港銀貸款增6.7% 料今年息差受壓            
4      eab2                         招行業績快報 去年多賺15%            

                                     alt  ...     pubdate   pubdate2  \
0  中國出生率70年最低 失人口紅利 勞動人口連降8年 人均收入增速低過GDP  ...  2020年1月18日  2020-1-18   
1                    去年GDP增6.1% 第4季保六靠投資  ...  2020年1月18日  2020-1-18   
2                   人行全周淨投放9000億 創單周歷史新高  ...  2020年1月18日  2020-1-18   
3                    去年港銀貸款增6.7% 料今年息差受壓  ...  2020年1月18日  2020-1-18   
4                         招行業績快報 去年多賺15%  ...  2020年1月18日  2020-1-18   

                                                link  tag author imprate  \
0  ../fin/daily2.php?node=1579286154686&issue=202...  經濟;                  
1  ../fin/daily2.php?node=1579286155903&issue=202...  經濟;                  
2  ../fin/daily2.php?node=1579286156356&issue=202...  經濟;                  
3  ../fin/daily2.php?node=1579286156402&issue=202...  經濟;                  
4  ../fin/daily2.php?node=1579286156808&issue=202...  經濟;                  

  realnativeads                                             bimage video  \
0         False  https://fs.mingpao.com/fin/20200118/s00002/0fe...         
1         False  https://fs.mingpao.com/fin/20200118/s00002/0fe...         
2         False                                                            
3         False  https://fs.mingpao.com/fin/20200118/s00002/0fe...         
4         False                                                            

   videoplayer  
0               
1               
2               
3               
4               

[5 rows x 23 columns]
© www.soinside.com 2019 - 2024. All rights reserved.