63248


PythonでAPIで取得したJSONをデータフレーム化したいと考えていますが、うまく行かないです。

[code]

    import requests
    import pandas as pd
    
    url = 'https://newspicks.com/'
    hb_count = 'http://api.b.st-hatena.com/entrylist/json?mode=rss&threshold=1000'
    
    r = requests.get(hb_count, params={'url': url})
    
    print(r.json())
    
[/code]

エラーはJSONDecodeError: Expecting valueです。  
おそらく最初の`(`と最後の`);`が邪魔なのだと思っているのですが、rがテキスト型じゃないようでstripできなく、詰まっています。

お力を貸していただける方、どうぞよろしくおねがいします。


CC BY-SA 4.0
2020-02-16T17:04:35.947
63096
2020-02-22T04:01:24.383
12457
question
python json pandas
PythonでAPIで取得したJSONをデータフレーム化したい


[コメント](https://ja.stackoverflow.com/questions/63096/python%e3%81%a7api%e3%81%a7%e5%8f%96%e5%be%97%e3%81%97%e3%81%9fjson%e3%82%92%e3%83%87%e3%83%bc%e3%82%bf%e3%83%95%e3%83%ac%e3%83%bc%e3%83%a0%e5%8c%96%e3%81%97%e3%81%9f%e3%81%84#comment69092_63096)を[回答として転記](https://ja.meta.stackoverflow.com/q/2645/9820)いたします。

> `r.text(response data)`の内容を見るとJSON形式としては illegal
> なので(全体を`();`で囲まれている)、json_data = json.loads(r.text[1:-2]) とするとよろしいかと。

下記のコードでエラーを解消できます。

[code]

    import requests
    #import pandas as pd
    import json
    
    url = 'https://newspicks.com/'
    hb_count = 'http://api.b.st-hatena.com/entrylist/json?mode=rss&threshold=1000'
    
    r = requests.get(hb_count, params={'url': url})
    print(r.text)  # ([{"title":"\u30d3\u30b8..."}]);
    json_data = json.loads(r.text[1:-2])
    print(json_data)
    
[/code]


CC BY-SA 4.0
2020-02-22T04:01:24.383
63248
2020-02-22T04:01:24.383
9820
63096
answer