This commit is contained in:
2026-04-09 10:19:09 +08:00
parent eaf83c6f85
commit cc445c405a
25 changed files with 8165 additions and 3155 deletions
@@ -1,10 +1,12 @@
{
"cells": [
{
"metadata": {},
"cell_type": "markdown",
"source": "# 车辆信息导出",
"id": "a738ca16021a9e3b"
"id": "a738ca16021a9e3b",
"metadata": {},
"source": [
"# 车辆信息导出"
]
},
{
"cell_type": "code",
@@ -12,50 +14,49 @@
"metadata": {
"collapsed": true,
"ExecuteTime": {
"end_time": "2025-12-22T09:33:52.535439Z",
"start_time": "2025-12-22T09:24:33.820278Z"
"end_time": "2026-03-24T03:12:19.747274800Z",
"start_time": "2026-03-24T02:42:20.660416400Z"
}
},
"source": [
"import time\n",
"\n",
"import pandas as pd\n",
"import requests\n",
"from tqdm import tqdm\n",
"\n",
"# Cookie 和 Headers 配置\n",
"cookies = {\n",
" 'acw_tc': '0a472f4517663729846515826e48e5fe00deb9589551f37ca83749c9ce043f',\n",
" 'Hm_lvt_684c22b31d0037eca5a691cde16370ad': '1765863565,1766372987',\n",
" 'Hm_lpvt_684c22b31d0037eca5a691cde16370ad': '1766372987',\n",
" 'HMACCOUNT': '55F2182717FD6AE6',\n",
" 'e_token': 'd6c91f1dbb754081948988a722287335',\n",
" 'acw_tc': '76b20f7917743149845914058ebc47559507cd60c8642e0d54dbe45b6da222',\n",
" 'Hm_lvt_684c22b31d0037eca5a691cde16370ad': '1773130169,1774314982',\n",
" 'Hm_lpvt_684c22b31d0037eca5a691cde16370ad': '1774314982',\n",
" 'HMACCOUNT': 'A6A0585E8C70051D',\n",
" 'e_token': 'f44423067c184689a19eb9dc564bf33e',\n",
" 'weixin_token': 'Y',\n",
" 'e_c': 'MzY3NTI1OTM0OTg4NzQxMA==',\n",
" 'e_i_o_c_n': 'JTIyJUU5JUE5JUIwJUU1JThBJUEwJUU2JUIxJUJEJUU4JUJEJUE2JUU2JTlDJThEJUU1JThBJUExJUU0JUI4JUFEJUU1JUJGJTgzJUU5JUJDJThFJUU2JUI5JTk2JUU1JThDJUJBJUU1JTlEJTkxJUU1JThGJUEzJUU1JUJBJTk3JTVCKzIwMDI3NDUrJTVEJTIy',\n",
" 'e_i_p_c_n': 'JTIyJUU5JUE5JUIwJUU1JThBJUEwJUU2JUIxJUJEJUU4JUJEJUE2JUU2JTlDJThEJUU1JThBJUExJUU0JUI4JUFEJUU1JUJGJTgzJUU5JUJDJThFJUU2JUI5JTk2JUU1JThDJUJBJUU1JTlEJTkxJUU1JThGJUEzJUU1JUJBJTk3JUU1JUJBJTk3JUU0JUI4JUJCJTVCKzIwMjk4NjkrJTVEJTIy',\n",
" 'e_c': 'NTQ0MzQ1MDE0MTA3ODA1Mg==',\n",
" 'e_i_o_c_n': 'JTIyJUU1JTlCJTlCJUU0JUJDJTlBJUU1JUI4JTgyJUU4JThEJUEzJUU5JUFBJThGJUU2JUIxJUJEJUU4JUJEJUE2JUU3JUJCJUI0JUU0JUJGJUFFJUU0JUI4JUFEJUU1JUJGJTgzJTVCKzIwMDM5MDYrJTVEJTIy',\n",
" 'e_i_p_c_n': 'JTIyJUU5JUE5JUIwJUU1JThBJUEwJUU2JUIxJUJEJUU4JUJEJUE2JUU2JTlDJThEJUU1JThBJUExJUU0JUI4JUFEJUU1JUJGJTgzJUU1JTlCJTlCJUU0JUJDJTlBJUU1JUI4JTgyJUU2JUEzJTk1JUU2JUE2JTg4JUU1JTlCJUFEJUU1JUJBJTk3JUU1JUJBJTk3JUU0JUI4JUJCJTVCKzIwMjk5MDkrJTVEJTIy',\n",
"}\n",
"\n",
"headers = {\n",
" 'Accept': 'application/json, text/plain, */*',\n",
" 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',\n",
" 'Cache-Control': 'no-cache',\n",
" 'Connection': 'keep-alive',\n",
" 'Content-Type': 'application/json;charset=UTF-8',\n",
" 'Irisclient': 'PC-web#tedspc',\n",
" 'Origin': 'https://teds.tyreplus.com.cn',\n",
" 'Pragma': 'no-cache',\n",
" 'Referer': 'https://teds.tyreplus.com.cn/tedspc/index.html',\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/143.0.0.0 Safari/537.36 Edg/143.0.0.0',\n",
" 'sec-ch-ua': '\"Microsoft Edge\";v=\"143\", \"Chromium\";v=\"143\", \"Not A(Brand\";v=\"24\"',\n",
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36 Edg/146.0.0.0',\n",
" 'sec-ch-ua': '\"Chromium\";v=\"146\", \"Not-A.Brand\";v=\"24\", \"Microsoft Edge\";v=\"146\"',\n",
" 'sec-ch-ua-mobile': '?0',\n",
" 'sec-ch-ua-platform': '\"Windows\"',\n",
"}\n",
"\n",
"\n",
"all_data = []\n",
"for i in tqdm(range(1, 1144)):\n",
"for i in tqdm(range(1, 2019)):\n",
" json_data = {\n",
" 'pageStart': i,\n",
" 'pageNums': 10,\n",
@@ -73,122 +74,272 @@
" all_data += data_list\n",
"\n",
"df = pd.DataFrame(all_data)\n",
"df.to_excel(r\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\驰加车辆信息.xlsx\", index=False)\n",
"\n"
"df.to_excel(r\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\13719825616驰加车辆信息1.xlsx\", index=False)\n"
],
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 1143/1143 [08:56<00:00, 2.13it/s]\n"
]
}
],
"execution_count": 4
},
{
"metadata": {},
"cell_type": "markdown",
"source": "# 历史维修记录列表(结算单)",
"id": "e166fa181fddc651"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-12-22T03:17:34.270096Z",
"start_time": "2025-12-22T03:12:30.351185Z"
}
},
"cell_type": "code",
"source": [
"import requests\n",
"from tqdm import tqdm\n",
"import pandas as pd\n",
"\n",
"cookies = {\n",
" 'acw_tc': '0a472f4517663729846515826e48e5fe00deb9589551f37ca83749c9ce043f',\n",
" 'Hm_lvt_684c22b31d0037eca5a691cde16370ad': '1765863565,1766372987',\n",
" 'Hm_lpvt_684c22b31d0037eca5a691cde16370ad': '1766372987',\n",
" 'HMACCOUNT': '55F2182717FD6AE6',\n",
" 'e_token': 'd6c91f1dbb754081948988a722287335',\n",
" 'weixin_token': 'Y',\n",
" 'e_c': 'MzY3NTI1OTM0OTg4NzQxMA==',\n",
" 'e_i_o_c_n': 'JTIyJUU5JUE5JUIwJUU1JThBJUEwJUU2JUIxJUJEJUU4JUJEJUE2JUU2JTlDJThEJUU1JThBJUExJUU0JUI4JUFEJUU1JUJGJTgzJUU5JUJDJThFJUU2JUI5JTk2JUU1JThDJUJBJUU1JTlEJTkxJUU1JThGJUEzJUU1JUJBJTk3JTVCKzIwMDI3NDUrJTVEJTIy',\n",
" 'e_i_p_c_n': 'JTIyJUU5JUE5JUIwJUU1JThBJUEwJUU2JUIxJUJEJUU4JUJEJUE2JUU2JTlDJThEJUU1JThBJUExJUU0JUI4JUFEJUU1JUJGJTgzJUU5JUJDJThFJUU2JUI5JTk2JUU1JThDJUJBJUU1JTlEJTkxJUU1JThGJUEzJUU1JUJBJTk3JUU1JUJBJTk3JUU0JUI4JUJCJTVCKzIwMjk4NjkrJTVEJTIy',\n",
"}\n",
"\n",
"headers = {\n",
" 'Accept': 'application/json, text/plain, */*',\n",
" 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',\n",
" 'Cache-Control': 'no-cache',\n",
" 'Connection': 'keep-alive',\n",
" 'Content-Type': 'application/json;charset=UTF-8',\n",
" 'Irisclient': 'PC-web#tedspc',\n",
" 'Origin': 'https://teds.tyreplus.com.cn',\n",
" 'Pragma': 'no-cache',\n",
" 'Referer': 'https://teds.tyreplus.com.cn/tedspc/index.html',\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/143.0.0.0 Safari/537.36 Edg/143.0.0.0',\n",
" 'sec-ch-ua': '\"Microsoft Edge\";v=\"143\", \"Chromium\";v=\"143\", \"Not A(Brand\";v=\"24\"',\n",
" 'sec-ch-ua-mobile': '?0',\n",
" 'sec-ch-ua-platform': '\"Windows\"',\n",
"}\n",
"\n",
"history_all_data = []\n",
"for i in tqdm(range(1, 848)):\n",
" json_data = {\n",
" # 记得修改门店list\n",
" 'storeCodeList': [\n",
" '302558',\n",
" '366900',\n",
" ],\n",
" 'pageStart': i,\n",
" 'pageNums': 10,\n",
" 'pageNum': i,\n",
" 'pageSize': 10,\n",
" }\n",
"\n",
" response = requests.post(\n",
" 'https://teds.tyreplus.com.cn/api/aftersales/payment/queryPaymentSettlementListByCondition',\n",
" cookies=cookies,\n",
" headers=headers,\n",
" json=json_data,\n",
" )\n",
" history_data_list = response.json()['obj']['list']\n",
" history_all_data += history_data_list\n",
"\n",
"df = pd.DataFrame(history_all_data)\n",
"df.to_excel(r\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\结算单.xlsx\", index=False)\n"
],
"id": "51f8f4b21505280a",
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 847/847 [04:53<00:00, 2.89it/s]\n"
"100%|██████████| 2018/2018 [29:27<00:00, 1.14it/s]\n"
]
}
],
"execution_count": 2
},
{
"metadata": {},
"cell_type": "markdown",
"source": "历史维修记录明细(结算单明细)",
"id": "44cdf0d8f5f01c7d"
"id": "e166fa181fddc651",
"metadata": {},
"source": [
"# 历史维修记录列表(结算单)"
]
},
{
"cell_type": "code",
"id": "51f8f4b21505280a",
"metadata": {
"ExecuteTime": {
"end_time": "2025-12-22T09:16:59.210944Z",
"start_time": "2025-12-22T05:46:03.111327Z"
"end_time": "2026-03-24T07:37:35.090160900Z",
"start_time": "2026-03-24T05:31:09.783019900Z"
}
},
"source": [
"import time\n",
"import requests\n",
"from tqdm import tqdm\n",
"import pandas as pd\n",
"\n",
"# ================= 配置区域 =================\n",
"# Cookie 和 Headers 配置\n",
"cookies = {\n",
" 'acw_tc': '76b20f7917743149845914058ebc47559507cd60c8642e0d54dbe45b6da222',\n",
" 'Hm_lvt_684c22b31d0037eca5a691cde16370ad': '1773130169,1774314982',\n",
" 'Hm_lpvt_684c22b31d0037eca5a691cde16370ad': '1774314982',\n",
" 'HMACCOUNT': 'A6A0585E8C70051D',\n",
" 'e_token': 'f44423067c184689a19eb9dc564bf33e',\n",
" 'weixin_token': 'Y',\n",
" 'e_c': 'NTQ0MzQ1MDE0MTA3ODA1Mg==',\n",
" 'e_i_o_c_n': 'JTIyJUU1JTlCJTlCJUU0JUJDJTlBJUU1JUI4JTgyJUU4JThEJUEzJUU5JUFBJThGJUU2JUIxJUJEJUU4JUJEJUE2JUU3JUJCJUI0JUU0JUJGJUFFJUU0JUI4JUFEJUU1JUJGJTgzJTVCKzIwMDM5MDYrJTVEJTIy',\n",
" 'e_i_p_c_n': 'JTIyJUU5JUE5JUIwJUU1JThBJUEwJUU2JUIxJUJEJUU4JUJEJUE2JUU2JTlDJThEJUU1JThBJUExJUU0JUI4JUFEJUU1JUJGJTgzJUU1JTlCJTlCJUU0JUJDJTlBJUU1JUI4JTgyJUU2JUEzJTk1JUU2JUE2JTg4JUU1JTlCJUFEJUU1JUJBJTk3JUU1JUJBJTk3JUU0JUI4JUJCJTVCKzIwMjk5MDkrJTVEJTIy',\n",
"}\n",
"\n",
"headers = {\n",
" 'Accept': 'application/json, text/plain, */*',\n",
" 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',\n",
" 'Connection': 'keep-alive',\n",
" 'Content-Type': 'application/json;charset=UTF-8',\n",
" 'Irisclient': 'PC-web#tedspc',\n",
" 'Origin': 'https://teds.tyreplus.com.cn',\n",
" 'Referer': 'https://teds.tyreplus.com.cn/tedspc/index.html',\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/146.0.0.0 Safari/537.36 Edg/146.0.0.0',\n",
" 'sec-ch-ua': '\"Chromium\";v=\"146\", \"Not-A.Brand\";v=\"24\", \"Microsoft Edge\";v=\"146\"',\n",
" 'sec-ch-ua-mobile': '?0',\n",
" 'sec-ch-ua-platform': '\"Windows\"',\n",
" # 'Cookie': 'acw_tc=76b20f7917743149845914058ebc47559507cd60c8642e0d54dbe45b6da222; Hm_lvt_684c22b31d0037eca5a691cde16370ad=1773130169,1774314982; Hm_lpvt_684c22b31d0037eca5a691cde16370ad=1774314982; HMACCOUNT=A6A0585E8C70051D; e_token=f44423067c184689a19eb9dc564bf33e; weixin_token=Y; e_c=NTQ0MzQ1MDE0MTA3ODA1Mg==; e_i_o_c_n=JTIyJUU1JTlCJTlCJUU0JUJDJTlBJUU1JUI4JTgyJUU4JThEJUEzJUU5JUFBJThGJUU2JUIxJUJEJUU4JUJEJUE2JUU3JUJCJUI0JUU0JUJGJUFFJUU0JUI4JUFEJUU1JUJGJTgzJTVCKzIwMDM5MDYrJTVEJTIy; e_i_p_c_n=JTIyJUU5JUE5JUIwJUU1JThBJUEwJUU2JUIxJUJEJUU4JUJEJUE2JUU2JTlDJThEJUU1JThBJUExJUU0JUI4JUFEJUU1JUJGJTgzJUU1JTlCJTlCJUU0JUJDJTlBJUU1JUI4JTgyJUU2JUEzJTk1JUU2JUE2JTg4JUU1JTlCJUFEJUU1JUJBJTk3JUU1JUJBJTk3JUU0JUI4JUJCJTVCKzIwMjk5MDkrJTVEJTIy',\n",
"}\n",
"\n",
"\n",
"# 业务参数配置\n",
"TARGET_URL = 'https://teds.tyreplus.com.cn/api/aftersales/payment/queryPaymentSettlementListByCondition'\n",
"STORE_CODES = [\"330522\", \"343280\"] # 门店列表\n",
"PAGE_SIZE = 10\n",
"OUTPUT_PATH = r\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\13822673880结算单.xlsx\"\n",
"MAX_RETRIES = 3\n",
"\n",
"# ================= 功能函数 =================\n",
"\n",
"def fetch_page_with_retry(page_num, store_list, max_retries=MAX_RETRIES):\n",
" \"\"\"\n",
" 带重试机制的单页数据获取函数\n",
" :param page_num: 当前页码 (从1开始)\n",
" :param store_list: 门店代码列表\n",
" :param max_retries: 最大重试次数\n",
" :return: 成功的响应JSON对象,若最终失败则返回None\n",
" \"\"\"\n",
" json_data = {\n",
" 'storeCodeList': store_list,\n",
" 'pageStart': page_num,\n",
" 'pageNums': 10,\n",
" 'pageNum': page_num,\n",
" 'pageSize': PAGE_SIZE,\n",
" }\n",
"\n",
" for attempt in range(max_retries):\n",
" try:\n",
" response = requests.post(\n",
" TARGET_URL,\n",
" cookies=cookies,\n",
" headers=headers,\n",
" json=json_data,\n",
" timeout=15 # 增加超时时间以防网络波动\n",
" )\n",
" response.raise_for_status() # 检查HTTP状态码 (如404, 500)\n",
" result = response.json()\n",
"\n",
" # 检查业务逻辑是否成功 (通常code=200或success=true表示成功)\n",
" # 根据实际接口返回调整判断条件,这里假设 obj 存在即视为结构正常\n",
" if 'obj' in result and 'list' in result['obj']:\n",
" return result\n",
" else:\n",
" # 如果返回了错误信息\n",
" error_msg = result.get('msg', result.get('message', 'Unknown business error'))\n",
" print(f\"第{page_num}页业务返回异常: {error_msg}\")\n",
" # 如果是明确的业务错误(如权限不足),通常重试无效,可直接跳出\n",
" if \"权限\" in str(error_msg) or \"token\" in str(error_msg).lower():\n",
" return None\n",
"\n",
" except Exception as e:\n",
" print(f\"第{page_num}页请求失败 (尝试 {attempt+1}/{max_retries}): {str(e)}\")\n",
" if attempt < max_retries - 1:\n",
" wait_time = 2 ** attempt # 指数退避: 1s, 2s, 4s...\n",
" time.sleep(wait_time)\n",
" else:\n",
" print(f\"第{page_num}页最终获取失败,将跳过该页。\")\n",
" return None\n",
"\n",
" return None\n",
"\n",
"# ================= 主执行逻辑 =================\n",
"\n",
"all_data = []\n",
"current_page = 1\n",
"total_records = 0\n",
"total_pages = 0\n",
"\n",
"print(\"正在获取第 1 页数据以计算总记录数...\")\n",
"\n",
"# 1. 获取第一页,确定总数\n",
"first_response = fetch_page_with_retry(current_page, STORE_CODES)\n",
"\n",
"if first_response:\n",
" data_list = first_response['obj']['list']\n",
" all_data += data_list\n",
"\n",
" # 获取总数\n",
" total_records = first_response['obj'].get('total', 0)\n",
" print(f\"✅ 获取成功。总记录数: {total_records}\")\n",
"\n",
" if total_records > 0:\n",
" # 计算总页数 (向上取整)\n",
" total_pages = (total_records + PAGE_SIZE - 1) // PAGE_SIZE\n",
" print(f\"📄 预计总页数: {total_pages} (每页 {PAGE_SIZE} 条)\")\n",
"\n",
" # 2. 循环获取剩余页面\n",
" if total_pages > 1:\n",
" for page_idx in tqdm(range(2, total_pages + 1), desc=\"正在爬取结算单\", initial=1, total=total_pages):\n",
" response = fetch_page_with_retry(page_idx, STORE_CODES)\n",
"\n",
" if response:\n",
" page_data = response['obj']['list']\n",
" all_data += page_data\n",
" else:\n",
" print(f\"⚠️ 警告:第 {page_idx} 页数据获取失败,已跳过。\")\n",
"\n",
" # 礼貌性延时,防止触发风控\n",
" time.sleep(0.5)\n",
" else:\n",
" print(\"ℹ️ 所有数据已在第一页获取完毕,无需继续爬取。\")\n",
" else:\n",
" print(\"️ 未找到任何符合条件的数据。\")\n",
"else:\n",
" print(\"❌ 无法获取第一页数据,程序终止。请检查Cookie是否过期或网络是否正常。\")\n",
"\n",
"# ================= 数据保存 =================\n",
"\n",
"if all_data:\n",
" df = pd.DataFrame(all_data)\n",
" try:\n",
" df.to_excel(OUTPUT_PATH, index=False)\n",
" print(f\"\\n🎉 数据已成功保存至: {OUTPUT_PATH}\")\n",
" print(f\"📊 共保存 {len(df)} 条记录 (期望: {total_records})\")\n",
"\n",
" if len(df) < total_records:\n",
" print(f\"⚠️ 注意:实际保存数量 ({len(df)}) 少于期望数量 ({total_records}),部分页面可能获取失败。\")\n",
"\n",
" except Exception as e:\n",
" print(f\"❌ 保存文件时出错: {e}\")\n",
" print(\"请检查文件路径是否正确,且文件未被其他程序占用。\")\n",
"else:\n",
" print(\"\\n💤 没有数据可保存。\")"
],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"正在获取第 1 页数据以计算总记录数...\n",
"✅ 获取成功。总记录数: 43728\n",
"📄 预计总页数: 4373 (每页 10 条)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"正在爬取结算单: 33%|███▎ | 1441/4373 [38:12<1:29:11, 1.83s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"第1442页请求失败 (尝试 1/3): ('Connection aborted.', ConnectionResetError(10054, '远程主机强迫关闭了一个现有的连接。', None, 10054, None))\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"正在爬取结算单: 51%|█████ | 2241/4373 [1:02:36<1:01:42, 1.74s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"第2242页请求失败 (尝试 1/3): ('Connection aborted.', ConnectionResetError(10054, '远程主机强迫关闭了一个现有的连接。', None, 10054, None))\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"正在爬取结算单: 100%|██████████| 4373/4373 [2:05:27<00:00, 1.72s/it] \n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"🎉 数据已成功保存至: D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\13822673880结算单.xlsx\n",
"📊 共保存 43730 条记录 (期望: 43728)\n"
]
}
],
"execution_count": 3
},
{
"cell_type": "markdown",
"id": "44cdf0d8f5f01c7d",
"metadata": {},
"source": [
"历史维修记录明细(结算单明细)"
]
},
{
"cell_type": "code",
"id": "b7e0d7a4da6c9b03",
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T10:15:04.125375900Z",
"start_time": "2026-03-24T12:31:05.631170600Z"
}
},
"source": [
"import requests\n",
"from tqdm.notebook import tqdm\n",
@@ -196,37 +347,36 @@
"import time\n",
"\n",
"cookies = {\n",
" 'acw_tc': '0a472f4517663729846515826e48e5fe00deb9589551f37ca83749c9ce043f',\n",
" 'Hm_lvt_684c22b31d0037eca5a691cde16370ad': '1765863565,1766372987',\n",
" 'Hm_lpvt_684c22b31d0037eca5a691cde16370ad': '1766372987',\n",
" 'HMACCOUNT': '55F2182717FD6AE6',\n",
" 'e_token': 'd6c91f1dbb754081948988a722287335',\n",
" 'acw_tc': '76b20f7917743149845914058ebc47559507cd60c8642e0d54dbe45b6da222',\n",
" 'Hm_lvt_684c22b31d0037eca5a691cde16370ad': '1773130169,1774314982',\n",
" 'Hm_lpvt_684c22b31d0037eca5a691cde16370ad': '1774314982',\n",
" 'HMACCOUNT': 'A6A0585E8C70051D',\n",
" 'e_token': 'f44423067c184689a19eb9dc564bf33e',\n",
" 'weixin_token': 'Y',\n",
" 'e_c': 'MzY3NTI1OTM0OTg4NzQxMA==',\n",
" 'e_i_o_c_n': 'JTIyJUU5JUE5JUIwJUU1JThBJUEwJUU2JUIxJUJEJUU4JUJEJUE2JUU2JTlDJThEJUU1JThBJUExJUU0JUI4JUFEJUU1JUJGJTgzJUU5JUJDJThFJUU2JUI5JTk2JUU1JThDJUJBJUU1JTlEJTkxJUU1JThGJUEzJUU1JUJBJTk3JTVCKzIwMDI3NDUrJTVEJTIy',\n",
" 'e_i_p_c_n': 'JTIyJUU5JUE5JUIwJUU1JThBJUEwJUU2JUIxJUJEJUU4JUJEJUE2JUU2JTlDJThEJUU1JThBJUExJUU0JUI4JUFEJUU1JUJGJTgzJUU5JUJDJThFJUU2JUI5JTk2JUU1JThDJUJBJUU1JTlEJTkxJUU1JThGJUEzJUU1JUJBJTk3JUU1JUJBJTk3JUU0JUI4JUJCJTVCKzIwMjk4NjkrJTVEJTIy',\n",
" 'e_c': 'NTQ0MzQ1MDE0MTA3ODA1Mg==',\n",
" 'e_i_o_c_n': 'JTIyJUU1JTlCJTlCJUU0JUJDJTlBJUU1JUI4JTgyJUU4JThEJUEzJUU5JUFBJThGJUU2JUIxJUJEJUU4JUJEJUE2JUU3JUJCJUI0JUU0JUJGJUFFJUU0JUI4JUFEJUU1JUJGJTgzJTVCKzIwMDM5MDYrJTVEJTIy',\n",
" 'e_i_p_c_n': 'JTIyJUU5JUE5JUIwJUU1JThBJUEwJUU2JUIxJUJEJUU4JUJEJUE2JUU2JTlDJThEJUU1JThBJUExJUU0JUI4JUFEJUU1JUJGJTgzJUU1JTlCJTlCJUU0JUJDJTlBJUU1JUI4JTgyJUU2JUEzJTk1JUU2JUE2JTg4JUU1JTlCJUFEJUU1JUJBJTk3JUU1JUJBJTk3JUU0JUI4JUJCJTVCKzIwMjk5MDkrJTVEJTIy',\n",
"}\n",
"\n",
"headers = {\n",
" 'Accept': 'application/json, text/plain, */*',\n",
" 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',\n",
" 'Cache-Control': 'no-cache',\n",
" 'Connection': 'keep-alive',\n",
" 'Content-Type': 'application/json;charset=UTF-8',\n",
" 'Irisclient': 'PC-web#tedspc',\n",
" 'Origin': 'https://teds.tyreplus.com.cn',\n",
" 'Pragma': 'no-cache',\n",
" 'Referer': 'https://teds.tyreplus.com.cn/tedspc/index.html',\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/143.0.0.0 Safari/537.36 Edg/143.0.0.0',\n",
" 'sec-ch-ua': '\"Microsoft Edge\";v=\"143\", \"Chromium\";v=\"143\", \"Not A(Brand\";v=\"24\"',\n",
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36 Edg/146.0.0.0',\n",
" 'sec-ch-ua': '\"Chromium\";v=\"146\", \"Not-A.Brand\";v=\"24\", \"Microsoft Edge\";v=\"146\"',\n",
" 'sec-ch-ua-mobile': '?0',\n",
" 'sec-ch-ua-platform': '\"Windows\"',\n",
" # 'Cookie': 'acw_tc=76b20f7917743149845914058ebc47559507cd60c8642e0d54dbe45b6da222; Hm_lvt_684c22b31d0037eca5a691cde16370ad=1773130169,1774314982; Hm_lpvt_684c22b31d0037eca5a691cde16370ad=1774314982; HMACCOUNT=A6A0585E8C70051D; e_token=f44423067c184689a19eb9dc564bf33e; weixin_token=Y; e_c=NTQ0MzQ1MDE0MTA3ODA1Mg==; e_i_o_c_n=JTIyJUU1JTlCJTlCJUU0JUJDJTlBJUU1JUI4JTgyJUU4JThEJUEzJUU5JUFBJThGJUU2JUIxJUJEJUU4JUJEJUE2JUU3JUJCJUI0JUU0JUJGJUFFJUU0JUI4JUFEJUU1JUJGJTgzJTVCKzIwMDM5MDYrJTVEJTIy; e_i_p_c_n=JTIyJUU5JUE5JUIwJUU1JThBJUEwJUU2JUIxJUJEJUU4JUJEJUE2JUU2JTlDJThEJUU1JThBJUExJUU0JUI4JUFEJUU1JUJGJTgzJUU1JTlCJTlCJUU0JUJDJTlBJUU1JUI4JTgyJUU2JUEzJTk1JUU2JUE2JTg4JUU1JTlCJUFEJUU1JUJBJTk3JUU1JUJBJTk3JUU0JUI4JUJCJTVCKzIwMjk5MDkrJTVEJTIy',\n",
"}\n",
"\n",
"df = pd.read_excel(\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\结算单.xlsx\", sheet_name='Sheet1')\n",
"df = pd.read_excel(fr\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\13822673880结算单.xlsx\", sheet_name='Sheet1')\n",
"\n",
"all_data_list = []\n",
"all_service_data = []\n",
@@ -302,32 +452,24 @@
"df3 = pd.DataFrame(all_payment_data)\n",
"\n",
"# 保存到Excel\n",
"df.to_excel(r\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\历史维修记录明细.xlsx\", index=False)\n",
"df1.to_excel(r\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\历史维修记录明细-服务明细.xlsx\", index=False)\n",
"df2.to_excel(r\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\历史维修记录明细-产品明细.xlsx\", index=False)\n",
"df3.to_excel(r\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\历史维修记录明细-支付方式.xlsx\", index=False)\n"
"df.to_excel(r\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\1历史维修记录明细1.xlsx\", index=False)\n",
"df1.to_excel(r\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\1历史维修记录明细-服务明细1.xlsx\",\n",
" index=False)\n",
"df2.to_excel(r\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\1历史维修记录明细-产品明细1.xlsx\",\n",
" index=False)\n",
"df3.to_excel(r\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\1历史维修记录明细-支付方式1.xlsx\",\n",
" index=False)\n"
],
"id": "b7e0d7a4da6c9b03",
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"<>:37: SyntaxWarning: invalid escape sequence '\\I'\n",
"<>:37: SyntaxWarning: invalid escape sequence '\\I'\n",
"C:\\Users\\zy187\\AppData\\Local\\Temp\\ipykernel_29896\\1397566597.py:37: SyntaxWarning: invalid escape sequence '\\I'\n",
" df = pd.read_excel(\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\结算单.xlsx\", sheet_name='Sheet1')\n"
]
},
{
"data": {
"text/plain": [
" 0%| | 0/8463 [00:00<?, ?it/s]"
" 0%| | 0/43730 [00:00<?, ?it/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "6e51c0e7de2f4a7aab44e2c939cba811"
"model_id": "2475aaf2f08b4f3f9b6915bcbc30a4fc"
}
},
"metadata": {},
@@ -340,36 +482,58 @@
"name": "stdout",
"output_type": "stream",
"text": [
"HTTP 请求失败,状态码: 504 (paymentNo: SI2512141629588397)\n",
"请求异常: HTTPSConnectionPool(host='teds.tyreplus.com.cn', port=443): Read timed out. (read timeout=10) (paymentNo: SI2509131018744247)\n",
"请求异常: HTTPSConnectionPool(host='teds.tyreplus.com.cn', port=443): Read timed out. (read timeout=10) (paymentNo: SI2508260841398950)\n",
"请求异常: HTTPSConnectionPool(host='teds.tyreplus.com.cn', port=443): Read timed out. (read timeout=10) (paymentNo: SI2508171023222117)\n",
"请求异常: HTTPSConnectionPool(host='teds.tyreplus.com.cn', port=443): Read timed out. (read timeout=10) (paymentNo: SI2508091817076414)\n",
"请求异常: HTTPSConnectionPool(host='teds.tyreplus.com.cn', port=443): Read timed out. (read timeout=10) (paymentNo: SI2508081059041103)\n",
"请求异常: HTTPSConnectionPool(host='teds.tyreplus.com.cn', port=443): Read timed out. (read timeout=10) (paymentNo: SI2508011823922622)\n"
"请求异常: ('Connection aborted.', ConnectionResetError(10054, '远程主机强迫关闭了一个现有的连接。', None, 10054, None)) (paymentNo: SI2511031810785166)\n",
"请求异常: ('Connection aborted.', ConnectionResetError(10054, '远程主机强迫关闭了一个现有的连接。', None, 10054, None)) (paymentNo: SI2510121646331912)\n",
"请求异常: ('Connection aborted.', ConnectionResetError(10054, '远程主机强迫关闭了一个现有的连接。', None, 10054, None)) (paymentNo: SI2504251333197830)\n",
"请求异常: HTTPSConnectionPool(host='teds.tyreplus.com.cn', port=443): Read timed out. (read timeout=10) (paymentNo: SI2504251333197185)\n",
"HTTP 请求失败,状态码: 504 (paymentNo: SI2504251328192860)\n",
"请求异常: ('Connection aborted.', ConnectionResetError(10054, '远程主机强迫关闭了一个现有的连接。', None, 10054, None)) (paymentNo: SI2504251327191463)\n",
"HTTP 请求失败,状态码: 502 (paymentNo: SI2504251326190989)\n",
"请求异常: ('Connection aborted.', ConnectionResetError(10054, '远程主机强迫关闭了一个现有的连接。', None, 10054, None)) (paymentNo: SI2504251320185538)\n",
"请求异常: ('Connection aborted.', ConnectionResetError(10054, '远程主机强迫关闭了一个现有的连接。', None, 10054, None)) (paymentNo: SI2504251319184980)\n",
"HTTP 请求失败,状态码: 502 (paymentNo: SI2504251316180693)\n",
"请求异常: HTTPSConnectionPool(host='teds.tyreplus.com.cn', port=443): Read timed out. (read timeout=10) (paymentNo: SI2504251302159764)\n"
]
}
],
"execution_count": 3
"execution_count": 5
},
{
"metadata": {},
"cell_type": "code",
"outputs": [],
"execution_count": null,
"source": [
"\n",
"# 保存到Excel\n",
"df.to_excel(r\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\1历史维修记录明细1.xlsx\", index=False)\n",
"df1.to_excel(r\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\1历史维修记录明细-服务明细1.xlsx\",\n",
" index=False)\n",
"df2.to_excel(r\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\1历史维修记录明细-产品明细1.xlsx\",\n",
" index=False)\n",
"df3.to_excel(r\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\1历史维修记录明细-支付方式1.xlsx\",\n",
" index=False)"
],
"id": "bdef2047419fb838"
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"display_name": "F6+宜搭+其它",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
"pygments_lexer": "ipython3",
"version": "3.13.11"
}
},
"nbformat": 4,