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

1648 lines
73 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"id": "493e9faf359d284d",
"metadata": {},
"source": [
"车店无忧(车店通)会员卡明细\n",
"\n",
"会员卡url"
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "根据获取到的内容进行数据提取",
"id": "fa820afc35c0eb79"
},
{
"cell_type": "code",
"id": "19a2df5f",
"metadata": {
"ExecuteTime": {
"end_time": "2025-09-25T05:44:34.366303Z",
"start_time": "2025-09-25T05:44:30.839944Z"
}
},
"source": [
"import time\n",
"from bs4 import BeautifulSoup\n",
"import requests\n",
"import re\n",
"import json\n",
"\n",
"url = \"https://auto.51autoshop.com/Customer/CustCardList\"\n",
"url = \"https://autoexpert.pli-petronas.com.cn/Customer/CustCardList\" ## 定制系统\n",
"headers = {\n",
" 'Content-Type': 'application/x-www-form-urlencoded',\n",
" 'Cookie': 'td_cookie=2901764686; __RequestVerificationToken=JWSlUlB_oFKrA0-yAT5dnD8hcrlGTjSrlO1sbrFEcvUX3KFoAnZt1XzHR4wFtHdLYWViMpNIMb6Hzj-k0_hGtGCxazkVJ3B9mrLoTHRJDvg1; LoginInfo=8b0a3c7c18e94dab840747817189cf8c; td_cookie=2901318697; SERVERID=548a175c60fd940b20145d6542d8a827|1758779006|1758778450',\n",
" # 获取cookie\n",
" 'Priority': 'u=0, i',\n",
" 'Referer': 'https://auto.51autoshop.com/Customer/CustCardList',\n",
" 'Sec-Ch-Ua': '\"Microsoft Edge\";v=\"131\", \"Chromium\";v=\"131\", \"Not_A Brand\";v=\"24\"',\n",
" 'Sec-Ch-Ua-Mobile': '?0',\n",
" 'Sec-Ch-Ua-Platform': '\"Windows\"',\n",
" 'Sec-Fetch-Dest': 'iframe',\n",
" 'Sec-Fetch-Mode': 'navigate',\n",
" 'Sec-Fetch-Site': 'same-origin',\n",
" 'Sec-Fetch-User': '?1',\n",
" 'Upgrade-Insecure-Requests': '1',\n",
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0'\n",
"}\n",
"\n",
"all_data = []\n",
"for i in range(1, 5):\n",
" data = {\n",
" '__RequestVerificationToken': '7zhPG9Zocc2oPfGT8lEkYKv1iWcm4ChnfovaADzo4RL88CGqC80Vj6K6dtIbp5x0ybbzIeaTY3EDgZbYX4rM0ZIS2gZtmJW8jT-tMQmaiQw1',\n",
" # 获取token\n",
" 'Keywords': '',\n",
" 'StartTime': '',\n",
" 'EndTime': '',\n",
" 'WCompanyID': '',\n",
" 'ExpiredOnly': 'false',\n",
" 'DetialUrl': '/Customer/CustCardDetial',\n",
" 'PageIndex': f'{i}',\n",
" 'PageSize': '3000', # 注意页数\n",
" 'SortField': '',\n",
" 'SortDir': '',\n",
" 'IsExpired': '',\n",
" 'CompanyName': ''\n",
" }\n",
"\n",
" res = requests.post(url, data=data, headers=headers)\n",
" soup = BeautifulSoup(res.text, 'html.parser')\n",
" # tables = soup.find_all('td')\n",
" # print(tables)\n",
" html_text = res.text\n",
" print(html_text)\n",
"\n",
" import re\n",
" import pandas as pd\n",
"\n",
" text = '''\n",
" \"CustCardID\": 710943,\n",
" \"OtherField\": \"SomeValue\",\n",
" \"CustCardID\": 123456,\n",
" \"CustCardID\": 987654,\n",
" '''\n",
"\n",
" # pattern = r'\"CardCode\":\\s*\"([^\"]+)\"'\n",
" pattern = r'\"CustCardID\":(\\d+)'\n",
" pattern1 = r'\"CardCode\":\"(MN\\d+)\"'\n",
"\n",
" matches = re.findall(pattern, html_text)\n",
" print(matches)\n",
" all_data.extend(matches) # 输出: ['710943', '123456', '987654']\n",
" matches1 = re.findall(pattern1, html_text)\n",
" print(matches1)\n",
" # 将匹配结果转换为 DataFrame\n",
" # df = pd.DataFrame(matches, columns=['CardCode'])\n",
"df = pd.DataFrame({\n",
" 'CustCardID': all_data,\n",
"})\n",
"\n",
"# 去除值为 0 的行\n",
"df = df[df['CustCardID'] != '0']\n",
"\n",
"# 将 DataFrame 保存为 Excel 文件\n",
"df.to_excel('CardCode.xlsx', index=False)\n"
],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<!DOCTYPE html>\r\n",
"<html lang=\"zh\">\r\n",
"<head>\r\n",
"\r\n",
" <meta charset=\"utf-8\">\r\n",
" <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n",
" <meta name=\"renderer\" content=\"webkit\">\r\n",
" <title>登录—智车联门店管理系统</title>\r\n",
" <meta name=\"keywords\" content=\"登录—智车联门店管理系统\">\r\n",
" <meta name=\"description\" content=\"登录—智车联门店管理系统\">\r\n",
" <link rel=\"shortcut icon\" href=\"/images/msy/favicon.ico\" type=\"image/x-icon\" />\r\n",
" <!--全局 Begin-->\r\n",
" <script src=\"/Scripts/backspace.js\"></script>\r\n",
" <script src=\"/Scripts/angular.min.js?v=1.58\"></script>\r\n",
" <link href=\"/Content/bootstrap.min.css\" rel=\"stylesheet\"/>\r\n",
"<link href=\"/Content/font-awesome.min.css\" rel=\"stylesheet\"/>\r\n",
"\r\n",
" <link href=\"/Content/master.css\" rel=\"stylesheet\"/>\r\n",
"\r\n",
" <!--全局 End-->\r\n",
" <!--第三方 Begin-->\r\n",
" <!--选择框样式plugin iCheck-->\r\n",
" <link href=\"/Content/plugins/iCheck/custom.css\" rel=\"stylesheet\"/>\r\n",
"\r\n",
" <!--高级下拉列表plugin chosen-->\r\n",
" <link href=\"/Content/plugins/chosen/chosen.css\" rel=\"stylesheet\"/>\r\n",
"\r\n",
" <link href=\"/Content/plugins/datapicker/datetimepicker.css\" rel=\"stylesheet\"/>\r\n",
"\r\n",
" <link href=\"/Content/animate.min.css\" rel=\"stylesheet\"/>\r\n",
"\r\n",
" <link rel=\"stylesheet\" type=\"text/css\" href=\"/Content/style.min_MSY.css?v=1.1\" />\r\n",
" \r\n",
" <link href=\"/Content/style.login.MSY.css\" rel=\"stylesheet\"/>\r\n",
"\r\n",
"\r\n",
" <!--第三方 End-->\r\n",
" <!--全局 Begin-->\r\n",
" <!--全局 End-->\r\n",
" <!--[if lt IE 9]>\r\n",
" <script src=\"/Scripts/ie/html5shiv.js\"></script>\r\n",
"<script src=\"/Scripts/ie/respond.min.js\"></script>\r\n",
"\r\n",
"\r\n",
" <![endif]-->\r\n",
" <!--[if lt IE 8]>\r\n",
" <script>\r\n",
" alert('管理系统已不支持IE6-8,请使用谷歌、火狐等浏览器\\n或360、QQ等国产浏览器的极速模式浏览本页面!');\r\n",
" </script>\r\n",
" <![endif]-->\r\n",
"</head>\r\n",
"<body class=\"gray-bg wrapperV2\">\r\n",
" \r\n",
"\r\n",
"<style>\r\n",
"\r\n",
" \r\n",
"\r\n",
"\r\n",
" \r\n",
"\r\n",
" .icheckbox_square-green {\r\n",
" background-position: -118px 0px;\r\n",
" }\r\n",
"\r\n",
" .icheckbox_square-green.hover {\r\n",
" background-position: -94px -24px;\r\n",
" }\r\n",
"\r\n",
" .icheckbox_square-green.checked {\r\n",
" background-position: -142px -24px;\r\n",
" }\r\n",
"\r\n",
"\r\n",
"\r\n",
" .leftText {\r\n",
" position: absolute;\r\n",
" top: 50%;\r\n",
" left: 0;\r\n",
" -webkit-transform: translate(140px,-70%);\r\n",
" -ms-transform: translate(140px,-70%);\r\n",
" transform: translate(132px,-140%);\r\n",
" }\r\n",
"\r\n",
" .shopName {\r\n",
" \r\n",
" }\r\n",
"\r\n",
" .shopName h1 {\r\n",
" font-size: 36px;\r\n",
" font-weight: bold;\r\n",
" color: #fff;\r\n",
" margin: 0;\r\n",
" line-height: 1;\r\n",
" font-family: \"Microsoft YaHei\";\r\n",
" }\r\n",
"\r\n",
" .shopName p {\r\n",
" font-size: 24px;\r\n",
" font-weight: 300;\r\n",
" color: #fff;\r\n",
" line-height: 1;\r\n",
" margin: 10px 0 0;\r\n",
" font-family: \"Microsoft YaHei\";\r\n",
" letter-spacing: 2px;\r\n",
" }\r\n",
"\r\n",
" .log_wrap {\r\n",
" position: fixed;\r\n",
" top: 0;\r\n",
" bottom: 0;\r\n",
" left: 0;\r\n",
" width: 100%;\r\n",
" background: url(../Images/MSY/lg_bg_MSY.png) center center no-repeat;\r\n",
" }\r\n",
" \r\n",
" .bg_bottom {\r\n",
" position: absolute;\r\n",
" bottom: 100px;\r\n",
" left: 50%;\r\n",
" transform: translate3d(-50%,0,0);\r\n",
" }\r\n",
"\r\n",
" .bg_bottom img {\r\n",
" max-width: 853px;\r\n",
" }\r\n",
"\r\n",
" .loginContent {\r\n",
" float: left;\r\n",
" padding: 25px 36px 35px;\r\n",
" background-color: #fff;\r\n",
" background:#fff;\r\n",
" box-shadow: 0 0 14px 2px rgba(0,0,0,0.2);\r\n",
" border-radius: 6px;\r\n",
" margin-left: 150px;\r\n",
" position: absolute;\r\n",
" top: 46%;\r\n",
" left: 55%;\r\n",
" -webkit-transform: translate(0,-200px);\r\n",
" -ms-transform: translate(0,-200px);\r\n",
" transform: translate(0,-200px);\r\n",
" }\r\n",
"\r\n",
"\r\n",
" .topLogo {\r\n",
" height: 90px;\r\n",
" background-color: #fff;\r\n",
" }\r\n",
"\r\n",
" .topLogo img {\r\n",
" margin-top: 20px;\r\n",
" margin-left: 37px;\r\n",
" vertical-align: top;\r\n",
" }\r\n",
"\r\n",
" .topLogo span {\r\n",
" display: inline-block;\r\n",
" margin-left: -19px;\r\n",
" padding-left: 15px;\r\n",
" margin-top: 36px;\r\n",
" border-left: 2px solid #009E95;\r\n",
" color: #009E95;\r\n",
" font-size: 22px;\r\n",
" line-height: 23px;\r\n",
" letter-spacing: 1.5px;\r\n",
" }\r\n",
" \r\n",
" .btn-primary,.btn-primary:hover,.btn-primary:visited,.btn-primary:active,\r\n",
" .btn.active.focus, .btn.active:focus, .btn.focus, .btn:active.focus, .btn:active:focus, .btn:focus {\r\n",
" \r\n",
" outline:none;\r\n",
" }\r\n",
" input:-webkit-autofill, textarea:-webkit-autofill, select:-webkit-autofill {\r\n",
" background:#ffffef;\r\n",
" }\r\n",
" \r\n",
"\r\n",
" \r\n",
"\r\n",
"\r\n",
"</style>\r\n",
"<div class=\"log_wrap\">\r\n",
" <div class=\"topLogo\">\r\n",
" <img src=\"/Images/MSY/login_logo.png\" />\r\n",
" <span>智车联门店管理系统</span>\r\n",
" </div>\r\n",
"\r\n",
" \r\n",
"\r\n",
" <div class=\"loginContent\">\r\n",
" <div class=\"decorate\">\r\n",
" \r\n",
" </div>\r\n",
"<form action=\"/Account/Login?ReturnUrl=http%3A%2F%2Fautoexpert.pli-petronas.com.cn%3A8011%2FCustomer%2FCustCardList\" method=\"post\" style=\"width:240px;\"><input name=\"__RequestVerificationToken\" type=\"hidden\" value=\"lAPLLKzIvaSYuL2xuTNBst4Y3mY4xIpPsEfz4zJGiZx-yXw4xNkiTskFjWyiunfeWFuG3N3vEGO_QweXtBH3WT5rh0EpUH7eJG9xVcL8yw01\" /> <h1 style=\"font-size:16px;color:#141414;font-weight:bold;letter-spacing:3px;margin-top:0;margin-bottom:18px;font-family:'Microsoft YaHei';text-align:center;\">用户登录</h1>\r\n",
" <div class=\"form-group\" style=\"position:relative;text-align:left;\">\r\n",
" <input Value=\"\" class=\"form-control\" data-val=\"true\" data-val-length=\"字段 用户名 必须是一个字符串,其最小长度为 6,最大长度为 100。\" data-val-length-max=\"100\" data-val-length-min=\"6\" data-val-required=\"用户名 字段是必需的。\" id=\"ECUserName\" name=\"ECUserName\" placeholder=\"用户名\" style=\"border-radius:4px;padding-left:40px;\" type=\"text\" value=\"\" />\r\n",
" <span class=\"field-validation-valid text-danger\" data-valmsg-for=\"ECUserName\" data-valmsg-replace=\"true\"></span>\r\n",
" <i class=\"fa fa-user\" style=\"position:absolute;top:0;left:0;line-height:34px;font-size:20px;color:#b2b2b2;width:40px;text-align:center;\"></i>\r\n",
" </div>\r\n",
" <div class=\"form-group\" style=\"position:relative;text-align:left;\">\r\n",
" <input Value=\"\" class=\"form-control\" data-val=\"true\" data-val-length=\"字段 密码 必须是一个字符串,其最小长度为 6,最大长度为 100。\" data-val-length-max=\"100\" data-val-length-min=\"6\" data-val-required=\"密码 字段是必需的。\" id=\"ECPassword\" name=\"ECPassword\" placeholder=\"密码\" style=\"border-radius:4px;padding-left:40px;\" type=\"password\" />\r\n",
" <span class=\"field-validation-valid text-danger\" data-valmsg-for=\"ECPassword\" data-valmsg-replace=\"true\"></span>\r\n",
" <i class=\"fa fa-unlock-alt\" style=\"position:absolute;top:0;left:0;line-height:34px;font-size:20px;color:#b2b2b2;width:40px;text-align:center;\"></i>\r\n",
" </div>\r\n",
" <div class=\"form-group text-left\" style=\"margin-bottom:6px;\">\r\n",
" <div class=\"checkbox i-checks\" style=\"margin-top:0;margin-bottom:0;line-height:26px;\">\r\n",
" <label class=\"no-padding\" style=\"line-height:26px;\">\r\n",
" \r\n",
"<input data-val=\"true\" data-val-required=\"记住密码 字段是必需的。\" id=\"RememberMe\" name=\"RememberMe\" type=\"checkbox\" value=\"true\" /><input name=\"RememberMe\" type=\"hidden\" value=\"false\" /><i></i> <label class=\"rember-txt\" for=\"RememberMe\">记住密码</label> </label>\r\n",
" </div>\r\n",
" </div>\r\n",
" <button type=\"submit\" class=\"btn btn-primary block full-width\" style=\"text-overflow:ellipsis\">登 录</button>\r\n",
" <p class=\"text-muted text-center\">\r\n",
"\r\n",
" </p>\r\n",
"</form> </div>\r\n",
"\r\n",
"\r\n",
"\r\n",
"\r\n",
"</div>\r\n",
"\r\n",
" <!--全局 Begin-->\r\n",
" <script src=\"/Scripts/jquery.min.js\"></script>\r\n",
"<script src=\"/Scripts/bootstrap.min.js\"></script>\r\n",
"\r\n",
"\r\n",
" <!--全局 End-->\r\n",
" <!--第三方 Begin-->\r\n",
" <!--弹出框plugin layer-->\r\n",
" <script src=\"/Scripts/plugins/layer/layer.min.js\"></script>\r\n",
"\r\n",
" <!--选择框样式plugin iCheck-->\r\n",
" <script src=\"/Scripts/plugins/iCheck/icheck.min.js\"></script>\r\n",
"\r\n",
" <!--验证plugin validate-->\r\n",
" <script src=\"/Scripts/plugins/validate/jquery.validate.min.js\"></script>\r\n",
"<script src=\"/Scripts/plugins/validate/jquery.validate.unobtrusive.min.js\"></script>\r\n",
"\r\n",
" <!--高级下拉列表plugin chosen-->\r\n",
" <script src=\"/Scripts/plugins/chosen/chosen.jquery.js\"></script>\r\n",
"\r\n",
" <!-- 第三方插件 高级搜索-->\r\n",
" <script src=\"/Scripts/plugins/suggest/bootstrap-suggest.min.js\"></script>\r\n",
"\r\n",
" <!-- table合并 -->\r\n",
" <script src=\"/Scripts/tablesMergeCell.js\"></script>\r\n",
"\r\n",
" <!--内容框plugin content-->\r\n",
" <script src=\"/Scripts/content.min.js\"></script>\r\n",
"\r\n",
" <script src=\"/Scripts/plugins/datapicker/bootstrap-datetimepicker.min.js\"></script>\r\n",
"<script src=\"/Scripts/plugins/datapicker/bootstrap-datetimepicker.zh-CN.js\"></script>\r\n",
"\r\n",
" \r\n",
" <script src=\"/Scripts/public.js?v=1.1\"></script>\r\n",
" \r\n",
" \r\n",
"\r\n",
" <script>\r\n",
" $(\"form\").submit(function (e) {\r\n",
"\r\n",
" if (!$(this).valid()) {\r\n",
" return;\r\n",
" }\r\n",
" var index = layer.load();\r\n",
" $.post(\"/Account/Login/\", $(\"form\").serialize(), function (d, s) {\r\n",
" if (d.Success == true) {\r\n",
" location.href = \"/\";\r\n",
" } else {\r\n",
" layer.close(index);\r\n",
" layer.msg(d.Message, { time: 2000, icon: 2 })\r\n",
"\r\n",
" }\r\n",
"\r\n",
"\r\n",
" }, 'json').error(function (e) {\r\n",
" layer.msg(\"网络错误\", { time: 2000, icon: 2 })\r\n",
" layer.close(index);\r\n",
" })\r\n",
"\r\n",
" e.returnValue = false;\r\n",
" return false;\r\n",
" })\r\n",
"\r\n",
" </script>\r\n",
"\r\n",
"\r\n",
"\r\n",
"\r\n",
" <link href=\"/Scripts/plugins/select2/css/select2.css\" rel=\"stylesheet\" />\r\n",
" <script src=\"/Scripts/plugins/select2/js/select2.js\"></script>\r\n",
" <!--第三方 End-->\r\n",
" <script id=\"LayoutJs\">\r\n",
" $(function () {\r\n",
" if (self != top && (Versions().iPhone || Versions().iPad || Versions().ios)) {\r\n",
" var $if = $(\".J_mainContent\", window.top.document);\r\n",
" $(\"body\").css({ \"width\": $if.width() });\r\n",
" }\r\n",
" });\r\n",
" </script>\r\n",
" <script src=\"/scripts/views/Account/Login.js?v=132943979358563438\"></script>\r\n",
"\r\n",
"\r\n",
" <div style=\"display:none\">\r\n",
" \r\n",
" \r\n",
" <script>\r\n",
" $(function () {\r\n",
" if (location.host == \"auto.51autoshop.com\") {\r\n",
" var sp = document.createElement(\"script\");\r\n",
" sp.src = \"https://hm.baidu.com/hm.js?b13246fd95aec7bfc57d9c415dfefe18\";\r\n",
" document.head.appendChild(sp);\r\n",
" }\r\n",
" });\r\n",
" </script>\r\n",
" </div>\r\n",
"</body>\r\n",
"</html>\r\n",
"\n",
"[]\n",
"[]\n",
"<!DOCTYPE html>\r\n",
"<html lang=\"zh\">\r\n",
"<head>\r\n",
"\r\n",
" <meta charset=\"utf-8\">\r\n",
" <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n",
" <meta name=\"renderer\" content=\"webkit\">\r\n",
" <title>登录—智车联门店管理系统</title>\r\n",
" <meta name=\"keywords\" content=\"登录—智车联门店管理系统\">\r\n",
" <meta name=\"description\" content=\"登录—智车联门店管理系统\">\r\n",
" <link rel=\"shortcut icon\" href=\"/images/msy/favicon.ico\" type=\"image/x-icon\" />\r\n",
" <!--全局 Begin-->\r\n",
" <script src=\"/Scripts/backspace.js\"></script>\r\n",
" <script src=\"/Scripts/angular.min.js?v=1.58\"></script>\r\n",
" <link href=\"/Content/bootstrap.min.css\" rel=\"stylesheet\"/>\r\n",
"<link href=\"/Content/font-awesome.min.css\" rel=\"stylesheet\"/>\r\n",
"\r\n",
" <link href=\"/Content/master.css\" rel=\"stylesheet\"/>\r\n",
"\r\n",
" <!--全局 End-->\r\n",
" <!--第三方 Begin-->\r\n",
" <!--选择框样式plugin iCheck-->\r\n",
" <link href=\"/Content/plugins/iCheck/custom.css\" rel=\"stylesheet\"/>\r\n",
"\r\n",
" <!--高级下拉列表plugin chosen-->\r\n",
" <link href=\"/Content/plugins/chosen/chosen.css\" rel=\"stylesheet\"/>\r\n",
"\r\n",
" <link href=\"/Content/plugins/datapicker/datetimepicker.css\" rel=\"stylesheet\"/>\r\n",
"\r\n",
" <link href=\"/Content/animate.min.css\" rel=\"stylesheet\"/>\r\n",
"\r\n",
" <link rel=\"stylesheet\" type=\"text/css\" href=\"/Content/style.min_MSY.css?v=1.1\" />\r\n",
" \r\n",
" <link href=\"/Content/style.login.MSY.css\" rel=\"stylesheet\"/>\r\n",
"\r\n",
"\r\n",
" <!--第三方 End-->\r\n",
" <!--全局 Begin-->\r\n",
" <!--全局 End-->\r\n",
" <!--[if lt IE 9]>\r\n",
" <script src=\"/Scripts/ie/html5shiv.js\"></script>\r\n",
"<script src=\"/Scripts/ie/respond.min.js\"></script>\r\n",
"\r\n",
"\r\n",
" <![endif]-->\r\n",
" <!--[if lt IE 8]>\r\n",
" <script>\r\n",
" alert('管理系统已不支持IE6-8,请使用谷歌、火狐等浏览器\\n或360、QQ等国产浏览器的极速模式浏览本页面!');\r\n",
" </script>\r\n",
" <![endif]-->\r\n",
"</head>\r\n",
"<body class=\"gray-bg wrapperV2\">\r\n",
" \r\n",
"\r\n",
"<style>\r\n",
"\r\n",
" \r\n",
"\r\n",
"\r\n",
" \r\n",
"\r\n",
" .icheckbox_square-green {\r\n",
" background-position: -118px 0px;\r\n",
" }\r\n",
"\r\n",
" .icheckbox_square-green.hover {\r\n",
" background-position: -94px -24px;\r\n",
" }\r\n",
"\r\n",
" .icheckbox_square-green.checked {\r\n",
" background-position: -142px -24px;\r\n",
" }\r\n",
"\r\n",
"\r\n",
"\r\n",
" .leftText {\r\n",
" position: absolute;\r\n",
" top: 50%;\r\n",
" left: 0;\r\n",
" -webkit-transform: translate(140px,-70%);\r\n",
" -ms-transform: translate(140px,-70%);\r\n",
" transform: translate(132px,-140%);\r\n",
" }\r\n",
"\r\n",
" .shopName {\r\n",
" \r\n",
" }\r\n",
"\r\n",
" .shopName h1 {\r\n",
" font-size: 36px;\r\n",
" font-weight: bold;\r\n",
" color: #fff;\r\n",
" margin: 0;\r\n",
" line-height: 1;\r\n",
" font-family: \"Microsoft YaHei\";\r\n",
" }\r\n",
"\r\n",
" .shopName p {\r\n",
" font-size: 24px;\r\n",
" font-weight: 300;\r\n",
" color: #fff;\r\n",
" line-height: 1;\r\n",
" margin: 10px 0 0;\r\n",
" font-family: \"Microsoft YaHei\";\r\n",
" letter-spacing: 2px;\r\n",
" }\r\n",
"\r\n",
" .log_wrap {\r\n",
" position: fixed;\r\n",
" top: 0;\r\n",
" bottom: 0;\r\n",
" left: 0;\r\n",
" width: 100%;\r\n",
" background: url(../Images/MSY/lg_bg_MSY.png) center center no-repeat;\r\n",
" }\r\n",
" \r\n",
" .bg_bottom {\r\n",
" position: absolute;\r\n",
" bottom: 100px;\r\n",
" left: 50%;\r\n",
" transform: translate3d(-50%,0,0);\r\n",
" }\r\n",
"\r\n",
" .bg_bottom img {\r\n",
" max-width: 853px;\r\n",
" }\r\n",
"\r\n",
" .loginContent {\r\n",
" float: left;\r\n",
" padding: 25px 36px 35px;\r\n",
" background-color: #fff;\r\n",
" background:#fff;\r\n",
" box-shadow: 0 0 14px 2px rgba(0,0,0,0.2);\r\n",
" border-radius: 6px;\r\n",
" margin-left: 150px;\r\n",
" position: absolute;\r\n",
" top: 46%;\r\n",
" left: 55%;\r\n",
" -webkit-transform: translate(0,-200px);\r\n",
" -ms-transform: translate(0,-200px);\r\n",
" transform: translate(0,-200px);\r\n",
" }\r\n",
"\r\n",
"\r\n",
" .topLogo {\r\n",
" height: 90px;\r\n",
" background-color: #fff;\r\n",
" }\r\n",
"\r\n",
" .topLogo img {\r\n",
" margin-top: 20px;\r\n",
" margin-left: 37px;\r\n",
" vertical-align: top;\r\n",
" }\r\n",
"\r\n",
" .topLogo span {\r\n",
" display: inline-block;\r\n",
" margin-left: -19px;\r\n",
" padding-left: 15px;\r\n",
" margin-top: 36px;\r\n",
" border-left: 2px solid #009E95;\r\n",
" color: #009E95;\r\n",
" font-size: 22px;\r\n",
" line-height: 23px;\r\n",
" letter-spacing: 1.5px;\r\n",
" }\r\n",
" \r\n",
" .btn-primary,.btn-primary:hover,.btn-primary:visited,.btn-primary:active,\r\n",
" .btn.active.focus, .btn.active:focus, .btn.focus, .btn:active.focus, .btn:active:focus, .btn:focus {\r\n",
" \r\n",
" outline:none;\r\n",
" }\r\n",
" input:-webkit-autofill, textarea:-webkit-autofill, select:-webkit-autofill {\r\n",
" background:#ffffef;\r\n",
" }\r\n",
" \r\n",
"\r\n",
" \r\n",
"\r\n",
"\r\n",
"</style>\r\n",
"<div class=\"log_wrap\">\r\n",
" <div class=\"topLogo\">\r\n",
" <img src=\"/Images/MSY/login_logo.png\" />\r\n",
" <span>智车联门店管理系统</span>\r\n",
" </div>\r\n",
"\r\n",
" \r\n",
"\r\n",
" <div class=\"loginContent\">\r\n",
" <div class=\"decorate\">\r\n",
" \r\n",
" </div>\r\n",
"<form action=\"/Account/Login?ReturnUrl=http%3A%2F%2Fautoexpert.pli-petronas.com.cn%3A8011%2FCustomer%2FCustCardList\" method=\"post\" style=\"width:240px;\"><input name=\"__RequestVerificationToken\" type=\"hidden\" value=\"adppSmfGcb-OOdG6OcqzLZaQ8Qj8x6DIkyrpWsm5bJcBsAyGjlhgPGjqL-Gl2Q3mSoGyrEb2z112kC64zumhWF3PZ5ii9AJj92dUa6oDoN01\" /> <h1 style=\"font-size:16px;color:#141414;font-weight:bold;letter-spacing:3px;margin-top:0;margin-bottom:18px;font-family:'Microsoft YaHei';text-align:center;\">用户登录</h1>\r\n",
" <div class=\"form-group\" style=\"position:relative;text-align:left;\">\r\n",
" <input Value=\"\" class=\"form-control\" data-val=\"true\" data-val-length=\"字段 用户名 必须是一个字符串,其最小长度为 6,最大长度为 100。\" data-val-length-max=\"100\" data-val-length-min=\"6\" data-val-required=\"用户名 字段是必需的。\" id=\"ECUserName\" name=\"ECUserName\" placeholder=\"用户名\" style=\"border-radius:4px;padding-left:40px;\" type=\"text\" value=\"\" />\r\n",
" <span class=\"field-validation-valid text-danger\" data-valmsg-for=\"ECUserName\" data-valmsg-replace=\"true\"></span>\r\n",
" <i class=\"fa fa-user\" style=\"position:absolute;top:0;left:0;line-height:34px;font-size:20px;color:#b2b2b2;width:40px;text-align:center;\"></i>\r\n",
" </div>\r\n",
" <div class=\"form-group\" style=\"position:relative;text-align:left;\">\r\n",
" <input Value=\"\" class=\"form-control\" data-val=\"true\" data-val-length=\"字段 密码 必须是一个字符串,其最小长度为 6,最大长度为 100。\" data-val-length-max=\"100\" data-val-length-min=\"6\" data-val-required=\"密码 字段是必需的。\" id=\"ECPassword\" name=\"ECPassword\" placeholder=\"密码\" style=\"border-radius:4px;padding-left:40px;\" type=\"password\" />\r\n",
" <span class=\"field-validation-valid text-danger\" data-valmsg-for=\"ECPassword\" data-valmsg-replace=\"true\"></span>\r\n",
" <i class=\"fa fa-unlock-alt\" style=\"position:absolute;top:0;left:0;line-height:34px;font-size:20px;color:#b2b2b2;width:40px;text-align:center;\"></i>\r\n",
" </div>\r\n",
" <div class=\"form-group text-left\" style=\"margin-bottom:6px;\">\r\n",
" <div class=\"checkbox i-checks\" style=\"margin-top:0;margin-bottom:0;line-height:26px;\">\r\n",
" <label class=\"no-padding\" style=\"line-height:26px;\">\r\n",
" \r\n",
"<input data-val=\"true\" data-val-required=\"记住密码 字段是必需的。\" id=\"RememberMe\" name=\"RememberMe\" type=\"checkbox\" value=\"true\" /><input name=\"RememberMe\" type=\"hidden\" value=\"false\" /><i></i> <label class=\"rember-txt\" for=\"RememberMe\">记住密码</label> </label>\r\n",
" </div>\r\n",
" </div>\r\n",
" <button type=\"submit\" class=\"btn btn-primary block full-width\" style=\"text-overflow:ellipsis\">登 录</button>\r\n",
" <p class=\"text-muted text-center\">\r\n",
"\r\n",
" </p>\r\n",
"</form> </div>\r\n",
"\r\n",
"\r\n",
"\r\n",
"\r\n",
"</div>\r\n",
"\r\n",
" <!--全局 Begin-->\r\n",
" <script src=\"/Scripts/jquery.min.js\"></script>\r\n",
"<script src=\"/Scripts/bootstrap.min.js\"></script>\r\n",
"\r\n",
"\r\n",
" <!--全局 End-->\r\n",
" <!--第三方 Begin-->\r\n",
" <!--弹出框plugin layer-->\r\n",
" <script src=\"/Scripts/plugins/layer/layer.min.js\"></script>\r\n",
"\r\n",
" <!--选择框样式plugin iCheck-->\r\n",
" <script src=\"/Scripts/plugins/iCheck/icheck.min.js\"></script>\r\n",
"\r\n",
" <!--验证plugin validate-->\r\n",
" <script src=\"/Scripts/plugins/validate/jquery.validate.min.js\"></script>\r\n",
"<script src=\"/Scripts/plugins/validate/jquery.validate.unobtrusive.min.js\"></script>\r\n",
"\r\n",
" <!--高级下拉列表plugin chosen-->\r\n",
" <script src=\"/Scripts/plugins/chosen/chosen.jquery.js\"></script>\r\n",
"\r\n",
" <!-- 第三方插件 高级搜索-->\r\n",
" <script src=\"/Scripts/plugins/suggest/bootstrap-suggest.min.js\"></script>\r\n",
"\r\n",
" <!-- table合并 -->\r\n",
" <script src=\"/Scripts/tablesMergeCell.js\"></script>\r\n",
"\r\n",
" <!--内容框plugin content-->\r\n",
" <script src=\"/Scripts/content.min.js\"></script>\r\n",
"\r\n",
" <script src=\"/Scripts/plugins/datapicker/bootstrap-datetimepicker.min.js\"></script>\r\n",
"<script src=\"/Scripts/plugins/datapicker/bootstrap-datetimepicker.zh-CN.js\"></script>\r\n",
"\r\n",
" \r\n",
" <script src=\"/Scripts/public.js?v=1.1\"></script>\r\n",
" \r\n",
" \r\n",
"\r\n",
" <script>\r\n",
" $(\"form\").submit(function (e) {\r\n",
"\r\n",
" if (!$(this).valid()) {\r\n",
" return;\r\n",
" }\r\n",
" var index = layer.load();\r\n",
" $.post(\"/Account/Login/\", $(\"form\").serialize(), function (d, s) {\r\n",
" if (d.Success == true) {\r\n",
" location.href = \"/\";\r\n",
" } else {\r\n",
" layer.close(index);\r\n",
" layer.msg(d.Message, { time: 2000, icon: 2 })\r\n",
"\r\n",
" }\r\n",
"\r\n",
"\r\n",
" }, 'json').error(function (e) {\r\n",
" layer.msg(\"网络错误\", { time: 2000, icon: 2 })\r\n",
" layer.close(index);\r\n",
" })\r\n",
"\r\n",
" e.returnValue = false;\r\n",
" return false;\r\n",
" })\r\n",
"\r\n",
" </script>\r\n",
"\r\n",
"\r\n",
"\r\n",
"\r\n",
" <link href=\"/Scripts/plugins/select2/css/select2.css\" rel=\"stylesheet\" />\r\n",
" <script src=\"/Scripts/plugins/select2/js/select2.js\"></script>\r\n",
" <!--第三方 End-->\r\n",
" <script id=\"LayoutJs\">\r\n",
" $(function () {\r\n",
" if (self != top && (Versions().iPhone || Versions().iPad || Versions().ios)) {\r\n",
" var $if = $(\".J_mainContent\", window.top.document);\r\n",
" $(\"body\").css({ \"width\": $if.width() });\r\n",
" }\r\n",
" });\r\n",
" </script>\r\n",
" <script src=\"/scripts/views/Account/Login.js?v=132943979358563438\"></script>\r\n",
"\r\n",
"\r\n",
" <div style=\"display:none\">\r\n",
" \r\n",
" \r\n",
" <script>\r\n",
" $(function () {\r\n",
" if (location.host == \"auto.51autoshop.com\") {\r\n",
" var sp = document.createElement(\"script\");\r\n",
" sp.src = \"https://hm.baidu.com/hm.js?b13246fd95aec7bfc57d9c415dfefe18\";\r\n",
" document.head.appendChild(sp);\r\n",
" }\r\n",
" });\r\n",
" </script>\r\n",
" </div>\r\n",
"</body>\r\n",
"</html>\r\n",
"\n",
"[]\n",
"[]\n",
"<!DOCTYPE html>\r\n",
"<html lang=\"zh\">\r\n",
"<head>\r\n",
"\r\n",
" <meta charset=\"utf-8\">\r\n",
" <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n",
" <meta name=\"renderer\" content=\"webkit\">\r\n",
" <title>登录—智车联门店管理系统</title>\r\n",
" <meta name=\"keywords\" content=\"登录—智车联门店管理系统\">\r\n",
" <meta name=\"description\" content=\"登录—智车联门店管理系统\">\r\n",
" <link rel=\"shortcut icon\" href=\"/images/msy/favicon.ico\" type=\"image/x-icon\" />\r\n",
" <!--全局 Begin-->\r\n",
" <script src=\"/Scripts/backspace.js\"></script>\r\n",
" <script src=\"/Scripts/angular.min.js?v=1.58\"></script>\r\n",
" <link href=\"/Content/bootstrap.min.css\" rel=\"stylesheet\"/>\r\n",
"<link href=\"/Content/font-awesome.min.css\" rel=\"stylesheet\"/>\r\n",
"\r\n",
" <link href=\"/Content/master.css\" rel=\"stylesheet\"/>\r\n",
"\r\n",
" <!--全局 End-->\r\n",
" <!--第三方 Begin-->\r\n",
" <!--选择框样式plugin iCheck-->\r\n",
" <link href=\"/Content/plugins/iCheck/custom.css\" rel=\"stylesheet\"/>\r\n",
"\r\n",
" <!--高级下拉列表plugin chosen-->\r\n",
" <link href=\"/Content/plugins/chosen/chosen.css\" rel=\"stylesheet\"/>\r\n",
"\r\n",
" <link href=\"/Content/plugins/datapicker/datetimepicker.css\" rel=\"stylesheet\"/>\r\n",
"\r\n",
" <link href=\"/Content/animate.min.css\" rel=\"stylesheet\"/>\r\n",
"\r\n",
" <link rel=\"stylesheet\" type=\"text/css\" href=\"/Content/style.min_MSY.css?v=1.1\" />\r\n",
" \r\n",
" <link href=\"/Content/style.login.MSY.css\" rel=\"stylesheet\"/>\r\n",
"\r\n",
"\r\n",
" <!--第三方 End-->\r\n",
" <!--全局 Begin-->\r\n",
" <!--全局 End-->\r\n",
" <!--[if lt IE 9]>\r\n",
" <script src=\"/Scripts/ie/html5shiv.js\"></script>\r\n",
"<script src=\"/Scripts/ie/respond.min.js\"></script>\r\n",
"\r\n",
"\r\n",
" <![endif]-->\r\n",
" <!--[if lt IE 8]>\r\n",
" <script>\r\n",
" alert('管理系统已不支持IE6-8,请使用谷歌、火狐等浏览器\\n或360、QQ等国产浏览器的极速模式浏览本页面!');\r\n",
" </script>\r\n",
" <![endif]-->\r\n",
"</head>\r\n",
"<body class=\"gray-bg wrapperV2\">\r\n",
" \r\n",
"\r\n",
"<style>\r\n",
"\r\n",
" \r\n",
"\r\n",
"\r\n",
" \r\n",
"\r\n",
" .icheckbox_square-green {\r\n",
" background-position: -118px 0px;\r\n",
" }\r\n",
"\r\n",
" .icheckbox_square-green.hover {\r\n",
" background-position: -94px -24px;\r\n",
" }\r\n",
"\r\n",
" .icheckbox_square-green.checked {\r\n",
" background-position: -142px -24px;\r\n",
" }\r\n",
"\r\n",
"\r\n",
"\r\n",
" .leftText {\r\n",
" position: absolute;\r\n",
" top: 50%;\r\n",
" left: 0;\r\n",
" -webkit-transform: translate(140px,-70%);\r\n",
" -ms-transform: translate(140px,-70%);\r\n",
" transform: translate(132px,-140%);\r\n",
" }\r\n",
"\r\n",
" .shopName {\r\n",
" \r\n",
" }\r\n",
"\r\n",
" .shopName h1 {\r\n",
" font-size: 36px;\r\n",
" font-weight: bold;\r\n",
" color: #fff;\r\n",
" margin: 0;\r\n",
" line-height: 1;\r\n",
" font-family: \"Microsoft YaHei\";\r\n",
" }\r\n",
"\r\n",
" .shopName p {\r\n",
" font-size: 24px;\r\n",
" font-weight: 300;\r\n",
" color: #fff;\r\n",
" line-height: 1;\r\n",
" margin: 10px 0 0;\r\n",
" font-family: \"Microsoft YaHei\";\r\n",
" letter-spacing: 2px;\r\n",
" }\r\n",
"\r\n",
" .log_wrap {\r\n",
" position: fixed;\r\n",
" top: 0;\r\n",
" bottom: 0;\r\n",
" left: 0;\r\n",
" width: 100%;\r\n",
" background: url(../Images/MSY/lg_bg_MSY.png) center center no-repeat;\r\n",
" }\r\n",
" \r\n",
" .bg_bottom {\r\n",
" position: absolute;\r\n",
" bottom: 100px;\r\n",
" left: 50%;\r\n",
" transform: translate3d(-50%,0,0);\r\n",
" }\r\n",
"\r\n",
" .bg_bottom img {\r\n",
" max-width: 853px;\r\n",
" }\r\n",
"\r\n",
" .loginContent {\r\n",
" float: left;\r\n",
" padding: 25px 36px 35px;\r\n",
" background-color: #fff;\r\n",
" background:#fff;\r\n",
" box-shadow: 0 0 14px 2px rgba(0,0,0,0.2);\r\n",
" border-radius: 6px;\r\n",
" margin-left: 150px;\r\n",
" position: absolute;\r\n",
" top: 46%;\r\n",
" left: 55%;\r\n",
" -webkit-transform: translate(0,-200px);\r\n",
" -ms-transform: translate(0,-200px);\r\n",
" transform: translate(0,-200px);\r\n",
" }\r\n",
"\r\n",
"\r\n",
" .topLogo {\r\n",
" height: 90px;\r\n",
" background-color: #fff;\r\n",
" }\r\n",
"\r\n",
" .topLogo img {\r\n",
" margin-top: 20px;\r\n",
" margin-left: 37px;\r\n",
" vertical-align: top;\r\n",
" }\r\n",
"\r\n",
" .topLogo span {\r\n",
" display: inline-block;\r\n",
" margin-left: -19px;\r\n",
" padding-left: 15px;\r\n",
" margin-top: 36px;\r\n",
" border-left: 2px solid #009E95;\r\n",
" color: #009E95;\r\n",
" font-size: 22px;\r\n",
" line-height: 23px;\r\n",
" letter-spacing: 1.5px;\r\n",
" }\r\n",
" \r\n",
" .btn-primary,.btn-primary:hover,.btn-primary:visited,.btn-primary:active,\r\n",
" .btn.active.focus, .btn.active:focus, .btn.focus, .btn:active.focus, .btn:active:focus, .btn:focus {\r\n",
" \r\n",
" outline:none;\r\n",
" }\r\n",
" input:-webkit-autofill, textarea:-webkit-autofill, select:-webkit-autofill {\r\n",
" background:#ffffef;\r\n",
" }\r\n",
" \r\n",
"\r\n",
" \r\n",
"\r\n",
"\r\n",
"</style>\r\n",
"<div class=\"log_wrap\">\r\n",
" <div class=\"topLogo\">\r\n",
" <img src=\"/Images/MSY/login_logo.png\" />\r\n",
" <span>智车联门店管理系统</span>\r\n",
" </div>\r\n",
"\r\n",
" \r\n",
"\r\n",
" <div class=\"loginContent\">\r\n",
" <div class=\"decorate\">\r\n",
" \r\n",
" </div>\r\n",
"<form action=\"/Account/Login?ReturnUrl=http%3A%2F%2Fautoexpert.pli-petronas.com.cn%3A8011%2FCustomer%2FCustCardList\" method=\"post\" style=\"width:240px;\"><input name=\"__RequestVerificationToken\" type=\"hidden\" value=\"qJ3wHvqHj_Dmi393M74k3teysUw_72lm7fxsubP7UE_AE3Hobn34ffuYmbdm865SS5H9MX0gcjjpJS15aMOLUWMFnmdk9M8w9apiwZvcCX41\" /> <h1 style=\"font-size:16px;color:#141414;font-weight:bold;letter-spacing:3px;margin-top:0;margin-bottom:18px;font-family:'Microsoft YaHei';text-align:center;\">用户登录</h1>\r\n",
" <div class=\"form-group\" style=\"position:relative;text-align:left;\">\r\n",
" <input Value=\"\" class=\"form-control\" data-val=\"true\" data-val-length=\"字段 用户名 必须是一个字符串,其最小长度为 6,最大长度为 100。\" data-val-length-max=\"100\" data-val-length-min=\"6\" data-val-required=\"用户名 字段是必需的。\" id=\"ECUserName\" name=\"ECUserName\" placeholder=\"用户名\" style=\"border-radius:4px;padding-left:40px;\" type=\"text\" value=\"\" />\r\n",
" <span class=\"field-validation-valid text-danger\" data-valmsg-for=\"ECUserName\" data-valmsg-replace=\"true\"></span>\r\n",
" <i class=\"fa fa-user\" style=\"position:absolute;top:0;left:0;line-height:34px;font-size:20px;color:#b2b2b2;width:40px;text-align:center;\"></i>\r\n",
" </div>\r\n",
" <div class=\"form-group\" style=\"position:relative;text-align:left;\">\r\n",
" <input Value=\"\" class=\"form-control\" data-val=\"true\" data-val-length=\"字段 密码 必须是一个字符串,其最小长度为 6,最大长度为 100。\" data-val-length-max=\"100\" data-val-length-min=\"6\" data-val-required=\"密码 字段是必需的。\" id=\"ECPassword\" name=\"ECPassword\" placeholder=\"密码\" style=\"border-radius:4px;padding-left:40px;\" type=\"password\" />\r\n",
" <span class=\"field-validation-valid text-danger\" data-valmsg-for=\"ECPassword\" data-valmsg-replace=\"true\"></span>\r\n",
" <i class=\"fa fa-unlock-alt\" style=\"position:absolute;top:0;left:0;line-height:34px;font-size:20px;color:#b2b2b2;width:40px;text-align:center;\"></i>\r\n",
" </div>\r\n",
" <div class=\"form-group text-left\" style=\"margin-bottom:6px;\">\r\n",
" <div class=\"checkbox i-checks\" style=\"margin-top:0;margin-bottom:0;line-height:26px;\">\r\n",
" <label class=\"no-padding\" style=\"line-height:26px;\">\r\n",
" \r\n",
"<input data-val=\"true\" data-val-required=\"记住密码 字段是必需的。\" id=\"RememberMe\" name=\"RememberMe\" type=\"checkbox\" value=\"true\" /><input name=\"RememberMe\" type=\"hidden\" value=\"false\" /><i></i> <label class=\"rember-txt\" for=\"RememberMe\">记住密码</label> </label>\r\n",
" </div>\r\n",
" </div>\r\n",
" <button type=\"submit\" class=\"btn btn-primary block full-width\" style=\"text-overflow:ellipsis\">登 录</button>\r\n",
" <p class=\"text-muted text-center\">\r\n",
"\r\n",
" </p>\r\n",
"</form> </div>\r\n",
"\r\n",
"\r\n",
"\r\n",
"\r\n",
"</div>\r\n",
"\r\n",
" <!--全局 Begin-->\r\n",
" <script src=\"/Scripts/jquery.min.js\"></script>\r\n",
"<script src=\"/Scripts/bootstrap.min.js\"></script>\r\n",
"\r\n",
"\r\n",
" <!--全局 End-->\r\n",
" <!--第三方 Begin-->\r\n",
" <!--弹出框plugin layer-->\r\n",
" <script src=\"/Scripts/plugins/layer/layer.min.js\"></script>\r\n",
"\r\n",
" <!--选择框样式plugin iCheck-->\r\n",
" <script src=\"/Scripts/plugins/iCheck/icheck.min.js\"></script>\r\n",
"\r\n",
" <!--验证plugin validate-->\r\n",
" <script src=\"/Scripts/plugins/validate/jquery.validate.min.js\"></script>\r\n",
"<script src=\"/Scripts/plugins/validate/jquery.validate.unobtrusive.min.js\"></script>\r\n",
"\r\n",
" <!--高级下拉列表plugin chosen-->\r\n",
" <script src=\"/Scripts/plugins/chosen/chosen.jquery.js\"></script>\r\n",
"\r\n",
" <!-- 第三方插件 高级搜索-->\r\n",
" <script src=\"/Scripts/plugins/suggest/bootstrap-suggest.min.js\"></script>\r\n",
"\r\n",
" <!-- table合并 -->\r\n",
" <script src=\"/Scripts/tablesMergeCell.js\"></script>\r\n",
"\r\n",
" <!--内容框plugin content-->\r\n",
" <script src=\"/Scripts/content.min.js\"></script>\r\n",
"\r\n",
" <script src=\"/Scripts/plugins/datapicker/bootstrap-datetimepicker.min.js\"></script>\r\n",
"<script src=\"/Scripts/plugins/datapicker/bootstrap-datetimepicker.zh-CN.js\"></script>\r\n",
"\r\n",
" \r\n",
" <script src=\"/Scripts/public.js?v=1.1\"></script>\r\n",
" \r\n",
" \r\n",
"\r\n",
" <script>\r\n",
" $(\"form\").submit(function (e) {\r\n",
"\r\n",
" if (!$(this).valid()) {\r\n",
" return;\r\n",
" }\r\n",
" var index = layer.load();\r\n",
" $.post(\"/Account/Login/\", $(\"form\").serialize(), function (d, s) {\r\n",
" if (d.Success == true) {\r\n",
" location.href = \"/\";\r\n",
" } else {\r\n",
" layer.close(index);\r\n",
" layer.msg(d.Message, { time: 2000, icon: 2 })\r\n",
"\r\n",
" }\r\n",
"\r\n",
"\r\n",
" }, 'json').error(function (e) {\r\n",
" layer.msg(\"网络错误\", { time: 2000, icon: 2 })\r\n",
" layer.close(index);\r\n",
" })\r\n",
"\r\n",
" e.returnValue = false;\r\n",
" return false;\r\n",
" })\r\n",
"\r\n",
" </script>\r\n",
"\r\n",
"\r\n",
"\r\n",
"\r\n",
" <link href=\"/Scripts/plugins/select2/css/select2.css\" rel=\"stylesheet\" />\r\n",
" <script src=\"/Scripts/plugins/select2/js/select2.js\"></script>\r\n",
" <!--第三方 End-->\r\n",
" <script id=\"LayoutJs\">\r\n",
" $(function () {\r\n",
" if (self != top && (Versions().iPhone || Versions().iPad || Versions().ios)) {\r\n",
" var $if = $(\".J_mainContent\", window.top.document);\r\n",
" $(\"body\").css({ \"width\": $if.width() });\r\n",
" }\r\n",
" });\r\n",
" </script>\r\n",
" <script src=\"/scripts/views/Account/Login.js?v=132943979358563438\"></script>\r\n",
"\r\n",
"\r\n",
" <div style=\"display:none\">\r\n",
" \r\n",
" \r\n",
" <script>\r\n",
" $(function () {\r\n",
" if (location.host == \"auto.51autoshop.com\") {\r\n",
" var sp = document.createElement(\"script\");\r\n",
" sp.src = \"https://hm.baidu.com/hm.js?b13246fd95aec7bfc57d9c415dfefe18\";\r\n",
" document.head.appendChild(sp);\r\n",
" }\r\n",
" });\r\n",
" </script>\r\n",
" </div>\r\n",
"</body>\r\n",
"</html>\r\n",
"\n",
"[]\n",
"[]\n",
"<!DOCTYPE html>\r\n",
"<html lang=\"zh\">\r\n",
"<head>\r\n",
"\r\n",
" <meta charset=\"utf-8\">\r\n",
" <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n",
" <meta name=\"renderer\" content=\"webkit\">\r\n",
" <title>登录—智车联门店管理系统</title>\r\n",
" <meta name=\"keywords\" content=\"登录—智车联门店管理系统\">\r\n",
" <meta name=\"description\" content=\"登录—智车联门店管理系统\">\r\n",
" <link rel=\"shortcut icon\" href=\"/images/msy/favicon.ico\" type=\"image/x-icon\" />\r\n",
" <!--全局 Begin-->\r\n",
" <script src=\"/Scripts/backspace.js\"></script>\r\n",
" <script src=\"/Scripts/angular.min.js?v=1.58\"></script>\r\n",
" <link href=\"/Content/bootstrap.min.css\" rel=\"stylesheet\"/>\r\n",
"<link href=\"/Content/font-awesome.min.css\" rel=\"stylesheet\"/>\r\n",
"\r\n",
" <link href=\"/Content/master.css\" rel=\"stylesheet\"/>\r\n",
"\r\n",
" <!--全局 End-->\r\n",
" <!--第三方 Begin-->\r\n",
" <!--选择框样式plugin iCheck-->\r\n",
" <link href=\"/Content/plugins/iCheck/custom.css\" rel=\"stylesheet\"/>\r\n",
"\r\n",
" <!--高级下拉列表plugin chosen-->\r\n",
" <link href=\"/Content/plugins/chosen/chosen.css\" rel=\"stylesheet\"/>\r\n",
"\r\n",
" <link href=\"/Content/plugins/datapicker/datetimepicker.css\" rel=\"stylesheet\"/>\r\n",
"\r\n",
" <link href=\"/Content/animate.min.css\" rel=\"stylesheet\"/>\r\n",
"\r\n",
" <link rel=\"stylesheet\" type=\"text/css\" href=\"/Content/style.min_MSY.css?v=1.1\" />\r\n",
" \r\n",
" <link href=\"/Content/style.login.MSY.css\" rel=\"stylesheet\"/>\r\n",
"\r\n",
"\r\n",
" <!--第三方 End-->\r\n",
" <!--全局 Begin-->\r\n",
" <!--全局 End-->\r\n",
" <!--[if lt IE 9]>\r\n",
" <script src=\"/Scripts/ie/html5shiv.js\"></script>\r\n",
"<script src=\"/Scripts/ie/respond.min.js\"></script>\r\n",
"\r\n",
"\r\n",
" <![endif]-->\r\n",
" <!--[if lt IE 8]>\r\n",
" <script>\r\n",
" alert('管理系统已不支持IE6-8,请使用谷歌、火狐等浏览器\\n或360、QQ等国产浏览器的极速模式浏览本页面!');\r\n",
" </script>\r\n",
" <![endif]-->\r\n",
"</head>\r\n",
"<body class=\"gray-bg wrapperV2\">\r\n",
" \r\n",
"\r\n",
"<style>\r\n",
"\r\n",
" \r\n",
"\r\n",
"\r\n",
" \r\n",
"\r\n",
" .icheckbox_square-green {\r\n",
" background-position: -118px 0px;\r\n",
" }\r\n",
"\r\n",
" .icheckbox_square-green.hover {\r\n",
" background-position: -94px -24px;\r\n",
" }\r\n",
"\r\n",
" .icheckbox_square-green.checked {\r\n",
" background-position: -142px -24px;\r\n",
" }\r\n",
"\r\n",
"\r\n",
"\r\n",
" .leftText {\r\n",
" position: absolute;\r\n",
" top: 50%;\r\n",
" left: 0;\r\n",
" -webkit-transform: translate(140px,-70%);\r\n",
" -ms-transform: translate(140px,-70%);\r\n",
" transform: translate(132px,-140%);\r\n",
" }\r\n",
"\r\n",
" .shopName {\r\n",
" \r\n",
" }\r\n",
"\r\n",
" .shopName h1 {\r\n",
" font-size: 36px;\r\n",
" font-weight: bold;\r\n",
" color: #fff;\r\n",
" margin: 0;\r\n",
" line-height: 1;\r\n",
" font-family: \"Microsoft YaHei\";\r\n",
" }\r\n",
"\r\n",
" .shopName p {\r\n",
" font-size: 24px;\r\n",
" font-weight: 300;\r\n",
" color: #fff;\r\n",
" line-height: 1;\r\n",
" margin: 10px 0 0;\r\n",
" font-family: \"Microsoft YaHei\";\r\n",
" letter-spacing: 2px;\r\n",
" }\r\n",
"\r\n",
" .log_wrap {\r\n",
" position: fixed;\r\n",
" top: 0;\r\n",
" bottom: 0;\r\n",
" left: 0;\r\n",
" width: 100%;\r\n",
" background: url(../Images/MSY/lg_bg_MSY.png) center center no-repeat;\r\n",
" }\r\n",
" \r\n",
" .bg_bottom {\r\n",
" position: absolute;\r\n",
" bottom: 100px;\r\n",
" left: 50%;\r\n",
" transform: translate3d(-50%,0,0);\r\n",
" }\r\n",
"\r\n",
" .bg_bottom img {\r\n",
" max-width: 853px;\r\n",
" }\r\n",
"\r\n",
" .loginContent {\r\n",
" float: left;\r\n",
" padding: 25px 36px 35px;\r\n",
" background-color: #fff;\r\n",
" background:#fff;\r\n",
" box-shadow: 0 0 14px 2px rgba(0,0,0,0.2);\r\n",
" border-radius: 6px;\r\n",
" margin-left: 150px;\r\n",
" position: absolute;\r\n",
" top: 46%;\r\n",
" left: 55%;\r\n",
" -webkit-transform: translate(0,-200px);\r\n",
" -ms-transform: translate(0,-200px);\r\n",
" transform: translate(0,-200px);\r\n",
" }\r\n",
"\r\n",
"\r\n",
" .topLogo {\r\n",
" height: 90px;\r\n",
" background-color: #fff;\r\n",
" }\r\n",
"\r\n",
" .topLogo img {\r\n",
" margin-top: 20px;\r\n",
" margin-left: 37px;\r\n",
" vertical-align: top;\r\n",
" }\r\n",
"\r\n",
" .topLogo span {\r\n",
" display: inline-block;\r\n",
" margin-left: -19px;\r\n",
" padding-left: 15px;\r\n",
" margin-top: 36px;\r\n",
" border-left: 2px solid #009E95;\r\n",
" color: #009E95;\r\n",
" font-size: 22px;\r\n",
" line-height: 23px;\r\n",
" letter-spacing: 1.5px;\r\n",
" }\r\n",
" \r\n",
" .btn-primary,.btn-primary:hover,.btn-primary:visited,.btn-primary:active,\r\n",
" .btn.active.focus, .btn.active:focus, .btn.focus, .btn:active.focus, .btn:active:focus, .btn:focus {\r\n",
" \r\n",
" outline:none;\r\n",
" }\r\n",
" input:-webkit-autofill, textarea:-webkit-autofill, select:-webkit-autofill {\r\n",
" background:#ffffef;\r\n",
" }\r\n",
" \r\n",
"\r\n",
" \r\n",
"\r\n",
"\r\n",
"</style>\r\n",
"<div class=\"log_wrap\">\r\n",
" <div class=\"topLogo\">\r\n",
" <img src=\"/Images/MSY/login_logo.png\" />\r\n",
" <span>智车联门店管理系统</span>\r\n",
" </div>\r\n",
"\r\n",
" \r\n",
"\r\n",
" <div class=\"loginContent\">\r\n",
" <div class=\"decorate\">\r\n",
" \r\n",
" </div>\r\n",
"<form action=\"/Account/Login?ReturnUrl=http%3A%2F%2Fautoexpert.pli-petronas.com.cn%3A8011%2FCustomer%2FCustCardList\" method=\"post\" style=\"width:240px;\"><input name=\"__RequestVerificationToken\" type=\"hidden\" value=\"Zh5qwPstwE9EsEa84D3lrV8L2CevMDspP7tNHwjxLl2_ctVmMpAx76h4QcqI_lr94KdMm41siyDg07NfdCKDy0TQVJPPfeHm2f7ZlMWPKrk1\" /> <h1 style=\"font-size:16px;color:#141414;font-weight:bold;letter-spacing:3px;margin-top:0;margin-bottom:18px;font-family:'Microsoft YaHei';text-align:center;\">用户登录</h1>\r\n",
" <div class=\"form-group\" style=\"position:relative;text-align:left;\">\r\n",
" <input Value=\"\" class=\"form-control\" data-val=\"true\" data-val-length=\"字段 用户名 必须是一个字符串,其最小长度为 6,最大长度为 100。\" data-val-length-max=\"100\" data-val-length-min=\"6\" data-val-required=\"用户名 字段是必需的。\" id=\"ECUserName\" name=\"ECUserName\" placeholder=\"用户名\" style=\"border-radius:4px;padding-left:40px;\" type=\"text\" value=\"\" />\r\n",
" <span class=\"field-validation-valid text-danger\" data-valmsg-for=\"ECUserName\" data-valmsg-replace=\"true\"></span>\r\n",
" <i class=\"fa fa-user\" style=\"position:absolute;top:0;left:0;line-height:34px;font-size:20px;color:#b2b2b2;width:40px;text-align:center;\"></i>\r\n",
" </div>\r\n",
" <div class=\"form-group\" style=\"position:relative;text-align:left;\">\r\n",
" <input Value=\"\" class=\"form-control\" data-val=\"true\" data-val-length=\"字段 密码 必须是一个字符串,其最小长度为 6,最大长度为 100。\" data-val-length-max=\"100\" data-val-length-min=\"6\" data-val-required=\"密码 字段是必需的。\" id=\"ECPassword\" name=\"ECPassword\" placeholder=\"密码\" style=\"border-radius:4px;padding-left:40px;\" type=\"password\" />\r\n",
" <span class=\"field-validation-valid text-danger\" data-valmsg-for=\"ECPassword\" data-valmsg-replace=\"true\"></span>\r\n",
" <i class=\"fa fa-unlock-alt\" style=\"position:absolute;top:0;left:0;line-height:34px;font-size:20px;color:#b2b2b2;width:40px;text-align:center;\"></i>\r\n",
" </div>\r\n",
" <div class=\"form-group text-left\" style=\"margin-bottom:6px;\">\r\n",
" <div class=\"checkbox i-checks\" style=\"margin-top:0;margin-bottom:0;line-height:26px;\">\r\n",
" <label class=\"no-padding\" style=\"line-height:26px;\">\r\n",
" \r\n",
"<input data-val=\"true\" data-val-required=\"记住密码 字段是必需的。\" id=\"RememberMe\" name=\"RememberMe\" type=\"checkbox\" value=\"true\" /><input name=\"RememberMe\" type=\"hidden\" value=\"false\" /><i></i> <label class=\"rember-txt\" for=\"RememberMe\">记住密码</label> </label>\r\n",
" </div>\r\n",
" </div>\r\n",
" <button type=\"submit\" class=\"btn btn-primary block full-width\" style=\"text-overflow:ellipsis\">登 录</button>\r\n",
" <p class=\"text-muted text-center\">\r\n",
"\r\n",
" </p>\r\n",
"</form> </div>\r\n",
"\r\n",
"\r\n",
"\r\n",
"\r\n",
"</div>\r\n",
"\r\n",
" <!--全局 Begin-->\r\n",
" <script src=\"/Scripts/jquery.min.js\"></script>\r\n",
"<script src=\"/Scripts/bootstrap.min.js\"></script>\r\n",
"\r\n",
"\r\n",
" <!--全局 End-->\r\n",
" <!--第三方 Begin-->\r\n",
" <!--弹出框plugin layer-->\r\n",
" <script src=\"/Scripts/plugins/layer/layer.min.js\"></script>\r\n",
"\r\n",
" <!--选择框样式plugin iCheck-->\r\n",
" <script src=\"/Scripts/plugins/iCheck/icheck.min.js\"></script>\r\n",
"\r\n",
" <!--验证plugin validate-->\r\n",
" <script src=\"/Scripts/plugins/validate/jquery.validate.min.js\"></script>\r\n",
"<script src=\"/Scripts/plugins/validate/jquery.validate.unobtrusive.min.js\"></script>\r\n",
"\r\n",
" <!--高级下拉列表plugin chosen-->\r\n",
" <script src=\"/Scripts/plugins/chosen/chosen.jquery.js\"></script>\r\n",
"\r\n",
" <!-- 第三方插件 高级搜索-->\r\n",
" <script src=\"/Scripts/plugins/suggest/bootstrap-suggest.min.js\"></script>\r\n",
"\r\n",
" <!-- table合并 -->\r\n",
" <script src=\"/Scripts/tablesMergeCell.js\"></script>\r\n",
"\r\n",
" <!--内容框plugin content-->\r\n",
" <script src=\"/Scripts/content.min.js\"></script>\r\n",
"\r\n",
" <script src=\"/Scripts/plugins/datapicker/bootstrap-datetimepicker.min.js\"></script>\r\n",
"<script src=\"/Scripts/plugins/datapicker/bootstrap-datetimepicker.zh-CN.js\"></script>\r\n",
"\r\n",
" \r\n",
" <script src=\"/Scripts/public.js?v=1.1\"></script>\r\n",
" \r\n",
" \r\n",
"\r\n",
" <script>\r\n",
" $(\"form\").submit(function (e) {\r\n",
"\r\n",
" if (!$(this).valid()) {\r\n",
" return;\r\n",
" }\r\n",
" var index = layer.load();\r\n",
" $.post(\"/Account/Login/\", $(\"form\").serialize(), function (d, s) {\r\n",
" if (d.Success == true) {\r\n",
" location.href = \"/\";\r\n",
" } else {\r\n",
" layer.close(index);\r\n",
" layer.msg(d.Message, { time: 2000, icon: 2 })\r\n",
"\r\n",
" }\r\n",
"\r\n",
"\r\n",
" }, 'json').error(function (e) {\r\n",
" layer.msg(\"网络错误\", { time: 2000, icon: 2 })\r\n",
" layer.close(index);\r\n",
" })\r\n",
"\r\n",
" e.returnValue = false;\r\n",
" return false;\r\n",
" })\r\n",
"\r\n",
" </script>\r\n",
"\r\n",
"\r\n",
"\r\n",
"\r\n",
" <link href=\"/Scripts/plugins/select2/css/select2.css\" rel=\"stylesheet\" />\r\n",
" <script src=\"/Scripts/plugins/select2/js/select2.js\"></script>\r\n",
" <!--第三方 End-->\r\n",
" <script id=\"LayoutJs\">\r\n",
" $(function () {\r\n",
" if (self != top && (Versions().iPhone || Versions().iPad || Versions().ios)) {\r\n",
" var $if = $(\".J_mainContent\", window.top.document);\r\n",
" $(\"body\").css({ \"width\": $if.width() });\r\n",
" }\r\n",
" });\r\n",
" </script>\r\n",
" <script src=\"/scripts/views/Account/Login.js?v=132943979358563438\"></script>\r\n",
"\r\n",
"\r\n",
" <div style=\"display:none\">\r\n",
" \r\n",
" \r\n",
" <script>\r\n",
" $(function () {\r\n",
" if (location.host == \"auto.51autoshop.com\") {\r\n",
" var sp = document.createElement(\"script\");\r\n",
" sp.src = \"https://hm.baidu.com/hm.js?b13246fd95aec7bfc57d9c415dfefe18\";\r\n",
" document.head.appendChild(sp);\r\n",
" }\r\n",
" });\r\n",
" </script>\r\n",
" </div>\r\n",
"</body>\r\n",
"</html>\r\n",
"\n",
"[]\n",
"[]\n"
]
}
],
"execution_count": 1
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## 提取卡id",
"id": "7bde561428200b82"
},
{
"cell_type": "code",
"id": "2f31fae3",
"metadata": {
"ExecuteTime": {
"end_time": "2025-08-08T08:30:35.064296Z",
"start_time": "2025-08-08T08:30:35.016503Z"
}
},
"source": [
"import re\n",
"import pandas as pd\n",
"\n",
"text = '''\n",
"\"CustCardID\": 710943,\n",
"\"OtherField\": \"SomeValue\",\n",
"\"CustCardID\": 123456,\n",
"\"CustCardID\": 987654,\n",
"'''\n",
"\n",
"# pattern = r'\"CardCode\":\\s*\"([^\"]+)\"'\n",
"pattern = r'\"CustCardID\":(\\d+)'\n",
"pattern1 = r'\"CardCode\":\"(MN\\d+)\"'\n",
"\n",
"matches = re.findall(pattern, html_text)\n",
"print(matches) # 输出: ['710943', '123456', '987654']\n",
"matches1 = re.findall(pattern1, html_text)\n",
"print(matches1)\n",
"# 将匹配结果转换为 DataFrame\n",
"# df = pd.DataFrame(matches, columns=['CardCode'])\n",
"df = pd.DataFrame({\n",
" 'CustCardID': matches,\n",
"})\n",
"\n",
"# 去除值为 0 的行\n",
"df = df[df['CustCardID'] != '0']\n",
"\n",
"# 将 DataFrame 保存为 Excel 文件\n",
"df.to_excel('CardCode.xlsx', index=False)"
],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[]\n",
"[]\n"
]
}
],
"execution_count": 4
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## 会员卡明细导出",
"id": "9d981e0af7ecb574"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-08-08T08:52:42.217244Z",
"start_time": "2025-08-08T08:45:54.936965Z"
}
},
"cell_type": "code",
"source": [
"from openpyxl.reader.excel import load_workbook\n",
"import pandas as pd\n",
"from lxml import html\n",
"import os\n",
"import time\n",
"from tqdm import tqdm\n",
"import requests\n",
"from requests.exceptions import RequestException\n",
"\n",
"df = pd.read_excel(r\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\竞品系统数据导出\\CardCode.xlsx\", sheet_name=\"Sheet1\")\n",
"card_list = df['CustCardID'].tolist()\n",
"\n",
"headers = {\n",
" 'Content-Type': 'application/x-www-form-urlencoded',\n",
" 'Cookie': '__RequestVerificationToken=ei27VdIxNgu1Vn0E82uCZcZL2OBc4xZh-Q-T_ot24Xt0VybTwT3D-M1KAeGQ2sm2vMDmD6GSfPyH6Wz4Qt2qWm5dduSWCLFipdZO8mV2plo1; LoginData=name=18232075297&pass=075297&RememberMe=True; LoginInfo=77b14aaec44c49788c4f8049e944f52e; ShowUpdateContentCookie=1',\n",
" 'Priority': 'u=0, i',\n",
" 'Referer': 'https://auto.51autoshop.com/Customer/CustCardList',\n",
" 'Sec-Ch-Ua': '\"Microsoft Edge\";v=\"131\", \"Chromium\";v=\"131\", \"Not_A Brand\";v=\"24\"',\n",
" 'Sec-Ch-Ua-Mobile': '?0',\n",
" 'Sec-Ch-Ua-Platform': '\"Windows\"',\n",
" 'Sec-Fetch-Dest': 'iframe',\n",
" 'Sec-Fetch-Mode': 'navigate',\n",
" 'Sec-Fetch-Site': 'same-origin',\n",
" 'Sec-Fetch-User': '?1',\n",
" 'Upgrade-Insecure-Requests': '1',\n",
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0'\n",
"}\n",
"\n",
"excel_filename = 'card_details.xlsx'\n",
"sheet_name = 'CardDetails'\n",
"data = []\n",
"\n",
"\n",
"def fetch_card_details(card_id, max_retries=10, retry_delay=2):\n",
" url = f\"https://auto.51autoshop.com/Customer/CustCardDetial/{card_id}\"\n",
" url = f\"https://autoexpert.pli-petronas.com.cn/Customer/CustCardDetial/{card_id}\"\n",
"\n",
" for attempt in range(max_retries):\n",
" try:\n",
" response = requests.get(url, headers=headers)\n",
" response.raise_for_status() # Raises an HTTPError for bad responses\n",
" time.sleep(1)\n",
"\n",
" html_text = response.text\n",
" tree = html.fromstring(html_text)\n",
"\n",
" card_id = tree.xpath('//*[@id=\"CardCode\"]/@value')[0].strip()\n",
" rows = tree.xpath('//*[@id=\"ListTB1\"]/tbody/tr')\n",
"\n",
" card_data = []\n",
" for idx, row in enumerate(rows, start=1):\n",
" try:\n",
" content = row.xpath('td[2]/div/span[2]/text()')[0].strip()\n",
" number = row.xpath('td[3]/span/text()')[0].strip()\n",
" end_date = row.xpath('td[4]/input/@value')[0].strip()\n",
" # end_date = row.xpath('td[5]/input/@value')[0].strip() # 定制位置需要查看\n",
" card_data.append([card_id, content, number, end_date])\n",
" except IndexError:\n",
" print(f\"Row {idx}: Some data is missing or XPath does not match.\")\n",
"\n",
" return card_data\n",
"\n",
" except RequestException as e:\n",
" print(f\"Attempt {attempt + 1} failed for card {card_id}: {str(e)}\")\n",
" if attempt < max_retries - 1:\n",
" time.sleep(retry_delay) # Fixed delay of 2 seconds between retries\n",
" else:\n",
" print(f\"Max retries reached for card {card_id}. Skipping...\")\n",
" return None\n",
"\n",
" except ConnectionError as e:\n",
" print(f\"Connection error occurred for card {card_id}: {str(e)}\")\n",
" if attempt < max_retries - 1:\n",
" print(f\"Retrying in {retry_delay} seconds...\")\n",
" time.sleep(retry_delay)\n",
" else:\n",
" print(f\"Max retries reached for card {card_id}. Skipping...\")\n",
" return None\n",
"\n",
" except Exception as e:\n",
" print(f\"Unexpected error for card {card_id}: {str(e)}\")\n",
" if attempt < max_retries - 1:\n",
" print(f\"Retrying in {retry_delay} seconds...\")\n",
" time.sleep(retry_delay)\n",
" else:\n",
" print(f\"Max retries reached for card {card_id}. Skipping...\")\n",
" return None\n",
"\n",
"\n",
"for card in tqdm(card_list):\n",
" card_data = fetch_card_details(card)\n",
" if card_data:\n",
" data.extend(card_data)\n",
" time.sleep(1) # Basic delay between requests\n",
"\n",
"if data:\n",
" df = pd.DataFrame(data, columns=['Card ID', '次卡内容', '数量', '到期时间'])\n",
" df.to_excel(excel_filename, index=False, sheet_name=sheet_name, engine='openpyxl')\n",
"else:\n",
" print(\"No data was collected. Check your connection or the website's availability.\")"
],
"id": "d3063dca56a275e8",
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
" 2%|▏ | 179/11876 [06:46<7:22:58, 2.27s/it]\n"
]
},
{
"ename": "KeyboardInterrupt",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001B[1;31m---------------------------------------------------------------------------\u001B[0m",
"\u001B[1;31mKeyboardInterrupt\u001B[0m Traceback (most recent call last)",
"Cell \u001B[1;32mIn[12], line 91\u001B[0m\n\u001B[0;32m 89\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m card_data:\n\u001B[0;32m 90\u001B[0m data\u001B[38;5;241m.\u001B[39mextend(card_data)\n\u001B[1;32m---> 91\u001B[0m time\u001B[38;5;241m.\u001B[39msleep(\u001B[38;5;241m1\u001B[39m) \u001B[38;5;66;03m# Basic delay between requests\u001B[39;00m\n\u001B[0;32m 93\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m data:\n\u001B[0;32m 94\u001B[0m df \u001B[38;5;241m=\u001B[39m pd\u001B[38;5;241m.\u001B[39mDataFrame(data, columns\u001B[38;5;241m=\u001B[39m[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mCard ID\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;124m'\u001B[39m\u001B[38;5;124m次卡内容\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;124m'\u001B[39m\u001B[38;5;124m数量\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;124m'\u001B[39m\u001B[38;5;124m到期时间\u001B[39m\u001B[38;5;124m'\u001B[39m])\n",
"\u001B[1;31mKeyboardInterrupt\u001B[0m: "
]
}
],
"execution_count": 12
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-04-21T09:57:53.839317Z",
"start_time": "2025-04-21T09:57:53.746564Z"
}
},
"cell_type": "code",
"source": [
"if data:\n",
" df = pd.DataFrame(data, columns=['Card ID', '次卡内容', '数量', '到期时间'])\n",
" df.to_excel(excel_filename, index=False, sheet_name=sheet_name, engine='openpyxl')\n",
"else:\n",
" print(\"No data was collected. Check your connection or the website's availability.\")"
],
"id": "1bfaa9361ef94acc",
"outputs": [],
"execution_count": 35
}
],
"metadata": {
"kernelspec": {
"display_name": "base",
"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.12.4"
}
},
"nbformat": 4,
"nbformat_minor": 5
}