{ "cells": [ { "metadata": {}, "cell_type": "markdown", "source": "客户信息导出", "id": "a10af68ca00de50a" }, { "cell_type": "code", "id": "initial_id", "metadata": { "collapsed": true, "ExecuteTime": { "end_time": "2026-01-28T06:27:39.309261100Z", "start_time": "2026-01-28T06:27:31.811575700Z" } }, "source": [ "import requests\n", "import json\n", "import time\n", "import pandas as pd\n", "from tqdm import tqdm\n", "\n", "import requests\n", "\n", "cookies = {\n", " '__jdv': '241039512|direct|-|none|-|1769580195196',\n", " 'mba_muid': '17695801951961847696270',\n", " 'mba_sid': '1769580378119515622883.0',\n", " 'QRCodeKey': 'AAEAIGlfy0S9IVwOVAfE3NXgBILRP8R2qpHAikvosD3cyvar',\n", " 'wlfstk_smdl': 'drd3j1dlvwjz7o96orgqco4keigo6ipj',\n", " 'pin': '%E5%8D%97%E6%98%8C%E4%BD%B3%E4%B9%BE%E8%BD%A6%E6%9C%8D%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8',\n", " 'unick': 's2v2tk1w4w8eb9',\n", " 'yunxiupin': '%E5%8D%97%E6%98%8C%E4%BD%B3%E4%B9%BE%E8%BD%A6%E6%9C%8D%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8',\n", " 'bmall_id': '499220987560FEF36C9FB4C092693FFC98D6D74FB85924A6DC3E030ADD3477238C68C7B8E10ED66898B6EBEB4562ED893FBF19E4CD0030FECE3218317F39A2F5FC9FF25A11561368D02C95564D247AC2A151A086B1074D5EE362C7CB1BA34EC79B50B3252535972791A084C5D010158EF4B5C1EADC2808FFF3EB992EF34A9D14',\n", " 'UUID': '7c069d6f-2724-4008-b308-09f436240035',\n", " 'SESSION_USER_NAME': '%E6%9F%A5%E4%BA%AE',\n", " 'flash': '3_bBBCg0-OBy68xAANqduCSaKWV_6DKpxvObl29hEy-5Il0taBIimdGJfimCMZHKH-CUR09cTQwjAyGRKP9z9jHkm9UrWP2nTOg38vb68OEMqiiwdZRg1AqxMtUmDSWBQdVhGg5qQSbO5p1eyeBPlu7Htsgtf_TMouEaoqlijt7PqsLs4yBBM8Alki49TorJwr9E6mcmF96X-2O-E6',\n", " 'thor': '51C732866E8A756A4ED8B4738163D4C059D9063322E05745BA0D815A80FEBE3D550B447E8BB3C99207EE02D994108998DE070A571A758BED83B7535090CB6C2DF853F8994511D1708463D0C16274A620668FCE84D3B708BA56633C46432FABC8B4DA7688141595BA1C45C419160C151A638E6A118D22DA606EE420BE383B9D53FB842C2C90A6454E4CFED4E3A63A8ED5',\n", " 'light_key': 'AASBKE7rOxgWQziEhC_QY6yaLIBQgOT1dxVmsPRjRIB9ndtR9Aslstb1iQBYYZyMvLEJNsNDL52e7UA1dFCeHNIVWAseFg',\n", " 'JD_UUID': 'b9441bd1-a782-4d34-b2af-47b6f1e89bc6',\n", " '3AB9D23F7A4B3CSS': 'jdd03XH7UJPD6AWWSVFN6XP6T23OSWBA235SAMFFYPEW3JTTJRTT4TQTZLIAKR47DQ26GKGT266NM6WGBCEKT7R6RL2K34IAAAAM4ANDUGQYAAAAACSHCLFATJTAJKMX',\n", " '_gia_d': '1',\n", " 'sdtoken': 'AAbEsBpEIOVjqTAKCQtvQu17FLUpUb4CM0QtRGo9_y1DbK8h44YEOS2UiemwosOOgSgqPwHoDiJho0E69o2zgRTqSGouwgzZW2ByDMgJdY2S_IVvi4uyNneMFom6TCFDsAUG_C0BzQYsVWWU',\n", " '__jda': '200816309.17695801951961847696270.1769580195.1769580195.1769580195.1',\n", " '__jdc': '200816309',\n", " '3AB9D23F7A4B3C9B': 'KPOAZ5CBYQXJ25JOSSXGBQDYYOVGX7EMTPWFWDGVZ3KWTLNZU45HHPQ4MXYSIO37IV72PLAND3VYJH2ZOLD6LFWBDA',\n", " '__jdb': '200816309.53.17695801951961847696270|1.1769580195',\n", "}\n", "\n", "headers = {\n", " 'accept': '*/*',\n", " 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',\n", " # 'content-length': '0',\n", " 'origin': 'https://jch.yunxiu.com',\n", " 'priority': 'u=1, i',\n", " 'referer': 'https://jch.yunxiu.com/',\n", " 'sec-ch-ua': '\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\", \"Microsoft Edge\";v=\"144\"',\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-site',\n", " 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36 Edg/144.0.0.0',\n", " 'x-requested-with': 'XMLHttpRequest',\n", " # 'cookie': '__jdv=241039512|direct|-|none|-|1769580195196; mba_muid=17695801951961847696270; mba_sid=1769580378119515622883.0; QRCodeKey=AAEAIGlfy0S9IVwOVAfE3NXgBILRP8R2qpHAikvosD3cyvar; wlfstk_smdl=drd3j1dlvwjz7o96orgqco4keigo6ipj; pin=%E5%8D%97%E6%98%8C%E4%BD%B3%E4%B9%BE%E8%BD%A6%E6%9C%8D%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8; unick=s2v2tk1w4w8eb9; yunxiupin=%E5%8D%97%E6%98%8C%E4%BD%B3%E4%B9%BE%E8%BD%A6%E6%9C%8D%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8; bmall_id=499220987560FEF36C9FB4C092693FFC98D6D74FB85924A6DC3E030ADD3477238C68C7B8E10ED66898B6EBEB4562ED893FBF19E4CD0030FECE3218317F39A2F5FC9FF25A11561368D02C95564D247AC2A151A086B1074D5EE362C7CB1BA34EC79B50B3252535972791A084C5D010158EF4B5C1EADC2808FFF3EB992EF34A9D14; UUID=7c069d6f-2724-4008-b308-09f436240035; SESSION_USER_NAME=%E6%9F%A5%E4%BA%AE; flash=3_bBBCg0-OBy68xAANqduCSaKWV_6DKpxvObl29hEy-5Il0taBIimdGJfimCMZHKH-CUR09cTQwjAyGRKP9z9jHkm9UrWP2nTOg38vb68OEMqiiwdZRg1AqxMtUmDSWBQdVhGg5qQSbO5p1eyeBPlu7Htsgtf_TMouEaoqlijt7PqsLs4yBBM8Alki49TorJwr9E6mcmF96X-2O-E6; thor=51C732866E8A756A4ED8B4738163D4C059D9063322E05745BA0D815A80FEBE3D550B447E8BB3C99207EE02D994108998DE070A571A758BED83B7535090CB6C2DF853F8994511D1708463D0C16274A620668FCE84D3B708BA56633C46432FABC8B4DA7688141595BA1C45C419160C151A638E6A118D22DA606EE420BE383B9D53FB842C2C90A6454E4CFED4E3A63A8ED5; light_key=AASBKE7rOxgWQziEhC_QY6yaLIBQgOT1dxVmsPRjRIB9ndtR9Aslstb1iQBYYZyMvLEJNsNDL52e7UA1dFCeHNIVWAseFg; JD_UUID=b9441bd1-a782-4d34-b2af-47b6f1e89bc6; 3AB9D23F7A4B3CSS=jdd03XH7UJPD6AWWSVFN6XP6T23OSWBA235SAMFFYPEW3JTTJRTT4TQTZLIAKR47DQ26GKGT266NM6WGBCEKT7R6RL2K34IAAAAM4ANDUGQYAAAAACSHCLFATJTAJKMX; _gia_d=1; sdtoken=AAbEsBpEIOVjqTAKCQtvQu17FLUpUb4CM0QtRGo9_y1DbK8h44YEOS2UiemwosOOgSgqPwHoDiJho0E69o2zgRTqSGouwgzZW2ByDMgJdY2S_IVvi4uyNneMFom6TCFDsAUG_C0BzQYsVWWU; __jda=200816309.17695801951961847696270.1769580195.1769580195.1769580195.1; __jdc=200816309; 3AB9D23F7A4B3C9B=KPOAZ5CBYQXJ25JOSSXGBQDYYOVGX7EMTPWFWDGVZ3KWTLNZU45HHPQ4MXYSIO37IV72PLAND3VYJH2ZOLD6LFWBDA; __jdb=200816309.53.17695801951961847696270|1.1769580195',\n", "}\n", "\n", "\n", "\n", "all_data = []\n", "number = 1748507284349\n", "page = 1\n", "max_retries = 5 # 最大重试次数\n", "backoff_factor = 1 # 指数退避因子\n", "\n", "for page in tqdm(range(1,2)):\n", " url = f\"https://jch1.yunxiu.com/legend/account/search?page={page}&_={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(r\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\京东云修数据导出-养车驿栈万江店.xlsx\")\n" ], "outputs": [ { "ename": "KeyboardInterrupt", "evalue": "", "output_type": "error", "traceback": [ "\u001B[31m---------------------------------------------------------------------------\u001B[39m", "\u001B[31mKeyboardInterrupt\u001B[39m Traceback (most recent call last)", "\u001B[36mCell\u001B[39m\u001B[36m \u001B[39m\u001B[32mIn[1]\u001B[39m\u001B[32m, line 67\u001B[39m\n\u001B[32m 65\u001B[39m \u001B[38;5;28;01mwhile\u001B[39;00m attempt < max_retries:\n\u001B[32m 66\u001B[39m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[32m---> \u001B[39m\u001B[32m67\u001B[39m response = \u001B[43mrequests\u001B[49m\u001B[43m.\u001B[49m\u001B[43mget\u001B[49m\u001B[43m(\u001B[49m\u001B[43murl\u001B[49m\u001B[43m=\u001B[49m\u001B[43murl\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mheaders\u001B[49m\u001B[43m=\u001B[49m\u001B[43mheaders\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mdata\u001B[49m\u001B[43m=\u001B[49m\u001B[43mdata\u001B[49m\u001B[43m)\u001B[49m\n\u001B[32m 68\u001B[39m response.raise_for_status() \n\u001B[32m 69\u001B[39m \u001B[38;5;66;03m# print(response.json())\u001B[39;00m\n\u001B[32m 70\u001B[39m \u001B[38;5;66;03m# break# 如果响应状态码不是200,则抛出HTTPError异常\u001B[39;00m\n", "\u001B[36mFile \u001B[39m\u001B[32mD:\\Program Files\\anaconda3\\envs\\F6+宜搭+其它\\Lib\\site-packages\\requests\\api.py:73\u001B[39m, in \u001B[36mget\u001B[39m\u001B[34m(url, params, **kwargs)\u001B[39m\n\u001B[32m 62\u001B[39m \u001B[38;5;28;01mdef\u001B[39;00m\u001B[38;5;250m \u001B[39m\u001B[34mget\u001B[39m(url, params=\u001B[38;5;28;01mNone\u001B[39;00m, **kwargs):\n\u001B[32m 63\u001B[39m \u001B[38;5;250m \u001B[39m\u001B[33mr\u001B[39m\u001B[33;03m\"\"\"Sends a GET request.\u001B[39;00m\n\u001B[32m 64\u001B[39m \n\u001B[32m 65\u001B[39m \u001B[33;03m :param url: URL for the new :class:`Request` object.\u001B[39;00m\n\u001B[32m (...)\u001B[39m\u001B[32m 70\u001B[39m \u001B[33;03m :rtype: requests.Response\u001B[39;00m\n\u001B[32m 71\u001B[39m \u001B[33;03m \"\"\"\u001B[39;00m\n\u001B[32m---> \u001B[39m\u001B[32m73\u001B[39m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mrequest\u001B[49m\u001B[43m(\u001B[49m\u001B[33;43m\"\u001B[39;49m\u001B[33;43mget\u001B[39;49m\u001B[33;43m\"\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43murl\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mparams\u001B[49m\u001B[43m=\u001B[49m\u001B[43mparams\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43m*\u001B[49m\u001B[43m*\u001B[49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n", "\u001B[36mFile \u001B[39m\u001B[32mD:\\Program Files\\anaconda3\\envs\\F6+宜搭+其它\\Lib\\site-packages\\requests\\api.py:59\u001B[39m, in \u001B[36mrequest\u001B[39m\u001B[34m(method, url, **kwargs)\u001B[39m\n\u001B[32m 55\u001B[39m \u001B[38;5;66;03m# By using the 'with' statement we are sure the session is closed, thus we\u001B[39;00m\n\u001B[32m 56\u001B[39m \u001B[38;5;66;03m# avoid leaving sockets open which can trigger a ResourceWarning in some\u001B[39;00m\n\u001B[32m 57\u001B[39m \u001B[38;5;66;03m# cases, and look like a memory leak in others.\u001B[39;00m\n\u001B[32m 58\u001B[39m \u001B[38;5;28;01mwith\u001B[39;00m sessions.Session() \u001B[38;5;28;01mas\u001B[39;00m session:\n\u001B[32m---> \u001B[39m\u001B[32m59\u001B[39m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43msession\u001B[49m\u001B[43m.\u001B[49m\u001B[43mrequest\u001B[49m\u001B[43m(\u001B[49m\u001B[43mmethod\u001B[49m\u001B[43m=\u001B[49m\u001B[43mmethod\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43murl\u001B[49m\u001B[43m=\u001B[49m\u001B[43murl\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43m*\u001B[49m\u001B[43m*\u001B[49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n", "\u001B[36mFile \u001B[39m\u001B[32mD:\\Program Files\\anaconda3\\envs\\F6+宜搭+其它\\Lib\\site-packages\\requests\\sessions.py:589\u001B[39m, in \u001B[36mSession.request\u001B[39m\u001B[34m(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)\u001B[39m\n\u001B[32m 584\u001B[39m send_kwargs = {\n\u001B[32m 585\u001B[39m \u001B[33m\"\u001B[39m\u001B[33mtimeout\u001B[39m\u001B[33m\"\u001B[39m: timeout,\n\u001B[32m 586\u001B[39m \u001B[33m\"\u001B[39m\u001B[33mallow_redirects\u001B[39m\u001B[33m\"\u001B[39m: allow_redirects,\n\u001B[32m 587\u001B[39m }\n\u001B[32m 588\u001B[39m send_kwargs.update(settings)\n\u001B[32m--> \u001B[39m\u001B[32m589\u001B[39m resp = \u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43msend\u001B[49m\u001B[43m(\u001B[49m\u001B[43mprep\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43m*\u001B[49m\u001B[43m*\u001B[49m\u001B[43msend_kwargs\u001B[49m\u001B[43m)\u001B[49m\n\u001B[32m 591\u001B[39m \u001B[38;5;28;01mreturn\u001B[39;00m resp\n", "\u001B[36mFile \u001B[39m\u001B[32mD:\\Program Files\\anaconda3\\envs\\F6+宜搭+其它\\Lib\\site-packages\\requests\\sessions.py:724\u001B[39m, in \u001B[36mSession.send\u001B[39m\u001B[34m(self, request, **kwargs)\u001B[39m\n\u001B[32m 721\u001B[39m \u001B[38;5;28;01mif\u001B[39;00m allow_redirects:\n\u001B[32m 722\u001B[39m \u001B[38;5;66;03m# Redirect resolving generator.\u001B[39;00m\n\u001B[32m 723\u001B[39m gen = \u001B[38;5;28mself\u001B[39m.resolve_redirects(r, request, **kwargs)\n\u001B[32m--> \u001B[39m\u001B[32m724\u001B[39m history = \u001B[43m[\u001B[49m\u001B[43mresp\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;28;43;01mfor\u001B[39;49;00m\u001B[43m \u001B[49m\u001B[43mresp\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;129;43;01min\u001B[39;49;00m\u001B[43m \u001B[49m\u001B[43mgen\u001B[49m\u001B[43m]\u001B[49m\n\u001B[32m 725\u001B[39m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[32m 726\u001B[39m history = []\n", "\u001B[36mFile \u001B[39m\u001B[32mD:\\Program Files\\anaconda3\\envs\\F6+宜搭+其它\\Lib\\site-packages\\requests\\sessions.py:265\u001B[39m, in \u001B[36mSessionRedirectMixin.resolve_redirects\u001B[39m\u001B[34m(self, resp, req, stream, timeout, verify, cert, proxies, yield_requests, **adapter_kwargs)\u001B[39m\n\u001B[32m 263\u001B[39m \u001B[38;5;28;01myield\u001B[39;00m req\n\u001B[32m 264\u001B[39m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[32m--> \u001B[39m\u001B[32m265\u001B[39m resp = \u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43msend\u001B[49m\u001B[43m(\u001B[49m\n\u001B[32m 266\u001B[39m \u001B[43m \u001B[49m\u001B[43mreq\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 267\u001B[39m \u001B[43m \u001B[49m\u001B[43mstream\u001B[49m\u001B[43m=\u001B[49m\u001B[43mstream\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 268\u001B[39m \u001B[43m \u001B[49m\u001B[43mtimeout\u001B[49m\u001B[43m=\u001B[49m\u001B[43mtimeout\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 269\u001B[39m \u001B[43m \u001B[49m\u001B[43mverify\u001B[49m\u001B[43m=\u001B[49m\u001B[43mverify\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 270\u001B[39m \u001B[43m \u001B[49m\u001B[43mcert\u001B[49m\u001B[43m=\u001B[49m\u001B[43mcert\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 271\u001B[39m \u001B[43m \u001B[49m\u001B[43mproxies\u001B[49m\u001B[43m=\u001B[49m\u001B[43mproxies\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 272\u001B[39m \u001B[43m \u001B[49m\u001B[43mallow_redirects\u001B[49m\u001B[43m=\u001B[49m\u001B[38;5;28;43;01mFalse\u001B[39;49;00m\u001B[43m,\u001B[49m\n\u001B[32m 273\u001B[39m \u001B[43m \u001B[49m\u001B[43m*\u001B[49m\u001B[43m*\u001B[49m\u001B[43madapter_kwargs\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 274\u001B[39m \u001B[43m \u001B[49m\u001B[43m)\u001B[49m\n\u001B[32m 276\u001B[39m extract_cookies_to_jar(\u001B[38;5;28mself\u001B[39m.cookies, prepared_request, resp.raw)\n\u001B[32m 278\u001B[39m \u001B[38;5;66;03m# extract redirect url, if any, for the next loop\u001B[39;00m\n", "\u001B[36mFile \u001B[39m\u001B[32mD:\\Program Files\\anaconda3\\envs\\F6+宜搭+其它\\Lib\\site-packages\\requests\\sessions.py:703\u001B[39m, in \u001B[36mSession.send\u001B[39m\u001B[34m(self, request, **kwargs)\u001B[39m\n\u001B[32m 700\u001B[39m start = preferred_clock()\n\u001B[32m 702\u001B[39m \u001B[38;5;66;03m# Send the request\u001B[39;00m\n\u001B[32m--> \u001B[39m\u001B[32m703\u001B[39m r = \u001B[43madapter\u001B[49m\u001B[43m.\u001B[49m\u001B[43msend\u001B[49m\u001B[43m(\u001B[49m\u001B[43mrequest\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43m*\u001B[49m\u001B[43m*\u001B[49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n\u001B[32m 705\u001B[39m \u001B[38;5;66;03m# Total elapsed time of the request (approximately)\u001B[39;00m\n\u001B[32m 706\u001B[39m elapsed = preferred_clock() - start\n", "\u001B[36mFile \u001B[39m\u001B[32mD:\\Program Files\\anaconda3\\envs\\F6+宜搭+其它\\Lib\\site-packages\\requests\\adapters.py:644\u001B[39m, in \u001B[36mHTTPAdapter.send\u001B[39m\u001B[34m(self, request, stream, timeout, verify, cert, proxies)\u001B[39m\n\u001B[32m 641\u001B[39m timeout = TimeoutSauce(connect=timeout, read=timeout)\n\u001B[32m 643\u001B[39m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[32m--> \u001B[39m\u001B[32m644\u001B[39m resp = \u001B[43mconn\u001B[49m\u001B[43m.\u001B[49m\u001B[43murlopen\u001B[49m\u001B[43m(\u001B[49m\n\u001B[32m 645\u001B[39m \u001B[43m \u001B[49m\u001B[43mmethod\u001B[49m\u001B[43m=\u001B[49m\u001B[43mrequest\u001B[49m\u001B[43m.\u001B[49m\u001B[43mmethod\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 646\u001B[39m \u001B[43m \u001B[49m\u001B[43murl\u001B[49m\u001B[43m=\u001B[49m\u001B[43murl\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 647\u001B[39m \u001B[43m \u001B[49m\u001B[43mbody\u001B[49m\u001B[43m=\u001B[49m\u001B[43mrequest\u001B[49m\u001B[43m.\u001B[49m\u001B[43mbody\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 648\u001B[39m \u001B[43m \u001B[49m\u001B[43mheaders\u001B[49m\u001B[43m=\u001B[49m\u001B[43mrequest\u001B[49m\u001B[43m.\u001B[49m\u001B[43mheaders\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 649\u001B[39m \u001B[43m \u001B[49m\u001B[43mredirect\u001B[49m\u001B[43m=\u001B[49m\u001B[38;5;28;43;01mFalse\u001B[39;49;00m\u001B[43m,\u001B[49m\n\u001B[32m 650\u001B[39m \u001B[43m \u001B[49m\u001B[43massert_same_host\u001B[49m\u001B[43m=\u001B[49m\u001B[38;5;28;43;01mFalse\u001B[39;49;00m\u001B[43m,\u001B[49m\n\u001B[32m 651\u001B[39m \u001B[43m \u001B[49m\u001B[43mpreload_content\u001B[49m\u001B[43m=\u001B[49m\u001B[38;5;28;43;01mFalse\u001B[39;49;00m\u001B[43m,\u001B[49m\n\u001B[32m 652\u001B[39m \u001B[43m \u001B[49m\u001B[43mdecode_content\u001B[49m\u001B[43m=\u001B[49m\u001B[38;5;28;43;01mFalse\u001B[39;49;00m\u001B[43m,\u001B[49m\n\u001B[32m 653\u001B[39m \u001B[43m \u001B[49m\u001B[43mretries\u001B[49m\u001B[43m=\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43mmax_retries\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 654\u001B[39m \u001B[43m \u001B[49m\u001B[43mtimeout\u001B[49m\u001B[43m=\u001B[49m\u001B[43mtimeout\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 655\u001B[39m \u001B[43m \u001B[49m\u001B[43mchunked\u001B[49m\u001B[43m=\u001B[49m\u001B[43mchunked\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 656\u001B[39m \u001B[43m \u001B[49m\u001B[43m)\u001B[49m\n\u001B[32m 658\u001B[39m \u001B[38;5;28;01mexcept\u001B[39;00m (ProtocolError, \u001B[38;5;167;01mOSError\u001B[39;00m) \u001B[38;5;28;01mas\u001B[39;00m err:\n\u001B[32m 659\u001B[39m \u001B[38;5;28;01mraise\u001B[39;00m \u001B[38;5;167;01mConnectionError\u001B[39;00m(err, request=request)\n", "\u001B[36mFile \u001B[39m\u001B[32mD:\\Program Files\\anaconda3\\envs\\F6+宜搭+其它\\Lib\\site-packages\\urllib3\\connectionpool.py:787\u001B[39m, in \u001B[36mHTTPConnectionPool.urlopen\u001B[39m\u001B[34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, preload_content, decode_content, **response_kw)\u001B[39m\n\u001B[32m 784\u001B[39m response_conn = conn \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m release_conn \u001B[38;5;28;01melse\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m\n\u001B[32m 786\u001B[39m \u001B[38;5;66;03m# Make the request on the HTTPConnection object\u001B[39;00m\n\u001B[32m--> \u001B[39m\u001B[32m787\u001B[39m response = \u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43m_make_request\u001B[49m\u001B[43m(\u001B[49m\n\u001B[32m 788\u001B[39m \u001B[43m \u001B[49m\u001B[43mconn\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 789\u001B[39m \u001B[43m \u001B[49m\u001B[43mmethod\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 790\u001B[39m \u001B[43m \u001B[49m\u001B[43murl\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 791\u001B[39m \u001B[43m \u001B[49m\u001B[43mtimeout\u001B[49m\u001B[43m=\u001B[49m\u001B[43mtimeout_obj\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 792\u001B[39m \u001B[43m \u001B[49m\u001B[43mbody\u001B[49m\u001B[43m=\u001B[49m\u001B[43mbody\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 793\u001B[39m \u001B[43m \u001B[49m\u001B[43mheaders\u001B[49m\u001B[43m=\u001B[49m\u001B[43mheaders\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 794\u001B[39m \u001B[43m \u001B[49m\u001B[43mchunked\u001B[49m\u001B[43m=\u001B[49m\u001B[43mchunked\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 795\u001B[39m \u001B[43m \u001B[49m\u001B[43mretries\u001B[49m\u001B[43m=\u001B[49m\u001B[43mretries\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 796\u001B[39m \u001B[43m \u001B[49m\u001B[43mresponse_conn\u001B[49m\u001B[43m=\u001B[49m\u001B[43mresponse_conn\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 797\u001B[39m \u001B[43m \u001B[49m\u001B[43mpreload_content\u001B[49m\u001B[43m=\u001B[49m\u001B[43mpreload_content\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 798\u001B[39m \u001B[43m \u001B[49m\u001B[43mdecode_content\u001B[49m\u001B[43m=\u001B[49m\u001B[43mdecode_content\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 799\u001B[39m \u001B[43m \u001B[49m\u001B[43m*\u001B[49m\u001B[43m*\u001B[49m\u001B[43mresponse_kw\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 800\u001B[39m \u001B[43m\u001B[49m\u001B[43m)\u001B[49m\n\u001B[32m 802\u001B[39m \u001B[38;5;66;03m# Everything went great!\u001B[39;00m\n\u001B[32m 803\u001B[39m clean_exit = \u001B[38;5;28;01mTrue\u001B[39;00m\n", "\u001B[36mFile \u001B[39m\u001B[32mD:\\Program Files\\anaconda3\\envs\\F6+宜搭+其它\\Lib\\site-packages\\urllib3\\connectionpool.py:464\u001B[39m, in \u001B[36mHTTPConnectionPool._make_request\u001B[39m\u001B[34m(self, conn, method, url, body, headers, retries, timeout, chunked, response_conn, preload_content, decode_content, enforce_content_length)\u001B[39m\n\u001B[32m 461\u001B[39m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[32m 462\u001B[39m \u001B[38;5;66;03m# Trigger any extra validation we need to do.\u001B[39;00m\n\u001B[32m 463\u001B[39m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[32m--> \u001B[39m\u001B[32m464\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43m_validate_conn\u001B[49m\u001B[43m(\u001B[49m\u001B[43mconn\u001B[49m\u001B[43m)\u001B[49m\n\u001B[32m 465\u001B[39m \u001B[38;5;28;01mexcept\u001B[39;00m (SocketTimeout, BaseSSLError) \u001B[38;5;28;01mas\u001B[39;00m e:\n\u001B[32m 466\u001B[39m \u001B[38;5;28mself\u001B[39m._raise_timeout(err=e, url=url, timeout_value=conn.timeout)\n", "\u001B[36mFile \u001B[39m\u001B[32mD:\\Program Files\\anaconda3\\envs\\F6+宜搭+其它\\Lib\\site-packages\\urllib3\\connectionpool.py:1093\u001B[39m, in \u001B[36mHTTPSConnectionPool._validate_conn\u001B[39m\u001B[34m(self, conn)\u001B[39m\n\u001B[32m 1091\u001B[39m \u001B[38;5;66;03m# Force connect early to allow us to validate the connection.\u001B[39;00m\n\u001B[32m 1092\u001B[39m \u001B[38;5;28;01mif\u001B[39;00m conn.is_closed:\n\u001B[32m-> \u001B[39m\u001B[32m1093\u001B[39m \u001B[43mconn\u001B[49m\u001B[43m.\u001B[49m\u001B[43mconnect\u001B[49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m\n\u001B[32m 1095\u001B[39m \u001B[38;5;66;03m# TODO revise this, see https://github.com/urllib3/urllib3/issues/2791\u001B[39;00m\n\u001B[32m 1096\u001B[39m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m conn.is_verified \u001B[38;5;129;01mand\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m conn.proxy_is_verified:\n", "\u001B[36mFile \u001B[39m\u001B[32mD:\\Program Files\\anaconda3\\envs\\F6+宜搭+其它\\Lib\\site-packages\\urllib3\\connection.py:796\u001B[39m, in \u001B[36mHTTPSConnection.connect\u001B[39m\u001B[34m(self)\u001B[39m\n\u001B[32m 793\u001B[39m \u001B[38;5;66;03m# Remove trailing '.' from fqdn hostnames to allow certificate validation\u001B[39;00m\n\u001B[32m 794\u001B[39m server_hostname_rm_dot = server_hostname.rstrip(\u001B[33m\"\u001B[39m\u001B[33m.\u001B[39m\u001B[33m\"\u001B[39m)\n\u001B[32m--> \u001B[39m\u001B[32m796\u001B[39m sock_and_verified = \u001B[43m_ssl_wrap_socket_and_match_hostname\u001B[49m\u001B[43m(\u001B[49m\n\u001B[32m 797\u001B[39m \u001B[43m \u001B[49m\u001B[43msock\u001B[49m\u001B[43m=\u001B[49m\u001B[43msock\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 798\u001B[39m \u001B[43m \u001B[49m\u001B[43mcert_reqs\u001B[49m\u001B[43m=\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43mcert_reqs\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 799\u001B[39m \u001B[43m \u001B[49m\u001B[43mssl_version\u001B[49m\u001B[43m=\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43mssl_version\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 800\u001B[39m \u001B[43m \u001B[49m\u001B[43mssl_minimum_version\u001B[49m\u001B[43m=\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43mssl_minimum_version\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 801\u001B[39m \u001B[43m \u001B[49m\u001B[43mssl_maximum_version\u001B[49m\u001B[43m=\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43mssl_maximum_version\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 802\u001B[39m \u001B[43m \u001B[49m\u001B[43mca_certs\u001B[49m\u001B[43m=\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43mca_certs\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 803\u001B[39m \u001B[43m \u001B[49m\u001B[43mca_cert_dir\u001B[49m\u001B[43m=\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43mca_cert_dir\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 804\u001B[39m \u001B[43m \u001B[49m\u001B[43mca_cert_data\u001B[49m\u001B[43m=\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43mca_cert_data\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 805\u001B[39m \u001B[43m \u001B[49m\u001B[43mcert_file\u001B[49m\u001B[43m=\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43mcert_file\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 806\u001B[39m \u001B[43m \u001B[49m\u001B[43mkey_file\u001B[49m\u001B[43m=\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43mkey_file\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 807\u001B[39m \u001B[43m \u001B[49m\u001B[43mkey_password\u001B[49m\u001B[43m=\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43mkey_password\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 808\u001B[39m \u001B[43m \u001B[49m\u001B[43mserver_hostname\u001B[49m\u001B[43m=\u001B[49m\u001B[43mserver_hostname_rm_dot\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 809\u001B[39m \u001B[43m \u001B[49m\u001B[43mssl_context\u001B[49m\u001B[43m=\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43mssl_context\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 810\u001B[39m \u001B[43m \u001B[49m\u001B[43mtls_in_tls\u001B[49m\u001B[43m=\u001B[49m\u001B[43mtls_in_tls\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 811\u001B[39m \u001B[43m \u001B[49m\u001B[43massert_hostname\u001B[49m\u001B[43m=\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43massert_hostname\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 812\u001B[39m \u001B[43m \u001B[49m\u001B[43massert_fingerprint\u001B[49m\u001B[43m=\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43massert_fingerprint\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 813\u001B[39m \u001B[43m \u001B[49m\u001B[43m)\u001B[49m\n\u001B[32m 814\u001B[39m \u001B[38;5;28mself\u001B[39m.sock = sock_and_verified.socket\n\u001B[32m 816\u001B[39m \u001B[38;5;66;03m# If an error occurs during connection/handshake we may need to release\u001B[39;00m\n\u001B[32m 817\u001B[39m \u001B[38;5;66;03m# our lock so another connection can probe the origin.\u001B[39;00m\n", "\u001B[36mFile \u001B[39m\u001B[32mD:\\Program Files\\anaconda3\\envs\\F6+宜搭+其它\\Lib\\site-packages\\urllib3\\connection.py:975\u001B[39m, in \u001B[36m_ssl_wrap_socket_and_match_hostname\u001B[39m\u001B[34m(sock, cert_reqs, ssl_version, ssl_minimum_version, ssl_maximum_version, cert_file, key_file, key_password, ca_certs, ca_cert_dir, ca_cert_data, assert_hostname, assert_fingerprint, server_hostname, ssl_context, tls_in_tls)\u001B[39m\n\u001B[32m 972\u001B[39m \u001B[38;5;28;01mif\u001B[39;00m is_ipaddress(normalized):\n\u001B[32m 973\u001B[39m server_hostname = normalized\n\u001B[32m--> \u001B[39m\u001B[32m975\u001B[39m ssl_sock = \u001B[43mssl_wrap_socket\u001B[49m\u001B[43m(\u001B[49m\n\u001B[32m 976\u001B[39m \u001B[43m \u001B[49m\u001B[43msock\u001B[49m\u001B[43m=\u001B[49m\u001B[43msock\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 977\u001B[39m \u001B[43m \u001B[49m\u001B[43mkeyfile\u001B[49m\u001B[43m=\u001B[49m\u001B[43mkey_file\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 978\u001B[39m \u001B[43m \u001B[49m\u001B[43mcertfile\u001B[49m\u001B[43m=\u001B[49m\u001B[43mcert_file\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 979\u001B[39m \u001B[43m \u001B[49m\u001B[43mkey_password\u001B[49m\u001B[43m=\u001B[49m\u001B[43mkey_password\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 980\u001B[39m \u001B[43m \u001B[49m\u001B[43mca_certs\u001B[49m\u001B[43m=\u001B[49m\u001B[43mca_certs\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 981\u001B[39m \u001B[43m \u001B[49m\u001B[43mca_cert_dir\u001B[49m\u001B[43m=\u001B[49m\u001B[43mca_cert_dir\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 982\u001B[39m \u001B[43m \u001B[49m\u001B[43mca_cert_data\u001B[49m\u001B[43m=\u001B[49m\u001B[43mca_cert_data\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 983\u001B[39m \u001B[43m \u001B[49m\u001B[43mserver_hostname\u001B[49m\u001B[43m=\u001B[49m\u001B[43mserver_hostname\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 984\u001B[39m \u001B[43m \u001B[49m\u001B[43mssl_context\u001B[49m\u001B[43m=\u001B[49m\u001B[43mcontext\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 985\u001B[39m \u001B[43m \u001B[49m\u001B[43mtls_in_tls\u001B[49m\u001B[43m=\u001B[49m\u001B[43mtls_in_tls\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 986\u001B[39m \u001B[43m\u001B[49m\u001B[43m)\u001B[49m\n\u001B[32m 988\u001B[39m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[32m 989\u001B[39m \u001B[38;5;28;01mif\u001B[39;00m assert_fingerprint:\n", "\u001B[36mFile \u001B[39m\u001B[32mD:\\Program Files\\anaconda3\\envs\\F6+宜搭+其它\\Lib\\site-packages\\urllib3\\util\\ssl_.py:461\u001B[39m, in \u001B[36mssl_wrap_socket\u001B[39m\u001B[34m(sock, keyfile, certfile, cert_reqs, ca_certs, server_hostname, ssl_version, ciphers, ssl_context, ca_cert_dir, key_password, ca_cert_data, tls_in_tls)\u001B[39m\n\u001B[32m 459\u001B[39m \u001B[38;5;28;01mif\u001B[39;00m ca_certs \u001B[38;5;129;01mor\u001B[39;00m ca_cert_dir \u001B[38;5;129;01mor\u001B[39;00m ca_cert_data:\n\u001B[32m 460\u001B[39m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[32m--> \u001B[39m\u001B[32m461\u001B[39m \u001B[43mcontext\u001B[49m\u001B[43m.\u001B[49m\u001B[43mload_verify_locations\u001B[49m\u001B[43m(\u001B[49m\u001B[43mca_certs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mca_cert_dir\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mca_cert_data\u001B[49m\u001B[43m)\u001B[49m\n\u001B[32m 462\u001B[39m \u001B[38;5;28;01mexcept\u001B[39;00m \u001B[38;5;167;01mOSError\u001B[39;00m \u001B[38;5;28;01mas\u001B[39;00m e:\n\u001B[32m 463\u001B[39m \u001B[38;5;28;01mraise\u001B[39;00m SSLError(e) \u001B[38;5;28;01mfrom\u001B[39;00m\u001B[38;5;250m \u001B[39m\u001B[34;01me\u001B[39;00m\n", "\u001B[31mKeyboardInterrupt\u001B[39m: " ] } ], "execution_count": 1 }, { "metadata": { "ExecuteTime": { "end_time": "2025-03-17T09:05:23.254492Z", "start_time": "2025-03-17T09:05:20.198477Z" } }, "cell_type": "code", "source": [ "df1 = pd.DataFrame(all_data)\n", "df1.to_excel(r\"D:\\Idea Project\\F6+宜搭+其它(1)\\new\\文件输出\\京东云修数据导出-13576939998.xlsx\")" ], "id": "3ec7e6bfa5d425ee", "outputs": [], "execution_count": 2 }, { "metadata": {}, "cell_type": "markdown", "source": "车辆信息", "id": "a405bccb4dfdf949" }, { "metadata": { "ExecuteTime": { "end_time": "2025-07-25T02:19:42.395112Z", "start_time": "2025-07-25T01:57:39.563741Z" } }, "cell_type": "code", "source": [ "import requests\n", "import json\n", "import time\n", "import pandas as pd\n", "from tqdm import tqdm\n", "from datetime import datetime, timedelta\n", "\n", "headers = {\n", " \"cookie\":'__jdv=135409966|direct|-|none|-|1753349284245; flash=3_EuI2ojX4uJ6bPhnrd3tKHPKia0BaRB7TCi-gdcbqrSIauxZmkgE_yZJ7WTnzwB4_5G2Tdhdi89A4xE8t1uUvWrpjg5EnWwwrMNKGl8mWCaH1Vlo0VlXNk6Eyv9VrOA_6v-MDACjpO5RN4yGkhYfYFH5968Y9NPLEbK-ARUVmdrTXu6y8_zq-chEIqCSnme**; pin=jd_4d1be17ac64d3; unick=jd_2tnscrz74er69g; thor=884B7391C2AC4631693332E7FA593E284097D0ECACAF2D9BD0A558BB6EB65EAAB7F276B2475E6F7271396EBE3D1C84832247536BA40EB75D5EBF9AF87797FDD41D2AC25CC5C5B8803729EF8374A9C2CCE2D36DB51AB971A07238FDB6EE68D2ADC973BD6F40501EB116A185BEB86917D5C9DA41A03B1E1794D9591D2861EE053015AACDC7C64065615BBCCE428FC7E09AB66E0E5EA6EE69B23323F013536FF8ED; light_key=AASBKE7rOxgWQziEhC_QY6ya_BdQfCqNzo11axkWQXqAq56Qf-aHwELmm75kijsmGBR7FBg2; JD_UUID=d4eef9de-02a9-41c6-85dd-7f656b5c2bac; yunxiupin=jd_4d1be17ac64d3; UUID=b54ae144-a7f5-4000-bcfb-19ac3838a879; SESSION_USER_NAME=%E6%9D%8E%E5%BB%BA%E4%BC%9A; __jda=154799550.17533492842442035336434.1753349284.1753349284.1753408464.2; __jdc=154799550; PUBLIC_NOTICE_TIME105188=\"2022-10-16 10:33:17\"; __jdb=154799550.4.17533492842442035336434|2.1753408464',\n", " \"referer\": \"https://www.yunxiu.com/legend/account\",\n", " \"sec-ch-ua\": \"\\\"Not(A:Brand\\\";v=\\\"99\\\", \\\"Microsoft Edge\\\";v=\\\"133\\\", \\\"Chromium\\\";v=\\\"133\\\"\",\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; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36 Edg/133.0.0.0\",\n", " \"x-requested-with\": \"XMLHttpRequest\"\n", "}\n", "\n", "all_data = []\n", "number = 1746510018148 # 从车辆查询页面中 date参数获取\n", "page = 1\n", "max_retries = 5 # 最大重试次数\n", "backoff_factor = 1 # 指数退避因子\n", "\n", "current_date = datetime.now()\n", "years_back = 10\n", "\n", "end_date = current_date - timedelta(days=365 * years_back)\n", "start_date = current_date\n", "\n", "while start_date >= end_date:\n", " try:\n", " search_startTime = (start_date - timedelta(days=365)).strftime('%Y-%m-%d')\n", " search_endTime = start_date.strftime('%Y-%m-%d')\n", " print(f'search_startTime: {search_startTime}, search_endTime: {search_endTime}')\n", " start_date -= timedelta(days=365) # 每次减去一年\n", " exit_loop = False\n", " for page in tqdm(range(1,1001)):\n", " if exit_loop:\n", " break\n", " url = f\"https://www.yunxiu.com/legend/archives/carinfo/locate/list?page={page}&size=12&search_startTime={search_startTime}&search_endTime={search_endTime}&_={number}\"\n", " attempt = 0\n", " while attempt < max_retries:\n", " try:\n", " response = requests.get(url=url, headers=headers)\n", " response.raise_for_status() # 如果响应状态码不是200,则抛出HTTPError异常\n", " res = response.json().get(\"data\", {}).get(\"content\", [])\n", " max_len = response.json().get(\"data\", {}).get(\"totalPages\", []) + 1\n", " if page == max_len:\n", " print(max_len)\n", " exit_loop = True\n", " break # 成功后退出重试循环\n", " for item in res:\n", " base_info = {k: v for k, v in item.items() if k != \"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", " except:\n", " pass\n", "\n", "df1 = pd.DataFrame(all_data)\n", "df1.to_csv(r\"D:\\Idea Project\\F6+宜搭+其它(1)\\new\\文件输出\\京东云修数据导出-15202993999 车辆.csv\")\n" ], "id": "335a10b919a1f6b5", "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "search_startTime: 2024-07-25, search_endTime: 2025-07-25\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 0%| | 1/1000 [00:01<25:03, 1.50s/it]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "2\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 0%| | 2/1000 [00:02<22:00, 1.32s/it]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "search_startTime: 2023-07-26, search_endTime: 2024-07-25\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 2%|▏ | 20/1000 [00:31<24:34, 1.50s/it]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "21\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 2%|▏ | 21/1000 [00:32<25:15, 1.55s/it]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "search_startTime: 2022-07-26, search_endTime: 2023-07-26\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 22%|██▏ | 216/1000 [05:25<20:51, 1.60s/it]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "第217页请求失败: HTTPSConnectionPool(host='www.yunxiu.com', port=443): Max retries exceeded with url: /legend/archives/carinfo/locate/list?page=217&size=12&search_startTime=2022-07-26&search_endTime=2023-07-26&_=1746510018387 (Caused by ConnectTimeoutError(, 'Connection to www.yunxiu.com timed out. (connect timeout=None)'))\n", "准备第1次重试,等待1秒...\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 23%|██▎ | 226/1000 [06:02<22:23, 1.74s/it] " ] }, { "name": "stdout", "output_type": "stream", "text": [ "227\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 23%|██▎ | 227/1000 [06:03<20:37, 1.60s/it]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "search_startTime: 2021-07-26, search_endTime: 2022-07-26\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 25%|██▍ | 248/1000 [06:09<18:34, 1.48s/it]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "249\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 25%|██▍ | 249/1000 [06:10<18:36, 1.49s/it]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "search_startTime: 2020-07-26, search_endTime: 2021-07-26\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 33%|███▎ | 333/1000 [08:16<16:34, 1.49s/it]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "334\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 33%|███▎ | 334/1000 [08:17<16:32, 1.49s/it]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "search_startTime: 2019-07-27, search_endTime: 2020-07-26\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 3%|▎ | 29/1000 [00:42<23:50, 1.47s/it]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "30\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 3%|▎ | 30/1000 [00:43<23:37, 1.46s/it]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "search_startTime: 2018-07-27, search_endTime: 2019-07-27\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 0%| | 0/1000 [00:00 1\u001B[0m df1 \u001B[38;5;241m=\u001B[39m pd\u001B[38;5;241m.\u001B[39mDataFrame(all_data)\n\u001B[0;32m 2\u001B[0m df1\u001B[38;5;241m.\u001B[39mto_csv(\u001B[38;5;124mr\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mD:\u001B[39m\u001B[38;5;124m\\\u001B[39m\u001B[38;5;124mIdea Project\u001B[39m\u001B[38;5;124m\\\u001B[39m\u001B[38;5;124mF6+宜搭+其它(1)\u001B[39m\u001B[38;5;124m\\\u001B[39m\u001B[38;5;124mnew\u001B[39m\u001B[38;5;124m\\\u001B[39m\u001B[38;5;124m文件输出\u001B[39m\u001B[38;5;124m\\\u001B[39m\u001B[38;5;124m京东云修数据导出-13032256777 -车辆.csv\u001B[39m\u001B[38;5;124m\"\u001B[39m)\n", "\u001B[1;31mNameError\u001B[0m: name 'pd' is not defined" ] } ], "execution_count": 1 }, { "metadata": {}, "cell_type": "markdown", "source": "", "id": "bf951aee0e74b1d1" }, { "metadata": {}, "cell_type": "markdown", "source": "新单据信息", "id": "eb09e38f6613b5e7" }, { "metadata": { "ExecuteTime": { "end_time": "2026-01-28T06:31:17.385432200Z", "start_time": "2026-01-28T06:31:16.760396700Z" } }, "cell_type": "code", "source": [ "import requests\n", "\n", "cookies = {\n", " '__jdv': '241039512|direct|-|none|-|1769580195196',\n", " 'mba_muid': '17695801951961847696270',\n", " 'mba_sid': '1769580378119515622883.0',\n", " 'QRCodeKey': 'AAEAIGlfy0S9IVwOVAfE3NXgBILRP8R2qpHAikvosD3cyvar',\n", " 'wlfstk_smdl': 'drd3j1dlvwjz7o96orgqco4keigo6ipj',\n", " 'pin': '%E5%8D%97%E6%98%8C%E4%BD%B3%E4%B9%BE%E8%BD%A6%E6%9C%8D%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8',\n", " 'unick': 's2v2tk1w4w8eb9',\n", " 'yunxiupin': '%E5%8D%97%E6%98%8C%E4%BD%B3%E4%B9%BE%E8%BD%A6%E6%9C%8D%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8',\n", " 'bmall_id': '499220987560FEF36C9FB4C092693FFC98D6D74FB85924A6DC3E030ADD3477238C68C7B8E10ED66898B6EBEB4562ED893FBF19E4CD0030FECE3218317F39A2F5FC9FF25A11561368D02C95564D247AC2A151A086B1074D5EE362C7CB1BA34EC79B50B3252535972791A084C5D010158EF4B5C1EADC2808FFF3EB992EF34A9D14',\n", " 'UUID': '7c069d6f-2724-4008-b308-09f436240035',\n", " 'SESSION_USER_NAME': '%E6%9F%A5%E4%BA%AE',\n", " 'flash': '3_bBBCg0-OBy68xAANqduCSaKWV_6DKpxvObl29hEy-5Il0taBIimdGJfimCMZHKH-CUR09cTQwjAyGRKP9z9jHkm9UrWP2nTOg38vb68OEMqiiwdZRg1AqxMtUmDSWBQdVhGg5qQSbO5p1eyeBPlu7Htsgtf_TMouEaoqlijt7PqsLs4yBBM8Alki49TorJwr9E6mcmF96X-2O-E6',\n", " 'thor': '51C732866E8A756A4ED8B4738163D4C059D9063322E05745BA0D815A80FEBE3D550B447E8BB3C99207EE02D994108998DE070A571A758BED83B7535090CB6C2DF853F8994511D1708463D0C16274A620668FCE84D3B708BA56633C46432FABC8B4DA7688141595BA1C45C419160C151A638E6A118D22DA606EE420BE383B9D53FB842C2C90A6454E4CFED4E3A63A8ED5',\n", " 'light_key': 'AASBKE7rOxgWQziEhC_QY6yaLIBQgOT1dxVmsPRjRIB9ndtR9Aslstb1iQBYYZyMvLEJNsNDL52e7UA1dFCeHNIVWAseFg',\n", " 'JD_UUID': 'b9441bd1-a782-4d34-b2af-47b6f1e89bc6',\n", " '3AB9D23F7A4B3CSS': 'jdd03XH7UJPD6AWWSVFN6XP6T23OSWBA235SAMFFYPEW3JTTJRTT4TQTZLIAKR47DQ26GKGT266NM6WGBCEKT7R6RL2K34IAAAAM4ANDUGQYAAAAACSHCLFATJTAJKMX',\n", " 'sdtoken': 'AAbEsBpEIOVjqTAKCQtvQu17FLUpUb4CM0QtRGo9_y1DbK8h44YEOS2UiemwosOOgSgqPwHoDiJho0E69o2zgRTqSGouwgzZW2ByDMgJdY2S_IVvi4uyNneMFom6TCFDsAUG_C0BzQYsVWWU',\n", " '__jda': '200816309.17695801951961847696270.1769580195.1769580195.1769580195.1',\n", " '__jdc': '200816309',\n", " '3AB9D23F7A4B3C9B': 'KPOAZ5CBYQXJ25JOSSXGBQDYYOVGX7EMTPWFWDGVZ3KWTLNZU45HHPQ4MXYSIO37IV72PLAND3VYJH2ZOLD6LFWBDA',\n", " '__jdb': '200816309.56.17695801951961847696270|1.1769580195',\n", "}\n", "\n", "headers = {\n", " 'accept': '*/*',\n", " 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',\n", " 'origin': 'https://jch.yunxiu.com',\n", " 'priority': 'u=1, i',\n", " 'referer': 'https://jch.yunxiu.com/',\n", " 'sec-ch-ua': '\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\", \"Microsoft Edge\";v=\"144\"',\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-site',\n", " 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36 Edg/144.0.0.0',\n", " 'x-requested-with': 'XMLHttpRequest',\n", " # 'cookie': '__jdv=241039512|direct|-|none|-|1769580195196; mba_muid=17695801951961847696270; mba_sid=1769580378119515622883.0; QRCodeKey=AAEAIGlfy0S9IVwOVAfE3NXgBILRP8R2qpHAikvosD3cyvar; wlfstk_smdl=drd3j1dlvwjz7o96orgqco4keigo6ipj; pin=%E5%8D%97%E6%98%8C%E4%BD%B3%E4%B9%BE%E8%BD%A6%E6%9C%8D%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8; unick=s2v2tk1w4w8eb9; yunxiupin=%E5%8D%97%E6%98%8C%E4%BD%B3%E4%B9%BE%E8%BD%A6%E6%9C%8D%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8; bmall_id=499220987560FEF36C9FB4C092693FFC98D6D74FB85924A6DC3E030ADD3477238C68C7B8E10ED66898B6EBEB4562ED893FBF19E4CD0030FECE3218317F39A2F5FC9FF25A11561368D02C95564D247AC2A151A086B1074D5EE362C7CB1BA34EC79B50B3252535972791A084C5D010158EF4B5C1EADC2808FFF3EB992EF34A9D14; UUID=7c069d6f-2724-4008-b308-09f436240035; SESSION_USER_NAME=%E6%9F%A5%E4%BA%AE; flash=3_bBBCg0-OBy68xAANqduCSaKWV_6DKpxvObl29hEy-5Il0taBIimdGJfimCMZHKH-CUR09cTQwjAyGRKP9z9jHkm9UrWP2nTOg38vb68OEMqiiwdZRg1AqxMtUmDSWBQdVhGg5qQSbO5p1eyeBPlu7Htsgtf_TMouEaoqlijt7PqsLs4yBBM8Alki49TorJwr9E6mcmF96X-2O-E6; thor=51C732866E8A756A4ED8B4738163D4C059D9063322E05745BA0D815A80FEBE3D550B447E8BB3C99207EE02D994108998DE070A571A758BED83B7535090CB6C2DF853F8994511D1708463D0C16274A620668FCE84D3B708BA56633C46432FABC8B4DA7688141595BA1C45C419160C151A638E6A118D22DA606EE420BE383B9D53FB842C2C90A6454E4CFED4E3A63A8ED5; light_key=AASBKE7rOxgWQziEhC_QY6yaLIBQgOT1dxVmsPRjRIB9ndtR9Aslstb1iQBYYZyMvLEJNsNDL52e7UA1dFCeHNIVWAseFg; JD_UUID=b9441bd1-a782-4d34-b2af-47b6f1e89bc6; 3AB9D23F7A4B3CSS=jdd03XH7UJPD6AWWSVFN6XP6T23OSWBA235SAMFFYPEW3JTTJRTT4TQTZLIAKR47DQ26GKGT266NM6WGBCEKT7R6RL2K34IAAAAM4ANDUGQYAAAAACSHCLFATJTAJKMX; sdtoken=AAbEsBpEIOVjqTAKCQtvQu17FLUpUb4CM0QtRGo9_y1DbK8h44YEOS2UiemwosOOgSgqPwHoDiJho0E69o2zgRTqSGouwgzZW2ByDMgJdY2S_IVvi4uyNneMFom6TCFDsAUG_C0BzQYsVWWU; __jda=200816309.17695801951961847696270.1769580195.1769580195.1769580195.1; __jdc=200816309; 3AB9D23F7A4B3C9B=KPOAZ5CBYQXJ25JOSSXGBQDYYOVGX7EMTPWFWDGVZ3KWTLNZU45HHPQ4MXYSIO37IV72PLAND3VYJH2ZOLD6LFWBDA; __jdb=200816309.56.17695801951961847696270|1.1769580195',\n", "}\n", "\n", "params = {\n", " 'page': '1',\n", " 'size': '12',\n", " 'btnType': 'search',\n", "}\n", "\n", "response = requests.get('https://g.yunxiu.com/megatron/api/v1/order/list', params=params, cookies=cookies, headers=headers)\n" ], "id": "ca85268200bda895", "outputs": [], "execution_count": 2 }, { "metadata": { "ExecuteTime": { "end_time": "2026-01-28T06:35:23.307514700Z", "start_time": "2026-01-28T06:35:23.261598100Z" } }, "cell_type": "code", "source": [ "response.json()\n", "content = response.json()['data'].get(\"content\")\n", "\n", "import pandas as pd\n", "df = pd.DataFrame(content)\n", "df.to_csv(\"京东云修单据信息demo.csv\")" ], "id": "b18cdb2c1fb49e75", "outputs": [], "execution_count": 5 } ], "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 }