1259 lines
56 KiB
Plaintext
1259 lines
56 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### 不同的门店修改 'departmentID' 荷载参数"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## 1.卡列表"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"登录成功!\n",
|
|
"page:1 page:2 page:3 page:4 page:5 page:6 page:7 page:8 page:9 page:10 page:11 page:12 page:13 page:14 page:15 page:16 page:17 page:18 page:19 page:20 page:21 page:22 page:23 page:24 page:25 page:26 page:27 page:28 page:29 page:30 page:31 page:32 page:33 page:34 page:35 page:36 page:37 page:38 page:39 page:40 page:41 page:42 page:43 page:44 page:45 page:46 page:47 page:48 page:49 page:50 page:51 page:52 page:53 page:54 page:55 page:56 page:57 page:58 page:59 page:60 page:61 page:62 page:63 page:64 page:65 page:66 page:67 page:68 page:69 page:70 page:71 page:72 page:73 page:74 page:75 page:76 page:77 page:78 page:79 page:80 page:81 page:82 page:83 page:84 page:85 page:86 page:87 page:88 page:89 page:90 page:91 page:92 page:93 page:94 page:95 page:96 page:97 page:98 page:99 page:100 page:101 page:102 page:103 page:104 page:105 page:106 page:107 page:108 page:109 page:110 page:111 page:112 page:113 page:114 page:115 page:116 page:117 page:118 page:119 page:120 page:121 page:122 page:123 page:124 page:125 page:126 page:127 page:128 page:129 page:130 page:131 page:132 page:133 page:134 page:135 page:136 page:137 page:138 page:139 page:140 page:141 page:142 page:143 page:144 page:145 page:146 page:147 page:148 page:149 page:150 page:151 page:152 page:153 page:154 page:155 page:156 page:157 page:158 page:159 page:160 page:161 page:162 page:163 page:164 page:165 page:166 page:167 page:168 page:169 page:170 page:171 page:172 page:173 page:174 page:175 page:176 page:177 page:178 page:179 page:180 page:181 page:182 page:183 page:184 page:185 page:186 page:187 page:188 page:189 page:190 page:191 page:192 page:193 page:194 page:195 page:196 page:197 page:198 page:199 page:200 "
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"import requests\n",
|
|
"import pandas as pd\n",
|
|
"import time\n",
|
|
"from selenium import webdriver\n",
|
|
"from selenium.webdriver.common.keys import Keys\n",
|
|
"from selenium.webdriver.support import expected_conditions as EC\n",
|
|
"from selenium.webdriver.common.by import By\n",
|
|
"from selenium.webdriver.support.wait import WebDriverWait\n",
|
|
"import numpy as np\n",
|
|
"from urllib.parse import unquote\n",
|
|
"\n",
|
|
"\n",
|
|
"def get_cookie_dict():\n",
|
|
" \"\"\" 使用selenium 获取最新的cookie \"\"\"\n",
|
|
"\n",
|
|
" options = webdriver.ChromeOptions()\n",
|
|
" options.add_argument('headless')\n",
|
|
"\n",
|
|
" name = '徐红艳'\n",
|
|
" password = '19850605'\n",
|
|
"\n",
|
|
" driver = webdriver.Chrome(executable_path=r\"C:\\Users\\admin\\Desktop\\Python脚本\\chromedriver.exe\", options=options)\n",
|
|
" # driver = webdriver.Chrome(options=options) # 不显示浏览器窗口\n",
|
|
" driver.maximize_window() # 最大化浏览器窗口\n",
|
|
" # 打开网页 进行登录\n",
|
|
" driver.get('http://cd.dazhengren.com:9006/')\n",
|
|
"\n",
|
|
" # 在输入框中输入账号和密码\n",
|
|
" username = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//input[@id=\"uname\"]')))\n",
|
|
" pwd = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//input[@id=\"upass\"]')))\n",
|
|
" enter = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//button[@type=\"submit\"]')))\n",
|
|
"\n",
|
|
" username.clear()\n",
|
|
" username.send_keys(name)\n",
|
|
" pwd.clear()\n",
|
|
" pwd.send_keys(password)\n",
|
|
" enter.click()\n",
|
|
" time.sleep(1)\n",
|
|
" print('登录成功!')\n",
|
|
" cookies_list = driver.get_cookies()\n",
|
|
"\n",
|
|
" new_cookies_list = [] # 只包含 name 和 value key 的cookie\n",
|
|
" for cookie in cookies_list:\n",
|
|
" new_cookies_list.append([cookie.get('name'), unquote(cookie.get('value'))])\n",
|
|
"\n",
|
|
" # 将cookies 组合成字符串 name=value形式\n",
|
|
" new_cookies_list = [f\"{item[0]}={item[-1]}\" for item in new_cookies_list]\n",
|
|
" new_cookies_list = [item.encode('utf-8').decode('latin-1') for item in new_cookies_list if len(item)>256]\n",
|
|
" cookies = '; '.join(new_cookies_list)\n",
|
|
" cookies = {item.split('=')[0]: item.split('=')[1] for item in cookies.split('; ')}\n",
|
|
"\n",
|
|
" return cookies\n",
|
|
"\n",
|
|
"\n",
|
|
"# 获取列表页API\n",
|
|
"list_api = \"http://cd.dazhengren.com:9006/FMS/CardListByType\"\n",
|
|
"\n",
|
|
"# cookies = 'dzrEmployeeNameCookie=徐红艳; dzrkbs=8E97058EFB55D58541760AD7011841E0C7CA617D19FA579ADB6DF0D7F5516970448E2F5064B914801F7600CB3FB4C931BCADC22247FD8E19675E15A65CC3DA1FEB46B4ED8CDB8112DE6EEC530BE4EAE48D2A6DB92044C650B9E8C03DDF123D26314FC66F1E183901B113FF20115B17E4B3E7000D38A829A0ED8265700FE16C5AA5631EA8B5AD5B877B3B764846F7AC9B36ADF09627788FB83F00276CA3B26BF3C2B1E68E679622442464ACCA21D9785594B830CDEE205131D5A6382B3284F326B0B5FD3A8477DBA136364BCB1625D9045B5FAD5437CE95EB03B8546B34114D00CC1FC2125945D1E037D7D44ABB2C48188DB2427E2CA94236B63E5878EF99C701EB1E2223B95C6D6F87A0EC85A610E720'\n",
|
|
"# cookies = cookies.encode('utf-8').decode('latin-1')\n",
|
|
"# cookies={item.split('=')[0]:item.split('=')[1] for item in cookies.split('; ')}\n",
|
|
"\n",
|
|
"cookies = get_cookie_dict()\n",
|
|
" \n",
|
|
"# 秦皇岛黄河大道店 departmentID: 73 1\n",
|
|
"# 秦皇岛站前店 departmentID: 72 1\n",
|
|
"# 霸州店 departmentID: 2247 1\n",
|
|
"\n",
|
|
"# 秦皇岛友谊路店,departmentID: 2238 1\n",
|
|
"# 秦皇岛西港路店, departmentID: 74 1\n",
|
|
"# 秦皇岛和平店, departmentID: 2252 1\n",
|
|
"# 秦皇岛高速口店, departmentID: 2254 1\n",
|
|
"# 秦皇岛海滨路店, departmentID: 2239 1\n",
|
|
"# 廊坊胜芳店 departmentID: 2229 1\n",
|
|
"\n",
|
|
"TOTALPAGES = 200\n",
|
|
"departmentID = 72\n",
|
|
"result_data = []\n",
|
|
"\n",
|
|
"for page in range(1, TOTALPAGES+1):\n",
|
|
" # time.sleep(random.randint(1,5))\n",
|
|
" try:\n",
|
|
" print(f'page:{page}', end=' ')\n",
|
|
"\n",
|
|
" list_api_payload = {\n",
|
|
" 'typeid': 0,\n",
|
|
" 'start': None,\n",
|
|
" 'end': None,\n",
|
|
" 'CardNum': None,\n",
|
|
" 'departmentID': departmentID,\n",
|
|
" 'ipage': page\n",
|
|
" }\n",
|
|
"\n",
|
|
" headers = {\n",
|
|
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.80 Safari/537.36 Edg/98.0.1108.50',\n",
|
|
" 'Referer': 'http://cd.dazhengren.com: 9006/FMS/GetCardListByType'\n",
|
|
" }\n",
|
|
"\n",
|
|
" while True:\n",
|
|
" try:\n",
|
|
" list_res = requests.post(list_api, data=list_api_payload, cookies=cookies)\n",
|
|
" list_data = list_res.json().get('jsdata')\n",
|
|
" break\n",
|
|
" except:\n",
|
|
" cookies = get_cookie_dict()\n",
|
|
" print(cookies)\n",
|
|
" continue\n",
|
|
"\n",
|
|
" for row in list_data:\n",
|
|
" data = {\n",
|
|
" '卡类型': row.get('MemberCardTypeName'),\n",
|
|
" '卡号': row.get('CardNum'),\n",
|
|
" '客户名称': row.get('CustomerName'),\n",
|
|
" '车牌号码': row.get('CarNum'),\n",
|
|
" '开卡时间': row.get('InsertDate'),\n",
|
|
" '开卡店面': row.get('DepartmentName'),\n",
|
|
" '状态': row.get('ostate'),\n",
|
|
" '售卡金额': row.get('skPrice'),\n",
|
|
" '开卡金额': row.get('Price'),\n",
|
|
" '余额': row.get('balance'),\n",
|
|
" '备注': row.get('remarks'),\n",
|
|
" }\n",
|
|
"\n",
|
|
" result_data.append(data)\n",
|
|
" except Exception as e:\n",
|
|
" print(e)\n",
|
|
" print('出错了', end=' ')\n",
|
|
" break\n",
|
|
"\n",
|
|
" # break\n",
|
|
"\n",
|
|
"df_list = pd.DataFrame(result_data)\n",
|
|
"df_list.head()\n",
|
|
"df_list.to_excel(r'C:\\Users\\admin\\Desktop\\1111111111111秦皇岛站前店路店,,.xlsx')\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"df_list.to_excel(r'C:\\Users\\admin\\Desktop\\品牌零件号查询云材料1111111111.xlsx')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 15,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"array(['售出', '在库'], dtype=object)"
|
|
]
|
|
},
|
|
"execution_count": 15,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"df_list['状态'].unique()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 16,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"非售出笔数:63\n",
|
|
"售出笔数:257\n",
|
|
"总笔数:320\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"print(f\"非售出笔数:{df_list.loc[df_list['状态']!='售出',:].shape[0]}\\n售出笔数:{df_list.loc[df_list['状态']=='售出',:].shape[0]}\\n总笔数:{df_list.shape[0]}\")\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 17,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"售卡金额:124990,开卡金额:0,余额:0\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"df_saleOut = df_list.loc[df_list['状态']=='售出',:] # 售出的卡\n",
|
|
"print(f\"售卡金额:{df_saleOut['售卡金额'].sum()},开卡金额:{df_saleOut['开卡金额'].sum()},余额:{df_list['余额'].sum()}\")\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 18,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"df_list.to_excel('卡列表_廊坊胜芳店.xlsx',index=False)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## 2.工单历史 -- 接口(postman 生成)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 58,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<style scoped>\n",
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
" vertical-align: middle;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe tbody tr th {\n",
|
|
" vertical-align: top;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe thead th {\n",
|
|
" text-align: right;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>施工单编号</th>\n",
|
|
" <th>服务门店</th>\n",
|
|
" <th>客户名称</th>\n",
|
|
" <th>联系电话</th>\n",
|
|
" <th>车牌号</th>\n",
|
|
" <th>保养时间</th>\n",
|
|
" <th>实收金额</th>\n",
|
|
" <th>车型</th>\n",
|
|
" <th>配件</th>\n",
|
|
" <th>服务</th>\n",
|
|
" <th>行驶里程</th>\n",
|
|
" <th>下次保养</th>\n",
|
|
" <th>派工单查看</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>419</th>\n",
|
|
" <td>SGDXC201806020849400963</td>\n",
|
|
" <td>霸州店</td>\n",
|
|
" <td>测试号</td>\n",
|
|
" <td>13103128888</td>\n",
|
|
" <td>冀FFFFFH</td>\n",
|
|
" <td>2018-06-02 08:47:56</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>别克凯越 上市年份[2013年2月]生产年份[2013] 1.5 手自一体 尊享版</td>\n",
|
|
" <td></td>\n",
|
|
" <td>洗车;</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>15000</td>\n",
|
|
" <td></td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>420</th>\n",
|
|
" <td>SGDXC201806020849090157</td>\n",
|
|
" <td>霸州店</td>\n",
|
|
" <td>测试号</td>\n",
|
|
" <td>13103128888</td>\n",
|
|
" <td>冀FFFFFH</td>\n",
|
|
" <td>2018-06-02 08:47:24</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>别克凯越 上市年份[2013年2月]生产年份[2013] 1.5 手自一体 尊享版</td>\n",
|
|
" <td></td>\n",
|
|
" <td>洗车;</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>15000</td>\n",
|
|
" <td></td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>421</th>\n",
|
|
" <td>SGDXC201806020848352735</td>\n",
|
|
" <td>霸州店</td>\n",
|
|
" <td>测试号</td>\n",
|
|
" <td>13103128888</td>\n",
|
|
" <td>冀FFFFFH</td>\n",
|
|
" <td>2018-06-02 08:46:50</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>别克凯越 上市年份[2013年2月]生产年份[2013] 1.5 手自一体 尊享版</td>\n",
|
|
" <td></td>\n",
|
|
" <td>洗车;</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>15000</td>\n",
|
|
" <td></td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>422</th>\n",
|
|
" <td>SGDXC201806020847002869</td>\n",
|
|
" <td>霸州店</td>\n",
|
|
" <td>测试号</td>\n",
|
|
" <td>13103128888</td>\n",
|
|
" <td>冀FFFFFH</td>\n",
|
|
" <td>2018-06-02 08:45:15</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>别克凯越 上市年份[2013年2月]生产年份[2013] 1.5 手自一体 尊享版</td>\n",
|
|
" <td></td>\n",
|
|
" <td>洗车;</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>15000</td>\n",
|
|
" <td></td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>423</th>\n",
|
|
" <td>SGDXC201806020845021548</td>\n",
|
|
" <td>霸州店</td>\n",
|
|
" <td>测试号</td>\n",
|
|
" <td>13103128888</td>\n",
|
|
" <td>冀FFFFFH</td>\n",
|
|
" <td>2018-06-02 08:43:17</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>别克凯越 上市年份[2013年2月]生产年份[2013] 1.5 手自一体 尊享版</td>\n",
|
|
" <td></td>\n",
|
|
" <td>洗车;</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>15000</td>\n",
|
|
" <td></td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" 施工单编号 服务门店 客户名称 联系电话 车牌号 \\\n",
|
|
"419 SGDXC201806020849400963 霸州店 测试号 13103128888 冀FFFFFH \n",
|
|
"420 SGDXC201806020849090157 霸州店 测试号 13103128888 冀FFFFFH \n",
|
|
"421 SGDXC201806020848352735 霸州店 测试号 13103128888 冀FFFFFH \n",
|
|
"422 SGDXC201806020847002869 霸州店 测试号 13103128888 冀FFFFFH \n",
|
|
"423 SGDXC201806020845021548 霸州店 测试号 13103128888 冀FFFFFH \n",
|
|
"\n",
|
|
" 保养时间 实收金额 车型 配件 \\\n",
|
|
"419 2018-06-02 08:47:56 0.0 别克凯越 上市年份[2013年2月]生产年份[2013] 1.5 手自一体 尊享版 \n",
|
|
"420 2018-06-02 08:47:24 0.0 别克凯越 上市年份[2013年2月]生产年份[2013] 1.5 手自一体 尊享版 \n",
|
|
"421 2018-06-02 08:46:50 0.0 别克凯越 上市年份[2013年2月]生产年份[2013] 1.5 手自一体 尊享版 \n",
|
|
"422 2018-06-02 08:45:15 0.0 别克凯越 上市年份[2013年2月]生产年份[2013] 1.5 手自一体 尊享版 \n",
|
|
"423 2018-06-02 08:43:17 0.0 别克凯越 上市年份[2013年2月]生产年份[2013] 1.5 手自一体 尊享版 \n",
|
|
"\n",
|
|
" 服务 行驶里程 下次保养 派工单查看 \n",
|
|
"419 洗车; 0.0 15000 \n",
|
|
"420 洗车; 0.0 15000 \n",
|
|
"421 洗车; 0.0 15000 \n",
|
|
"422 洗车; 0.0 15000 \n",
|
|
"423 洗车; 0.0 15000 "
|
|
]
|
|
},
|
|
"execution_count": 58,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"import requests\n",
|
|
"import json\n",
|
|
"\n",
|
|
"url = \"http://cd.dazhengren.com:9006/CRM/WorkOrderList\"\n",
|
|
"\n",
|
|
"\n",
|
|
"headers = {\n",
|
|
" 'Cookie': 'dzrEmployeeNameCookie=%e5%be%90%e7%ba%a2%e8%89%b3; dzrkbs=4D1D9EB5DA9D7A1FF5BEF7000205FA1CCE44693DFB531C3C16B64397408255B9586738090A1B817E58673A5B7AA22DEA91E6DBF20F6659CF5220A2536D0549923C0BC8E02119B38BE8D5EC461806A0840F77042D395E5EDA7820B564BDE2B6A22A37F1C6F8A18349B80DC9DDB2DDC418246E5038ECA3824D633F624B68BA9C87A85D8687D1E1EE89247E46A6AD62649A8874AC960D92186C3AD24B559FB6E3C9ED823BB5ADD534BC113699FC2FE1B58187ECFC1D447A4B5502180C8273F04097598E509FF9C3B6EA100CF00144207066212320AE615EF0C1F7040A53D1AEC581997BAB0D90F331B78F93CA31933E97A58B6FBFBCF271A51CA8DC7AE91FC7B9F2FE9639EAAAFED3702CF21256AB00F95A',\n",
|
|
" 'Content-Type': 'application/x-www-form-urlencoded'\n",
|
|
"}\n",
|
|
"\n",
|
|
"result = []\n",
|
|
"\n",
|
|
"# PAGES = 2939\n",
|
|
"# DepartmentID = 73 # 秦皇岛黄河大道店\n",
|
|
"# PAGES = 3343\n",
|
|
"# DepartmentID = 72 # 秦皇岛站前店\n",
|
|
"\n",
|
|
"PAGES = 1522\n",
|
|
"DepartmentID = 2247 # 霸州店\n",
|
|
"\n",
|
|
"\n",
|
|
"for page in range(1494,PAGES+1):\n",
|
|
" # time.sleep(2)\n",
|
|
" payload = f'iCurrPage={page}&start=&end=&DepartmentID={DepartmentID}&CustomerPhone=&CommodityTypeID=&SeviceItemTypeID=&ServiceItemNum=&VisitType=1&settleType=0&CarNum=&WorkOrderNum=&Type=2'\n",
|
|
"\n",
|
|
" response = requests.request(\"POST\", url, headers=headers, data=payload)\n",
|
|
"\n",
|
|
" data = json.loads(response.json().get('jsdata'))\n",
|
|
" for item in data:\n",
|
|
" info = {\n",
|
|
" '施工单编号': item.get('WorkOrderNum'),\n",
|
|
" '服务门店': item.get('DepartmentName'),\n",
|
|
" '客户名称': item.get('CustomerName'),\n",
|
|
" '联系电话': item.get('CustomerPhone'),\n",
|
|
" '车牌号': item.get('CarNum'),\n",
|
|
" '保养时间': item.get('InsertDate'),\n",
|
|
" '实收金额': item.get('Actualreceivable'),\n",
|
|
" '车型': item.get('CarName'),\n",
|
|
" '配件': item.get('CommodityAll'),\n",
|
|
" '服务': item.get('ServiceItemAll'),\n",
|
|
" '行驶里程': item.get('Mileage'),\n",
|
|
" '下次保养': item.get('Mileageyj'),\n",
|
|
" '派工单查看': item.get('KeyPath'),\n",
|
|
" }\n",
|
|
"\n",
|
|
" result.append(info)\n",
|
|
"\n",
|
|
"\n",
|
|
" # break\n",
|
|
"\n",
|
|
"df_result = pd.DataFrame(result)\n",
|
|
"df_result.tail()\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 59,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"(1522, 424)"
|
|
]
|
|
},
|
|
"execution_count": 59,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"page,len(result)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 60,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<style scoped>\n",
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
" vertical-align: middle;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe tbody tr th {\n",
|
|
" vertical-align: top;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe thead th {\n",
|
|
" text-align: right;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>施工单编号</th>\n",
|
|
" <th>服务门店</th>\n",
|
|
" <th>客户名称</th>\n",
|
|
" <th>联系电话</th>\n",
|
|
" <th>车牌号</th>\n",
|
|
" <th>保养时间</th>\n",
|
|
" <th>实收金额</th>\n",
|
|
" <th>车型</th>\n",
|
|
" <th>配件</th>\n",
|
|
" <th>服务</th>\n",
|
|
" <th>行驶里程</th>\n",
|
|
" <th>下次保养</th>\n",
|
|
" <th>派工单查看</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>SGD201806180954574117</td>\n",
|
|
" <td>霸州店</td>\n",
|
|
" <td>徐龙龙</td>\n",
|
|
" <td>13722629066</td>\n",
|
|
" <td>冀R182G6</td>\n",
|
|
" <td>2018-06-18 10:37:10</td>\n",
|
|
" <td>40.0</td>\n",
|
|
" <td>大众POLO 上市年份[2014年5月]生产年份[2015] 1.6 手自一体 舒适版</td>\n",
|
|
" <td>浩天机油滤清器HTJ-8004;</td>\n",
|
|
" <td></td>\n",
|
|
" <td>60746.0</td>\n",
|
|
" <td>65746</td>\n",
|
|
" <td></td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>SGD201806180939158819</td>\n",
|
|
" <td>霸州店</td>\n",
|
|
" <td>先生</td>\n",
|
|
" <td>13932625626</td>\n",
|
|
" <td>冀RULL39</td>\n",
|
|
" <td>2018-06-18 09:37:44</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>大众朗逸 上市年份[2011年8月]生产年份[2012] 1.6 手动 品悠版</td>\n",
|
|
" <td></td>\n",
|
|
" <td>打蜡;镀膜;镀晶;</td>\n",
|
|
" <td>5000.0</td>\n",
|
|
" <td>4000</td>\n",
|
|
" <td></td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>SGD201806180934044712</td>\n",
|
|
" <td>霸州店</td>\n",
|
|
" <td>杨</td>\n",
|
|
" <td>13784829111</td>\n",
|
|
" <td>冀RYC899</td>\n",
|
|
" <td>2018-06-18 09:37:36</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>别克凯越 上市年份[2005年11月]生产年份[2005] 1.6 手动 LX 基本版</td>\n",
|
|
" <td></td>\n",
|
|
" <td>打蜡;</td>\n",
|
|
" <td>141381.0</td>\n",
|
|
" <td>141381</td>\n",
|
|
" <td></td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>SGD201806180929106029</td>\n",
|
|
" <td>霸州店</td>\n",
|
|
" <td>赵亚征</td>\n",
|
|
" <td>18630677774</td>\n",
|
|
" <td>冀RCA888</td>\n",
|
|
" <td>2018-06-18 09:37:36</td>\n",
|
|
" <td>110.0</td>\n",
|
|
" <td>丰田普拉多 上市年份[2007年1月]生产年份[2009] 4.0 手自一体 GX</td>\n",
|
|
" <td>嘉实多金嘉护10W40 4L SN;博世机油滤清器0986AF0060;博世空气滤清器098...</td>\n",
|
|
" <td>更换机油;更换机油滤芯;</td>\n",
|
|
" <td>52629.0</td>\n",
|
|
" <td>57629</td>\n",
|
|
" <td></td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>SGD201806180926186948</td>\n",
|
|
" <td>霸州店</td>\n",
|
|
" <td>徐龙龙</td>\n",
|
|
" <td>13722629066</td>\n",
|
|
" <td>冀R182G6</td>\n",
|
|
" <td>2018-06-18 09:37:36</td>\n",
|
|
" <td>62.0</td>\n",
|
|
" <td>大众POLO 上市年份[2014年5月]生产年份[2015] 1.6 手自一体 舒适版</td>\n",
|
|
" <td>嘉实多金嘉护10W40 4L SN;博世机油滤清器0986AF0161;博世空气滤清器098...</td>\n",
|
|
" <td>更换机油;更换机油滤芯;</td>\n",
|
|
" <td>60746.0</td>\n",
|
|
" <td>65746</td>\n",
|
|
" <td></td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" 施工单编号 服务门店 客户名称 联系电话 车牌号 保养时间 \\\n",
|
|
"0 SGD201806180954574117 霸州店 徐龙龙 13722629066 冀R182G6 2018-06-18 10:37:10 \n",
|
|
"1 SGD201806180939158819 霸州店 先生 13932625626 冀RULL39 2018-06-18 09:37:44 \n",
|
|
"2 SGD201806180934044712 霸州店 杨 13784829111 冀RYC899 2018-06-18 09:37:36 \n",
|
|
"3 SGD201806180929106029 霸州店 赵亚征 18630677774 冀RCA888 2018-06-18 09:37:36 \n",
|
|
"4 SGD201806180926186948 霸州店 徐龙龙 13722629066 冀R182G6 2018-06-18 09:37:36 \n",
|
|
"\n",
|
|
" 实收金额 车型 \\\n",
|
|
"0 40.0 大众POLO 上市年份[2014年5月]生产年份[2015] 1.6 手自一体 舒适版 \n",
|
|
"1 0.0 大众朗逸 上市年份[2011年8月]生产年份[2012] 1.6 手动 品悠版 \n",
|
|
"2 0.0 别克凯越 上市年份[2005年11月]生产年份[2005] 1.6 手动 LX 基本版 \n",
|
|
"3 110.0 丰田普拉多 上市年份[2007年1月]生产年份[2009] 4.0 手自一体 GX \n",
|
|
"4 62.0 大众POLO 上市年份[2014年5月]生产年份[2015] 1.6 手自一体 舒适版 \n",
|
|
"\n",
|
|
" 配件 服务 行驶里程 \\\n",
|
|
"0 浩天机油滤清器HTJ-8004; 60746.0 \n",
|
|
"1 打蜡;镀膜;镀晶; 5000.0 \n",
|
|
"2 打蜡; 141381.0 \n",
|
|
"3 嘉实多金嘉护10W40 4L SN;博世机油滤清器0986AF0060;博世空气滤清器098... 更换机油;更换机油滤芯; 52629.0 \n",
|
|
"4 嘉实多金嘉护10W40 4L SN;博世机油滤清器0986AF0161;博世空气滤清器098... 更换机油;更换机油滤芯; 60746.0 \n",
|
|
"\n",
|
|
" 下次保养 派工单查看 \n",
|
|
"0 65746 \n",
|
|
"1 4000 \n",
|
|
"2 141381 \n",
|
|
"3 57629 \n",
|
|
"4 65746 "
|
|
]
|
|
},
|
|
"execution_count": 60,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"df_result = pd.DataFrame(result)\n",
|
|
"df_result.head()\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 61,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<style scoped>\n",
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
" vertical-align: middle;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe tbody tr th {\n",
|
|
" vertical-align: top;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe thead th {\n",
|
|
" text-align: right;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>施工单编号</th>\n",
|
|
" <th>服务门店</th>\n",
|
|
" <th>客户名称</th>\n",
|
|
" <th>联系电话</th>\n",
|
|
" <th>车牌号</th>\n",
|
|
" <th>保养时间</th>\n",
|
|
" <th>实收金额</th>\n",
|
|
" <th>车型</th>\n",
|
|
" <th>配件</th>\n",
|
|
" <th>服务</th>\n",
|
|
" <th>行驶里程</th>\n",
|
|
" <th>下次保养</th>\n",
|
|
" <th>派工单查看</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>419</th>\n",
|
|
" <td>SGDXC201806020849400963</td>\n",
|
|
" <td>霸州店</td>\n",
|
|
" <td>测试号</td>\n",
|
|
" <td>13103128888</td>\n",
|
|
" <td>冀FFFFFH</td>\n",
|
|
" <td>2018-06-02 08:47:56</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>别克凯越 上市年份[2013年2月]生产年份[2013] 1.5 手自一体 尊享版</td>\n",
|
|
" <td></td>\n",
|
|
" <td>洗车;</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>15000</td>\n",
|
|
" <td></td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>420</th>\n",
|
|
" <td>SGDXC201806020849090157</td>\n",
|
|
" <td>霸州店</td>\n",
|
|
" <td>测试号</td>\n",
|
|
" <td>13103128888</td>\n",
|
|
" <td>冀FFFFFH</td>\n",
|
|
" <td>2018-06-02 08:47:24</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>别克凯越 上市年份[2013年2月]生产年份[2013] 1.5 手自一体 尊享版</td>\n",
|
|
" <td></td>\n",
|
|
" <td>洗车;</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>15000</td>\n",
|
|
" <td></td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>421</th>\n",
|
|
" <td>SGDXC201806020848352735</td>\n",
|
|
" <td>霸州店</td>\n",
|
|
" <td>测试号</td>\n",
|
|
" <td>13103128888</td>\n",
|
|
" <td>冀FFFFFH</td>\n",
|
|
" <td>2018-06-02 08:46:50</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>别克凯越 上市年份[2013年2月]生产年份[2013] 1.5 手自一体 尊享版</td>\n",
|
|
" <td></td>\n",
|
|
" <td>洗车;</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>15000</td>\n",
|
|
" <td></td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>422</th>\n",
|
|
" <td>SGDXC201806020847002869</td>\n",
|
|
" <td>霸州店</td>\n",
|
|
" <td>测试号</td>\n",
|
|
" <td>13103128888</td>\n",
|
|
" <td>冀FFFFFH</td>\n",
|
|
" <td>2018-06-02 08:45:15</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>别克凯越 上市年份[2013年2月]生产年份[2013] 1.5 手自一体 尊享版</td>\n",
|
|
" <td></td>\n",
|
|
" <td>洗车;</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>15000</td>\n",
|
|
" <td></td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>423</th>\n",
|
|
" <td>SGDXC201806020845021548</td>\n",
|
|
" <td>霸州店</td>\n",
|
|
" <td>测试号</td>\n",
|
|
" <td>13103128888</td>\n",
|
|
" <td>冀FFFFFH</td>\n",
|
|
" <td>2018-06-02 08:43:17</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>别克凯越 上市年份[2013年2月]生产年份[2013] 1.5 手自一体 尊享版</td>\n",
|
|
" <td></td>\n",
|
|
" <td>洗车;</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>15000</td>\n",
|
|
" <td></td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" 施工单编号 服务门店 客户名称 联系电话 车牌号 \\\n",
|
|
"419 SGDXC201806020849400963 霸州店 测试号 13103128888 冀FFFFFH \n",
|
|
"420 SGDXC201806020849090157 霸州店 测试号 13103128888 冀FFFFFH \n",
|
|
"421 SGDXC201806020848352735 霸州店 测试号 13103128888 冀FFFFFH \n",
|
|
"422 SGDXC201806020847002869 霸州店 测试号 13103128888 冀FFFFFH \n",
|
|
"423 SGDXC201806020845021548 霸州店 测试号 13103128888 冀FFFFFH \n",
|
|
"\n",
|
|
" 保养时间 实收金额 车型 配件 \\\n",
|
|
"419 2018-06-02 08:47:56 0.0 别克凯越 上市年份[2013年2月]生产年份[2013] 1.5 手自一体 尊享版 \n",
|
|
"420 2018-06-02 08:47:24 0.0 别克凯越 上市年份[2013年2月]生产年份[2013] 1.5 手自一体 尊享版 \n",
|
|
"421 2018-06-02 08:46:50 0.0 别克凯越 上市年份[2013年2月]生产年份[2013] 1.5 手自一体 尊享版 \n",
|
|
"422 2018-06-02 08:45:15 0.0 别克凯越 上市年份[2013年2月]生产年份[2013] 1.5 手自一体 尊享版 \n",
|
|
"423 2018-06-02 08:43:17 0.0 别克凯越 上市年份[2013年2月]生产年份[2013] 1.5 手自一体 尊享版 \n",
|
|
"\n",
|
|
" 服务 行驶里程 下次保养 派工单查看 \n",
|
|
"419 洗车; 0.0 15000 \n",
|
|
"420 洗车; 0.0 15000 \n",
|
|
"421 洗车; 0.0 15000 \n",
|
|
"422 洗车; 0.0 15000 \n",
|
|
"423 洗车; 0.0 15000 "
|
|
]
|
|
},
|
|
"execution_count": 61,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"df_result.tail()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 62,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"df_result.to_excel('工单历史_霸州店1494-1522.xlsx',index=False)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## 2.工单历史 -- selenium\n",
|
|
"+ 不稳定"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"进入iframe\n",
|
|
"进入iframe\n",
|
|
"进入iframe\n"
|
|
]
|
|
},
|
|
{
|
|
"ename": "StaleElementReferenceException",
|
|
"evalue": "Message: stale element reference: element is not attached to the page document\n (Session info: chrome=98.0.4758.102)\n",
|
|
"output_type": "error",
|
|
"traceback": [
|
|
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
|
|
"\u001b[1;31mStaleElementReferenceException\u001b[0m Traceback (most recent call last)",
|
|
"\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_16740/1479824237.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m 80\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m2150\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 81\u001b[0m \u001b[0mtime\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msleep\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m2.5\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 82\u001b[1;33m \u001b[0mWebDriverWait\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdriver\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m10\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0muntil\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mEC\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0melement_to_be_clickable\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mBy\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mXPATH\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'//a[@class=\"laypage_next\"]'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mclick\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 83\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 84\u001b[0m \u001b[0mPAGES\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m2939\u001b[0m \u001b[1;33m-\u001b[0m \u001b[1;36m2151\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;32m~\\miniconda3\\envs\\ff6\\lib\\site-packages\\selenium\\webdriver\\remote\\webelement.py\u001b[0m in \u001b[0;36mclick\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 78\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mclick\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 79\u001b[0m \u001b[1;34m\"\"\"Clicks the element.\"\"\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 80\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_execute\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mCommand\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mCLICK_ELEMENT\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 81\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 82\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0msubmit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;32m~\\miniconda3\\envs\\ff6\\lib\\site-packages\\selenium\\webdriver\\remote\\webelement.py\u001b[0m in \u001b[0;36m_execute\u001b[1;34m(self, command, params)\u001b[0m\n\u001b[0;32m 631\u001b[0m \u001b[0mparams\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m{\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 632\u001b[0m \u001b[0mparams\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'id'\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_id\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 633\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_parent\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexecute\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcommand\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 634\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 635\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mfind_element\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mby\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mBy\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mID\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;32m~\\miniconda3\\envs\\ff6\\lib\\site-packages\\selenium\\webdriver\\remote\\webdriver.py\u001b[0m in \u001b[0;36mexecute\u001b[1;34m(self, driver_command, params)\u001b[0m\n\u001b[0;32m 319\u001b[0m \u001b[0mresponse\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcommand_executor\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexecute\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdriver_command\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 320\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mresponse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 321\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0merror_handler\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcheck_response\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresponse\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 322\u001b[0m response['value'] = self._unwrap_value(\n\u001b[0;32m 323\u001b[0m response.get('value', None))\n",
|
|
"\u001b[1;32m~\\miniconda3\\envs\\ff6\\lib\\site-packages\\selenium\\webdriver\\remote\\errorhandler.py\u001b[0m in \u001b[0;36mcheck_response\u001b[1;34m(self, response)\u001b[0m\n\u001b[0;32m 240\u001b[0m \u001b[0malert_text\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mvalue\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'alert'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'text'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 241\u001b[0m \u001b[1;32mraise\u001b[0m \u001b[0mexception_class\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmessage\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mscreen\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstacktrace\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0malert_text\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 242\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mexception_class\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmessage\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mscreen\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstacktrace\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 243\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 244\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m_value_or_default\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mobj\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mkey\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdefault\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;31mStaleElementReferenceException\u001b[0m: Message: stale element reference: element is not attached to the page document\n (Session info: chrome=98.0.4758.102)\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"import requests\n",
|
|
"import pandas as pd\n",
|
|
"import time\n",
|
|
"from selenium import webdriver\n",
|
|
"from selenium.webdriver.common.keys import Keys\n",
|
|
"from selenium.webdriver.support import expected_conditions as EC\n",
|
|
"from selenium.webdriver.common.by import By\n",
|
|
"from selenium.webdriver.support.wait import WebDriverWait\n",
|
|
"import numpy as np\n",
|
|
"from urllib.parse import unquote\n",
|
|
"from lxml import etree\n",
|
|
"\n",
|
|
"\n",
|
|
"options = webdriver.ChromeOptions()\n",
|
|
"# options.add_argument('headless')\n",
|
|
"\n",
|
|
"name = '徐红艳'\n",
|
|
"password = '19850605'\n",
|
|
"\n",
|
|
"driver = webdriver.Chrome(executable_path=r\"D:\\chromedriver\\chromedriver_98\\chromedriver.exe\", options=options)\n",
|
|
"driver.maximize_window() # 最大化浏览器窗口\n",
|
|
"# 打开网页 进行登录\n",
|
|
"driver.get('http://cd.dazhengren.com:9006/')\n",
|
|
"\n",
|
|
"# 在输入框中输入账号和密码\n",
|
|
"username = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//input[@id=\"uname\"]')))\n",
|
|
"pwd = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//input[@id=\"upass\"]')))\n",
|
|
"enter = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//button[@type=\"submit\"]')))\n",
|
|
"\n",
|
|
"username.clear()\n",
|
|
"username.send_keys(name)\n",
|
|
"pwd.clear()\n",
|
|
"pwd.send_keys(password)\n",
|
|
"enter.click()\n",
|
|
"\n",
|
|
"# 客户管理系统 ==> 工单查看_D ==》 服务门店\n",
|
|
"driver.find_element_by_xpath('/html/body/div[2]/div/div/div[3]/div[1]/div[1]').click()\n",
|
|
"WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '/html/body/div[2]/div/div/div[3]/div[2]/p/a[3]'))).click()\n",
|
|
"\n",
|
|
"# 进入 iframe\n",
|
|
"time.sleep(0.5)\n",
|
|
"iframe = driver.find_element_by_xpath(r'//*[@id=\"tabs\"]/div[2]/div[2]/div/iframe')\n",
|
|
"time.sleep(1)\n",
|
|
"driver.switch_to.frame(iframe)\n",
|
|
"time.sleep(0.5)\n",
|
|
"\n",
|
|
"print('进入iframe')\n",
|
|
"\n",
|
|
"# 选择 服务门店\n",
|
|
"\n",
|
|
"driver.find_element_by_xpath('//*[@id=\"DeparmentName\"]').click()\n",
|
|
"\n",
|
|
"# 进入 弹窗 iframe\n",
|
|
"time.sleep(0.5)\n",
|
|
"iframe = driver.find_element_by_xpath(r'//*[@id=\"layui-layer-iframe2\"]')\n",
|
|
"time.sleep(1)\n",
|
|
"driver.switch_to.frame(iframe)\n",
|
|
"time.sleep(0.5)\n",
|
|
"print('进入iframe')\n",
|
|
"\n",
|
|
"WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id=\"1-19\"]/i'))).click()# 零售部\n",
|
|
"WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id=\"1-42\"]/i'))).click()# 秦皇岛区域\n",
|
|
"WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id=\"1-73_anchor\"]'))).click()# 黄河大道店\n",
|
|
"WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id=\"closeIframe\"]'))).click() # 确定\n",
|
|
"\n",
|
|
"# 返回主内容,并重新进入“查询按钮”所在的iframe \n",
|
|
"driver.switch_to.default_content()\n",
|
|
"time.sleep(0.5)\n",
|
|
"iframe = driver.find_element_by_xpath(r'//*[@id=\"tabs\"]/div[2]/div[2]/div/iframe')\n",
|
|
"time.sleep(1)\n",
|
|
"driver.switch_to.frame(iframe)\n",
|
|
"time.sleep(0.5)\n",
|
|
"\n",
|
|
"print('进入iframe')\n",
|
|
"\n",
|
|
"WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id=\"breadcrumbs\"]/div/div[1]/div[2]/div/p[11]/button[1]'))).click() # 查询\n",
|
|
"time.sleep(1)\n",
|
|
"\n",
|
|
"\n",
|
|
"for i in range(2150):\n",
|
|
" time.sleep(2.5)\n",
|
|
" WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//a[@class=\"laypage_next\"]'))).click()\n",
|
|
"\n",
|
|
"PAGES = 2939 - 2151\n",
|
|
"\n",
|
|
"result = []\n",
|
|
"\n",
|
|
"for page in range(PAGES-1):\n",
|
|
" time.sleep(3)\n",
|
|
"\n",
|
|
"# 读取表格\n",
|
|
"\n",
|
|
"\n",
|
|
" html = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id=\"MCTTable\"]/tbody[last()]'))).get_attribute('innerHTML')\n",
|
|
" HTML = etree.HTML(html)\n",
|
|
" for i in range(1,16):\n",
|
|
" data = {}\n",
|
|
"\n",
|
|
" data['序号'] = '' if len(HTML.xpath(f'//tr[{i}]/td[1]/text()')) == 0 else HTML.xpath(f'//tr[{i}]/td[1]/text()')[0]\n",
|
|
" data['施工单编号'] = '' if len(HTML.xpath(f'//tr[{i}]/td[2]/a[1]/text()')) == 0 else HTML.xpath(f'//tr[{i}]/td[2]/a[1]/text()')[0]\n",
|
|
" data['服务门店'] = '' if len(HTML.xpath(f'//tr[{i}]/td[3]/text()')) == 0 else HTML.xpath(f'//tr[{i}]/td[3]/text()')[0]\n",
|
|
" data['客户名称'] = '' if len(HTML.xpath(f'//tr[{i}]/td[4]/text()')) == 0 else HTML.xpath(f'//tr[{i}]/td[4]/text()')[0]\n",
|
|
" data['联系电话'] = '' if len(HTML.xpath(f'//tr[{i}]/td[5]/text()')) == 0 else HTML.xpath(f'//tr[{i}]/td[5]/text()')[0]\n",
|
|
" data['车牌号'] = '' if len(HTML.xpath(f'//tr[{i}]/td[6]/text()')) == 0 else HTML.xpath(f'//tr[{i}]/td[6]/text()')[0]\n",
|
|
" data['保养时间'] = '' if len(HTML.xpath(f'//tr[{i}]/td[7]/text()')) == 0 else HTML.xpath(f'//tr[{i}]/td[7]/text()')[0]\n",
|
|
" data['实收金额'] = '' if len(HTML.xpath(f'//tr[{i}]/td[8]/text()')) == 0 else HTML.xpath(f'//tr[{i}]/td[8]/text()')[0]\n",
|
|
" data['车型'] = '' if len(HTML.xpath(f'//tr[{i}]/td[9]/p[1]/text()')) == 0 else HTML.xpath(f'//tr[{i}]/td[9]/p[1]/text()')[0]\n",
|
|
" data['配件'] = '' if len(HTML.xpath(f'//tr[{i}]/td[10]/p[1]/text()')) == 0 else HTML.xpath(f'//tr[{i}]/td[10]/p[1]/text()')[0]\n",
|
|
" data['服务'] = '' if len(HTML.xpath(f'//tr[{i}]/td[11]/p[1]/text()')) == 0 else HTML.xpath(f'//tr[{i}]/td[11]/p[1]/text()')[0]\n",
|
|
" data['行驶里程'] = '' if len(HTML.xpath(f'//tr[{i}]/td[13]/text()')) == 0 else HTML.xpath(f'//tr[{i}]/td[13]/text()')[0]\n",
|
|
" data['下次保养'] = '' if len(HTML.xpath(f'//tr[{i}]/td[14]/text()')) == 0 else HTML.xpath(f'//tr[{i}]/td[14]/text()')[0]\n",
|
|
" data['派工单查看'] = '' if len(HTML.xpath(f'//tr[{i}]/td[15]/text()')) == 0 else HTML.xpath(f'//tr[{i}]/td[15]/text()')[0]\n",
|
|
"\n",
|
|
" result.append(data)\n",
|
|
"\n",
|
|
" # 进入下一页\n",
|
|
" WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//a[@class=\"laypage_next\"]'))).click()\n",
|
|
"\n",
|
|
" # if page == 2:\n",
|
|
" # break\n",
|
|
"\n",
|
|
"df = pd.DataFrame(result)\n",
|
|
"df\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"149"
|
|
]
|
|
},
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"page"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<style scoped>\n",
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
" vertical-align: middle;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe tbody tr th {\n",
|
|
" vertical-align: top;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe thead th {\n",
|
|
" text-align: right;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>序号</th>\n",
|
|
" <th>施工单编号</th>\n",
|
|
" <th>服务门店</th>\n",
|
|
" <th>客户名称</th>\n",
|
|
" <th>联系电话</th>\n",
|
|
" <th>车牌号</th>\n",
|
|
" <th>保养时间</th>\n",
|
|
" <th>实收金额</th>\n",
|
|
" <th>车型</th>\n",
|
|
" <th>配件</th>\n",
|
|
" <th>服务</th>\n",
|
|
" <th>行驶里程</th>\n",
|
|
" <th>下次保养</th>\n",
|
|
" <th>派工单查看</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>2230</th>\n",
|
|
" <td>11</td>\n",
|
|
" <td>SGD201903071247432412</td>\n",
|
|
" <td>秦皇岛黄河大道店</td>\n",
|
|
" <td>孙锦生</td>\n",
|
|
" <td>15699998007</td>\n",
|
|
" <td>冀CZH708</td>\n",
|
|
" <td>2019-03-07 13:48:15</td>\n",
|
|
" <td>320.00</td>\n",
|
|
" <td>日产骐达 上市年份[2014年11月]生产年份[2015] 1.6 无级 XL 智能型</td>\n",
|
|
" <td>力普拉斯LP-46B24L;</td>\n",
|
|
" <td></td>\n",
|
|
" <td>5000</td>\n",
|
|
" <td>10000</td>\n",
|
|
" <td></td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2231</th>\n",
|
|
" <td>12</td>\n",
|
|
" <td>SGD201903071245194188</td>\n",
|
|
" <td>秦皇岛黄河大道店</td>\n",
|
|
" <td>冯志刚</td>\n",
|
|
" <td>15903330933</td>\n",
|
|
" <td>冀CAW533</td>\n",
|
|
" <td>2019-03-07 13:48:15</td>\n",
|
|
" <td>450.00</td>\n",
|
|
" <td>福特</td>\n",
|
|
" <td>瓦尔塔70D26L 蓝线;</td>\n",
|
|
" <td></td>\n",
|
|
" <td>60000</td>\n",
|
|
" <td>65000</td>\n",
|
|
" <td></td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2232</th>\n",
|
|
" <td>13</td>\n",
|
|
" <td>SGDXC201903071241447810</td>\n",
|
|
" <td>秦皇岛黄河大道店</td>\n",
|
|
" <td>测试号</td>\n",
|
|
" <td>13103128888</td>\n",
|
|
" <td>冀FFFFFH</td>\n",
|
|
" <td>2019-03-07 12:41:18</td>\n",
|
|
" <td>0.00</td>\n",
|
|
" <td>别克凯越 上市年份[2013年2月]生产年份[2013] 1.5 手自一体 尊享版</td>\n",
|
|
" <td></td>\n",
|
|
" <td>洗车;</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>15000</td>\n",
|
|
" <td></td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2233</th>\n",
|
|
" <td>14</td>\n",
|
|
" <td>SGDXC201903071241024922</td>\n",
|
|
" <td>秦皇岛黄河大道店</td>\n",
|
|
" <td>测试号</td>\n",
|
|
" <td>13103128888</td>\n",
|
|
" <td>冀FFFFFH</td>\n",
|
|
" <td>2019-03-07 12:40:36</td>\n",
|
|
" <td>0.00</td>\n",
|
|
" <td>别克凯越 上市年份[2013年2月]生产年份[2013] 1.5 手自一体 尊享版</td>\n",
|
|
" <td></td>\n",
|
|
" <td>洗车;</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>15000</td>\n",
|
|
" <td></td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2234</th>\n",
|
|
" <td>15</td>\n",
|
|
" <td>SGDXC201903071229112159</td>\n",
|
|
" <td>秦皇岛黄河大道店</td>\n",
|
|
" <td>测试号</td>\n",
|
|
" <td>13103128888</td>\n",
|
|
" <td>冀FFFFFH</td>\n",
|
|
" <td>2019-03-07 12:28:45</td>\n",
|
|
" <td>0.00</td>\n",
|
|
" <td>别克凯越 上市年份[2013年2月]生产年份[2013] 1.5 手自一体 尊享版</td>\n",
|
|
" <td></td>\n",
|
|
" <td>洗车;</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>15000</td>\n",
|
|
" <td></td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" 序号 施工单编号 服务门店 客户名称 联系电话 车牌号 \\\n",
|
|
"2230 11 SGD201903071247432412 秦皇岛黄河大道店 孙锦生 15699998007 冀CZH708 \n",
|
|
"2231 12 SGD201903071245194188 秦皇岛黄河大道店 冯志刚 15903330933 冀CAW533 \n",
|
|
"2232 13 SGDXC201903071241447810 秦皇岛黄河大道店 测试号 13103128888 冀FFFFFH \n",
|
|
"2233 14 SGDXC201903071241024922 秦皇岛黄河大道店 测试号 13103128888 冀FFFFFH \n",
|
|
"2234 15 SGDXC201903071229112159 秦皇岛黄河大道店 测试号 13103128888 冀FFFFFH \n",
|
|
"\n",
|
|
" 保养时间 实收金额 \\\n",
|
|
"2230 2019-03-07 13:48:15 320.00 \n",
|
|
"2231 2019-03-07 13:48:15 450.00 \n",
|
|
"2232 2019-03-07 12:41:18 0.00 \n",
|
|
"2233 2019-03-07 12:40:36 0.00 \n",
|
|
"2234 2019-03-07 12:28:45 0.00 \n",
|
|
"\n",
|
|
" 车型 配件 服务 行驶里程 \\\n",
|
|
"2230 日产骐达 上市年份[2014年11月]生产年份[2015] 1.6 无级 XL 智能型 力普拉斯LP-46B24L; 5000 \n",
|
|
"2231 福特 瓦尔塔70D26L 蓝线; 60000 \n",
|
|
"2232 别克凯越 上市年份[2013年2月]生产年份[2013] 1.5 手自一体 尊享版 洗车; 0 \n",
|
|
"2233 别克凯越 上市年份[2013年2月]生产年份[2013] 1.5 手自一体 尊享版 洗车; 0 \n",
|
|
"2234 别克凯越 上市年份[2013年2月]生产年份[2013] 1.5 手自一体 尊享版 洗车; 0 \n",
|
|
"\n",
|
|
" 下次保养 派工单查看 \n",
|
|
"2230 10000 \n",
|
|
"2231 65000 \n",
|
|
"2232 15000 \n",
|
|
"2233 15000 \n",
|
|
"2234 15000 "
|
|
]
|
|
},
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"df1 = pd.DataFrame(result)\n",
|
|
"df1.tail()\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"1"
|
|
]
|
|
},
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"i"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"df1.to_excel('服务历史_黄河大道_2150页.xlsx',index=False)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 15,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"{'dzrEmployeeNameCookie': 'å¾\\x90红è\\x89³',\n",
|
|
" 'dzrkbs': 'E06D24784B84D4100AB5F27CE4EE50501BC9FBBCCD14A0AB8C0C56CBA7BA8ED37A76609C63BA37D29E93B92D563051542C29FA896CEE4E72C0D0B07CB87F3D80B7B382E23E184DC3650C79B63831885CD0405881ACD3E82AD00D61FBD7EAEEB03910AC24D68BD2145A13250166C13A1A8BBFC04930DB59847FF9C93CCDBF6AE3A8252B2BF6BBB17C8576718201412A1E2D57E16CEFFF67145B7345A32691E9206906708BA4BF431DC686BE6493BB8773383085DBEB8C684C8D3CF8D6892829CAD6949884AB0B57920C99851FBF2F0710477487D481F13C9A8CAC2F23E2B0B016400C872B87ACBDFCD97049C5043E059294F12A4D7BD7F2587254E5CFBD454FA851388F56E35BBD7319176A1ECC31F6EE'}"
|
|
]
|
|
},
|
|
"execution_count": 15,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"cookies"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"interpreter": {
|
|
"hash": "99e7afef122cf2f9114b0eaddefb1424b0cee966ded125dd10e982e14f4055f4"
|
|
},
|
|
"kernelspec": {
|
|
"display_name": "Python 3.9.5 64-bit ('ff6': conda)",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.9.4"
|
|
},
|
|
"orig_nbformat": 4
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|