json.decoder.JSONDecodeErrorのトラブルシューティングと解決:期待値:行1列1(文字0)



Troubleshoot Solve Json



Pythonクローラーは、起動時に次のコードでこのエラーを検出しました。
(Pythonバージョン、3.7)

url = https://www.douban.com/j/search_photo?q=Panda&limit=20&start=0 html = requests.get(url).text response = json.loads(html)

実行中のエラー:
json.decoder.JSONDecodeError:期待値:行1列1(文字0)



デバッグを開始します

  • 1最初にhtmlがjsonであるかどうかを確認します
print(html)

結果が空の場合は、エラーの報告を回避するために判断を追加できます



if html : response = json.loads(html)

ただし、エラーを回避するだけでなく、データを取得するために、ここにインターフェイスに直接アクセスするためのデータがあります

  • 2リクエストのコードコードが結果を得る
html = requests.get(url) print(html.status_code)

status_codeは418で、通常のシナリオのコードコードは200である必要があります

  • 3 requests.get()status_code418の問題を解決します
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.3 WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'} url = https://www.douban.com/j/search_photo?q=Panda&limit=20&start=0 html = requests.get(url, headers=headers) print(html.status_code)

現時点では、リクエストは正常であり、返信を受け取ることができます



  • 4比較的エレガントな処理-例外をキャッチする
try: response = json.loads(html.text) except Exception as ex: print(ex)

例外がキャプチャされて印刷された後は、デバッグが簡単になります

これまでのところ、json.decoder.JSONDecodeError:期待値:行1列1(文字0)の問題は解決されています