{ "cells": [ { "cell_type": "code", "id": "initial_id", "metadata": { "collapsed": true, "ExecuteTime": { "end_time": "2025-05-30T01:21:11.014130Z", "start_time": "2025-05-30T01:01:24.119875Z" } }, "source": [ "import requests\n", "import json\n", "import time\n", "import pandas as pd\n", "from tqdm import tqdm\n", "\n", "headers = {\n", " \"Cookie\": \"__jdv=195278372%7Cdirect%7C-%7Cnone%7C-%7C1748480028960; mba_muid=1748480028960904285855; QRCodeKey=AAEAIN1BeBof-i4Zw8hvr-aG7CQu5u87gNXaRTDWEIyObJwJ; wlfstk_smdl=0zlr8a4uh5xi9n7wneoe7f1dtg3gmf4m; flash=3_Ph0N57CFsjJX7qJrf3jFhR2KtGaskdDyz0uaOe7M5cv8HXomGD7XAONhQEW4AdogODQVOMcvo7cAhnCtVRgeA_KEbDojTjBLROXbXXsH4dVDIUml_To2aRXuy7ifznU4E7gFgs6ztENk6VvYDzHM4XM4tzN8JA6ZinxiQEuhb7shI3tgFrbSG3LyTAyh3c1PHbU7; pin=%E5%85%BB%E8%BD%A6%E9%A9%BF%E6%A0%88%E4%B8%87%E6%B1%9F%E5%BA%97; unick=3x31uabda90cvn; thor=5EE400E7603F4FFFA56C15D1CDCE1ED2D696342F9B7D93B6828A585300D929E228AC00481EB0071D930EDA11CE005878BA99AE6501BFB4FCD664ED18C983B851317700EABE9412AAD1B2EFDBEE79D68BA7935E2CFA41531DDA2495DF925EEB38DE0E6D565E0AEA561263D27E127BA1C5A5A265A54FF2134462E28C15625847DAEA9838BA7CC226743C3AF780F4B4B1BD; light_key=AASBKE7rOxgWQziEhC_QY6yatak8Gj94PuPDJNKicqqnLhtyKqgNkVJhNXp4h31u--XoD8uMz5ZWORXUv1A4IKSjEqNTig; JD_UUID=d86ad331-9452-4965-81c4-871c9f622c8b; yunxiupin=%E5%85%BB%E8%BD%A6%E9%A9%BF%E6%A0%88%E4%B8%87%E6%B1%9F%E5%BA%97; bmall_id=8C9AFA76560E12B6116B47CE33B5ADF63E6941F825D9D52F317A543390F95D20700ADD2EE1D0F1C4F46929C1CA9A55D64D024C865A5C48C5E46BAEDB85601A47B4EFD44CB97863068AB4C1C1C9C0E633705B049FDACD382DDB3EA269F0E2D8DA63F3B5C6443C3B2DB12D9130CF7E5685; UUID=3b5708c5-aae1-4b91-83bd-606bb5a4c08d; SESSION_USER_NAME=%E7%8E%8B%E6%AD%A6%E6%96%8C; mba_sid=17485072577312005509178.0; 3AB9D23F7A4B3C9B=U3G6MJASLF6FOBCVPW5GOBPXFAUBK6VWDNALTH6W6EYUEBTPGQXLGP6A4P5CTRP5C6TQMFZLHYTECKB72KSKAPDORM; __jda=241039512.1748480028960904285855.1748480028.1748489963.1748495804.3; __jdc=241039512; __jdb=241039512.135.1748480028960904285855|3.1748495804\",\n", " \"Referer\": \"https://jch1.yunxiu.com/legend/account?refer=float-menu\",\n", " \"Sec-Ch-Ua\": '\"Not=A?Brand\";v=\"99\", \"Chromium\";v=\"118\"',\n", " \"Sec-Ch-Ua-Mobile\": \"?0\",\n", " \"Sec-Ch-Ua-Platform\": '\"Windows\"',\n", " \"Sec-Fetch-Dest\": \"empty\",\n", " \"Sec-Fetch-Mode\": \"cors\",\n", " \"Sec-Fetch-Site\": \"same-origin\",\n", " \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.1.2 Safari/537.36 JiSu/118.0.1.2\",\n", " \"X-Requested-With\": \"XMLHttpRequest\"\n", "}\n", "\n", "all_data = []\n", "number = 1748507284349\n", "page = 1\n", "max_retries = 5 # 最大重试次数\n", "backoff_factor = 1 # 指数退避因子\n", "# sort = \"sortByCardNumberType,ASC\"\n", "# sort = \"sortByCardNumberType,DESC\"\n", "# sort = \"sortByTotalBalanceType,ASC\"\n", "sort = \"sortByTotalBalanceType,DESC\"\n", "for page in tqdm(range(1,1001)):\n", " url = f\"https://jch1.yunxiu.com/legend/account/search?page={page}&sort={sort}&_={number}\" # 注意url\n", " data = f'page={page}&_={number}'\n", "\n", " attempt = 0\n", " while attempt < max_retries:\n", " try:\n", " response = requests.get(url=url, headers=headers, data=data)\n", " response.raise_for_status()\n", " # print(response.json())\n", " # break# 如果响应状态码不是200,则抛出HTTPError异常\n", " res = response.json().get(\"data\", {}).get(\"content\", [])\n", "\n", " for item in res:\n", " base_info = {k: v for k, v in item.items() if k != \"licenseList\"}\n", " if \"licenseList\" in item and isinstance(item[\"licenseList\"], list):\n", " for new_item in item[\"licenseList\"]:\n", " row = base_info.copy()\n", " row.update({\"car\": new_item})\n", " all_data.append(row)\n", " else:\n", " # 如果没有licenseList或者它不是列表,则直接添加基本信息\n", " all_data.append(base_info)\n", "\n", " break # 成功后退出重试循环\n", " except requests.exceptions.RequestException as e:\n", " print(f\"第{page}页请求失败: {e}\")\n", " if attempt < max_retries - 1:\n", " sleep_time = backoff_factor * (2 ** attempt) # 计算等待时间\n", " print(f\"准备第{attempt + 1}次重试,等待{sleep_time}秒...\")\n", " time.sleep(sleep_time) # 等待一段时间后重试\n", " else:\n", " print(f\"达到最大重试次数,跳过第{page}页\")\n", " attempt += 1\n", "\n", " number += 1\n", " time.sleep(1)\n", "\n", "df1 = pd.DataFrame(all_data)\n", "df1.to_excel(fr\"D:\\Idea Project\\F6+宜搭+其它(1)\\new\\文件输出\\京东云修数据导出-养车驿栈万江店{sort}.xlsx\")\n" ], "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 1000/1000 [19:45<00:00, 1.19s/it]\n" ] } ], "execution_count": 4 } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.6" } }, "nbformat": 4, "nbformat_minor": 5 }