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) 問題解決