Files
F6--/张阳脚本/竞品系统数据导出/测试.ipynb
T
2026-01-30 11:28:35 +08:00

305 lines
13 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"cells": [
{
"cell_type": "code",
"id": "initial_id",
"metadata": {
"collapsed": true,
"ExecuteTime": {
"end_time": "2025-06-26T05:39:09.305879Z",
"start_time": "2025-06-26T05:39:09.248395Z"
}
},
"source": [
"import requests\n",
"import pandas as pd\n",
"from retrying import retry\n",
"from tqdm import tqdm\n",
"\n",
"# 设置重试策略\n",
"@retry(stop_max_attempt_number=3, wait_fixed=2000) # 最多重试3次,每次间隔2秒\n",
"def fetch_url(url, params=None):\n",
" response = requests.get(url, headers=headers, params=params, timeout=10)\n",
" response.raise_for_status() # 抛出 HTTP 错误(如 500\n",
" return response.json()\n",
"\n",
"headers = {\n",
" 'Accept': 'application/json',\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",
" 'Origin': 'https://cms.carisok.com',\n",
" 'Referer': 'https://cms.carisok.com/',\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/137.0.0.0 Safari/537.36 Edg/137.0.0.0',\n",
" 'sec-ch-ua': '\"Microsoft Edge\";v=\"137\", \"Chromium\";v=\"137\", \"Not/A)Brand\";v=\"24\"',\n",
" 'sec-ch-ua-mobile': '?0',\n",
" 'sec-ch-ua-platform': '\"Windows\"',\n",
"}\n",
"\n",
"car_data = []\n",
"operate_data = []\n",
"order_data = []\n",
"server_data = []\n",
"settlement_data = []\n",
"\n",
"for i in tqdm(range(1, 350)):\n",
" list_url = f'https://ssapp-api.carisok.com/pc.php/PcPickcarOrder/lists?name=&mobile=&orderState=0&workState=0&businessType=0&page={i}&pagesize=20&carNo=&orderNo=&operate_count=&companyName=&startDate&endDate&api_version=4.00&__trace_id=6f72ab8e-f569-4b5d-aa7b-c890eec6756d-store&token=4d62a33aa979d6d242d6b0198afbbf27'\n",
"\n",
" response = fetch_url(list_url)\n",
"\n",
" history_list = response.get('data').get(\"listData\")\n",
" \n",
" for history in history_list:\n",
" orderId = history.get('orderId')\n",
"\n",
" params = {\n",
" 'orderId': orderId,\n",
" 'businessType': '1',\n",
" 'api_version': '4.00',\n",
" '__trace_id': 'c41f197b-ef5c-4813-8d97-8947f4289243-store',\n",
" 'token': '4d62a33aa979d6d242d6b0198afbbf27',\n",
" }\n",
" response = requests.get('https://ssapp-api.carisok.com/pc.php/GainRecord/get_order_detail', params=params, headers=headers)\n",
"\n",
" data = response.json().get('data')\n",
" \n",
" carInfo = data.get('carInfo', [])\n",
" operate = data.get('operate', [])\n",
" orderInfo = data.get('orderInfo', [])\n",
" serverInfo = data.get('serverInfo', [])\n",
" settlementInfo = data.get('settlementInfo', [])\n",
"\n",
"\n",
"\n",
" if isinstance(carInfo, dict):\n",
" carInfo[\"orderid\"] = orderId\n",
" car_data.append(carInfo)\n",
" elif isinstance(carInfo, list):\n",
" for item in carInfo:\n",
" if isinstance(item, dict):\n",
" item[\"orderid\"] = orderId\n",
" car_data.append(item)\n",
" \n",
" # 处理 orderInfo(可能是字典或列表)\n",
" if isinstance(orderInfo, dict):\n",
" orderInfo[\"orderid\"] = orderId\n",
" order_data.append(orderInfo)\n",
" elif isinstance(orderInfo, list):\n",
" for item in orderInfo:\n",
" if isinstance(item, dict):\n",
" item[\"orderid\"] = orderId\n",
" order_data.append(item)\n",
" \n",
" # 处理 operate(通常是列表,但也可能不是)\n",
" if isinstance(operate, list):\n",
" for item in operate:\n",
" if isinstance(item, dict):\n",
" item[\"orderid\"] = orderId\n",
" operate_data.append(item)\n",
" \n",
" # 处理 serverInfo(可能是字典或列表)\n",
" if isinstance(serverInfo, dict):\n",
" serverInfo[\"orderid\"] = orderId\n",
" server_data.append(serverInfo)\n",
" elif isinstance(serverInfo, list):\n",
" for item in serverInfo:\n",
" if isinstance(item, dict):\n",
" item[\"orderid\"] = orderId\n",
" server_data.append(item)\n",
" \n",
" # 处理 settlementInfo(可能是字典或列表)\n",
" if isinstance(settlementInfo, dict):\n",
" settlementInfo[\"orderid\"] = orderId\n",
" settlement_data.append(settlementInfo)\n",
" elif isinstance(settlementInfo, list):\n",
" for item in settlementInfo:\n",
" if isinstance(item, dict):\n",
" item[\"orderid\"] = orderId\n",
" settlement_data.append(item)\n",
" \n",
" \n",
"\n",
"# 写入 CSV 文件\n",
"df1 = pd.DataFrame(car_data)\n",
"df2 = pd.DataFrame(operate_data)\n",
"df3 = pd.DataFrame(order_data)\n",
"df4 = pd.DataFrame(server_data)\n",
"df5 = pd.DataFrame(settlement_data)\n",
"\n",
"output_path = r'D:\\Idea Project\\F6+宜搭+其它(1)\\new\\文件输出\\\\'\n",
"\n",
"df1.to_csv(output_path + 'car.csv', index=False)\n",
"df2.to_csv(output_path + 'operate.csv', index=False)\n",
"df3.to_csv(output_path + 'order.csv', index=False)\n",
"df4.to_csv(output_path + 'server.csv', index=False)\n",
"df5.to_csv(output_path + 'settlement.csv', index=False)\n",
"\n",
"print(\"✅ 数据写入完成\")"
],
"outputs": [
{
"ename": "NameError",
"evalue": "name 'tqdm' is not defined",
"output_type": "error",
"traceback": [
"\u001B[1;31m---------------------------------------------------------------------------\u001B[0m",
"\u001B[1;31mNameError\u001B[0m Traceback (most recent call last)",
"Cell \u001B[1;32mIn[48], line 33\u001B[0m\n\u001B[0;32m 30\u001B[0m server_data \u001B[38;5;241m=\u001B[39m []\n\u001B[0;32m 31\u001B[0m settlement_data \u001B[38;5;241m=\u001B[39m []\n\u001B[1;32m---> 33\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m i \u001B[38;5;129;01min\u001B[39;00m tqdm(\u001B[38;5;28mrange\u001B[39m(\u001B[38;5;241m1\u001B[39m, \u001B[38;5;241m350\u001B[39m)):\n\u001B[0;32m 34\u001B[0m list_url \u001B[38;5;241m=\u001B[39m \u001B[38;5;124mf\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mhttps://ssapp-api.carisok.com/pc.php/PcPickcarOrder/lists?name=&mobile=&orderState=0&workState=0&businessType=0&page=\u001B[39m\u001B[38;5;132;01m{\u001B[39;00mi\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m&pagesize=20&carNo=&orderNo=&operate_count=&companyName=&startDate&endDate&api_version=4.00&__trace_id=6f72ab8e-f569-4b5d-aa7b-c890eec6756d-store&token=4d62a33aa979d6d242d6b0198afbbf27\u001B[39m\u001B[38;5;124m'\u001B[39m\n\u001B[0;32m 36\u001B[0m response \u001B[38;5;241m=\u001B[39m fetch_url(list_url)\n",
"\u001B[1;31mNameError\u001B[0m: name 'tqdm' is not defined"
]
}
],
"execution_count": 48
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-06-26T05:35:06.024711Z",
"start_time": "2025-06-26T05:35:05.187886Z"
}
},
"cell_type": "code",
"source": [
"import requests\n",
"\n",
"headers = {\n",
" 'Accept': 'application/json',\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",
" 'Origin': 'https://cms.carisok.com',\n",
" 'Referer': 'https://cms.carisok.com/',\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/137.0.0.0 Safari/537.36 Edg/137.0.0.0',\n",
" 'sec-ch-ua': '\"Microsoft Edge\";v=\"137\", \"Chromium\";v=\"137\", \"Not/A)Brand\";v=\"24\"',\n",
" 'sec-ch-ua-mobile': '?0',\n",
" 'sec-ch-ua-platform': '\"Windows\"',\n",
"}\n",
"orderId = '1334846'\n",
"params = {\n",
" 'orderId': orderId,\n",
" 'businessType': '1',\n",
" 'api_version': '4.00',\n",
" '__trace_id': 'c41f197b-ef5c-4813-8d97-8947f4289243-store',\n",
" 'token': '4d62a33aa979d6d242d6b0198afbbf27',\n",
"}\n",
"\n",
"response = requests.get('https://ssapp-api.carisok.com/pc.php/GainRecord/get_order_detail', params=params, headers=headers)\n",
"\n",
"data = response.json().get('data')\n",
"\n",
"carInfo = data.get('carInfo', {})\n",
"operate = data.get('operate', [])\n",
"serverInfo = data.get('serverInfo', [])\n",
"orderInfo = data.get('orderInfo', {})\n",
"settlementInfo = data.get('settlementInfo', [])\n",
"\n",
"car_data=[]\n",
"operate_data=[]\n",
"order_data = []\n",
"server_data = []\n",
"settlement_data = []\n",
"# 处理 carInfo(可能是字典或列表)\n",
"if isinstance(carInfo, dict):\n",
" carInfo[\"orderid\"] = orderId\n",
" car_data.append(carInfo)\n",
"elif isinstance(carInfo, list):\n",
" for item in carInfo:\n",
" if isinstance(item, dict):\n",
" item[\"orderid\"] = orderId\n",
" car_data.append(item)\n",
"\n",
"# 处理 orderInfo(可能是字典或列表)\n",
"if isinstance(orderInfo, dict):\n",
" orderInfo[\"orderid\"] = orderId\n",
" order_data.append(orderInfo)\n",
"elif isinstance(orderInfo, list):\n",
" for item in orderInfo:\n",
" if isinstance(item, dict):\n",
" item[\"orderid\"] = orderId\n",
" order_data.append(item)\n",
"\n",
"# 处理 operate(通常是列表,但也可能不是)\n",
"if isinstance(operate, list):\n",
" for item in operate:\n",
" if isinstance(item, dict):\n",
" item[\"orderid\"] = orderId\n",
" operate_data.append(item)\n",
"\n",
"# 处理 serverInfo(可能是字典或列表)\n",
"if isinstance(serverInfo, dict):\n",
" serverInfo[\"orderid\"] = orderId\n",
" server_data.append(serverInfo)\n",
"elif isinstance(serverInfo, list):\n",
" for item in serverInfo:\n",
" if isinstance(item, dict):\n",
" item[\"orderid\"] = orderId\n",
" server_data.append(item)\n",
"\n",
"# 处理 settlementInfo(可能是字典或列表)\n",
"if isinstance(settlementInfo, dict):\n",
" settlementInfo[\"orderid\"] = orderId\n",
" settlement_data.append(settlementInfo)\n",
"elif isinstance(settlementInfo, list):\n",
" for item in settlementInfo:\n",
" if isinstance(item, dict):\n",
" item[\"orderid\"] = orderId\n",
" settlement_data.append(item)\n",
" \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"df1 = pd.DataFrame(car_data)\n",
"df2 = pd.DataFrame(operate_data)\n",
"df3 = pd.DataFrame(order_data)\n",
"df4 = pd.DataFrame(server_data)\n",
"df5 = pd.DataFrame(settlement_data)\n",
"\n",
"df1.to_csv(r'D:\\Idea Project\\F6+宜搭+其它(1)\\new\\文件输出\\car.csv', index=False)\n",
"df2.to_csv(r'D:\\Idea Project\\F6+宜搭+其它(1)\\new\\文件输出\\operate.csv', index=False)\n",
"df3.to_csv(r'D:\\Idea Project\\F6+宜搭+其它(1)\\new\\文件输出\\order.csv', index=False)\n",
"df4.to_csv(r'D:\\Idea Project\\F6+宜搭+其它(1)\\new\\文件输出\\server.csv', index=False)\n",
"df5.to_csv(r'D:\\Idea Project\\F6+宜搭+其它(1)\\new\\文件输出\\settlement.csv', index=False)\n",
"print(\"数据写入完成\")"
],
"id": "e1ca5734b455a269",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"数据写入完成\n"
]
}
],
"execution_count": 42
}
],
"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
}