排查解決 json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

python爬蟲起步時碰到該錯誤,如下代碼:
(python版本,3.7)

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

運行時報錯:
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

開始debug

  • 1 首先驗證 html 是否爲 json
print(html)

結果爲空,那麼可以加判斷,避免報錯

if html :
	response = json.loads(html)

然而 此處接口直接訪問是有數據的,不只要避免報錯,還要拿到數據

  • 2 requests get結果的code碼
html = requests.get(url)
print(html.status_code)

status_code 爲418,正常場景下的code碼應爲200

  • 3 解決requests.get() status_code 418的問題
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=熊貓&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)

異常捕獲打印後,更便於debug

至此,json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 問題解決

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章