报错已解决requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

本篇博客是源于批量下载抖音视频时,在做简单的逆向时出现了报错

报错代码

import requests

headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0',
    'Referer':'https://www.douyin.com/user/MS4wLjABAAAApS8G4x1k10StKWUjcUv0nhgo5h4Zio_cfCH5Yjvs0gc',
    'Cookie':'passport_assist_user=CjzN9q6D62l6xNGbvKs90Awo-97ySO38jm04rccGnmmOL0ncooKYb4PU5IarVqe1sJAFZusMm9_4H4JOV7AaSgo83u9uPI0e-DadsYcKAfDVehxrgCwSYB6zmsDkmjNBVAXDHmK3Od6KCYloqd0wihy02kfLBkMs_b9sxN3AEMrDxw0Yia_WVCABIgEDweyB5A%3D%3D; sid_guard=015ef7a117531a542c3743f347e8c88d%7C1706094705%7C5183999%7CSun%2C+24-Mar-2024+11%3A11%3A44+GMT; live_use_vvc=%22false%22; odin_tt=0a5844165aba7e955438f75ee91bccc3e9db7c17f742bcc8dac3df47c5b0aa886bc044f22d1036c0a039315caf33b2d7; ttwid=1%7CG6lGqi6Ff4CkL7CvVzZUs1d4p1Wlhjt7HJ-6y-m_a10%7C1718359839%7C578cb6fbb8035bd5d8eb032a284e62731ea8c52fabea3d5d25ec23812f196784; xgplayer_user_id=540713429609; bd_ticket_guard_client_web_domain=2; SEARCH_RESULT_LIST_TYPE=%22single%22; UIFID_TEMP=51ca78498d256c95a0dced57d4510398a1a949b0b9c77a6623ae0f8de9c0e7bd6687731578462a35e6440cfea2793336ac550de0caae2b478cd3b342aeaddd0d1045737297af70d960bb15840dfad3a9; fpk1=U2FsdGVkX19cn86sMpnxCTyZelruhAHKmxPtHYJH0A9QtcNaEzzNbsK4pQjQ6CdchDqkxJGzFc+KrhSFX5xaXQ==; fpk2=ce58a5260ba4fa9cdedf4886e4cf45c6; UIFID=51ca78498d256c95a0dced57d4510398a1a949b0b9c77a6623ae0f8de9c0e7bd8518c6df8dc1ba20d6e6bb6ae0d8bccfbbd7ed734b1cfdb15ec9080a1a43f5cb352d2ec4cf7d8a37193952af907a9ea8aff2de45b8559b8abb9e76fd347120c94489e9a3b1a9674c74c9c70f42a2e02412dff3b0b09243af287c88767d3c748210dc22dd04d607bd7a72736930e40abbb3610f30e550389ae0855eecbcbe31b8; __live_version__=%221.1.2.2252%22; s_v_web_id=verify_lztf7ywm_4zA5RL96_bnv5_4Uke_BXUL_Vtk8j1ogZmPa; dy_swidth=1536; dy_sheight=960; passport_csrf_token=36f176a3408c79b116c165ea08bb671e; passport_csrf_token_default=36f176a3408c79b116c165ea08bb671e; FORCE_LOGIN=%7B%22videoConsumedRemainSeconds%22%3A180%7D; download_guide=%223%2F20240814%2F0%22; pwa2=%220%7C0%7C3%7C0%22; volume_info=%7B%22isUserMute%22%3Afalse%2C%22isMute%22%3Afalse%2C%22volume%22%3A0.554%7D; csrf_session_id=bde1e0b60df01e805d9e7ecd0a7374ba; strategyABtestKey=%221723711666.941%22; douyin.com; xg_device_score=7.477593348970203; device_web_cpu_core=16; device_web_memory_size=8; architecture=amd64; stream_recommend_feed_params=%22%7B%5C%22cookie_enabled%5C%22%3Atrue%2C%5C%22screen_width%5C%22%3A1536%2C%5C%22screen_height%5C%22%3A960%2C%5C%22browser_online%5C%22%3Atrue%2C%5C%22cpu_core_num%5C%22%3A16%2C%5C%22device_memory%5C%22%3A8%2C%5C%22downlink%5C%22%3A10%2C%5C%22effective_type%5C%22%3A%5C%224g%5C%22%2C%5C%22round_trip_time%5C%22%3A100%7D%22; WallpaperGuide=%7B%22showTime%22%3A1723615106441%2C%22closeTime%22%3A0%2C%22showCount%22%3A1%2C%22cursor1%22%3A28%2C%22cursor2%22%3A0%7D; xgplayer_device_id=80801261586; __ac_nonce=066bdf0a9005b4cc7a7e6; __ac_signature=_02B4Z6wo00f01Y0BWtwAAIDBe2hT-FFUQDmNIV5AAAX-1GGEAB9ZaB21OJ9t.dxPXQdLSMi9oCmEoLE8UKshniY2BUzB8uasIRSDglbF2rGAIsfHWpzbT8WIrkQGBNrwqOMK9dfOyub5Us6905; bd_ticket_guard_client_data=eyJiZC10aWNrZXQtZ3VhcmQtdmVyc2lvbiI6MiwiYmQtdGlja2V0LWd1YXJkLWl0ZXJhdGlvbi12ZXJzaW9uIjoxLCJiZC10aWNrZXQtZ3VhcmQtcmVlLXB1YmxpYy1rZXkiOiJCS2YzVEJvZW5vTFZ5THVzOHRBREhDaGo3elh4MmZUOW9xMW9oK2orSlU2OFEwcnRycU4xNHFQS1U1bHhmajdMNUkvLzNXRkJocktOMW1hb2VWdDk5WlE9IiwiYmQtdGlja2V0LWd1YXJkLXdlYi12ZXJzaW9uIjoxfQ%3D%3D; biz_trace_id=7c5db34b; IsDouyinActive=true; home_can_add_dy_2_desktop=%220%22'
}

url = 'https://www.douyin.com/user/MS4wLjABAAAApS8G4x1k10StKWUjcUv0nhgo5h4Zio_cfCH5Yjvs0gc'
res = requests.get(url, headers=headers)

print(res.json().get("aweme_list"))

在运行此代码时,出现了下图错误

解决问题过程

1、第一步:在解决这个问题时,首先是检查相应内容,在调用res.json之前,先检查res.text或者res.content,然后发现可以正常返回信息,如下图所示    

2、第二步:检查HTTP相应状态码,在代码中尝试打印response.status_code,确保请求成功,当状态码是200时,则请求成功,如果状态码不是200,可能是请求失败或者返回了错误信息

3、第三步:检查URL和请求参数,在这一步解决了报错,

在网页中打开检查,依次点击网络>Fetch/XHR>post>标头,在标头中可以查看各种参数,其中有请求URL(标黄的部分),在起初代码中的URL我放的是该网页的URL并不是请求URL,因此报错起初放的是这个URL

4、第四步:如果大家通过前三步都没有解决问题,还可以尝试一下最后一种

有可能服务器在某些情况下返回了非JSON格式的数据。大家可以在解析JSON之前检查响应头部,看是否返回了正确的内容类型。打印一下 res.headers['Content-Type'] 是否结合上图中的数据类型一样,如果不一样,大家可以在headers中进行强制转换一下。

正确结果展示

上图为获取JSON数据类型的信息

猜你喜欢

转载自blog.csdn.net/YCH0309/article/details/141231719