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

157 lines
6.0 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1787\n",
"数据已成功导出到car_data.xlsx\n"
]
}
],
"source": [
"import requests\n",
"from bs4 import BeautifulSoup\n",
"import pandas as pd\n",
"\n",
"pageSize = 10000\n",
"url = 'https://s19.kehu51.com/app/Customers/CusTools.aspx?action=GetGridData'\n",
"\n",
"json = f'showID=3&viewName=mycus&gridName=cuslistnew2&configGuid=&whereSql=E513575924A85785&sortName=lastfollowtime&sortMode=desc&pageSize={pageSize}&pageIndex=1&recordCount=1787&isComb=false&combName=&combIntTemp=_comb&completeSql=E513575924A85785&customParam=%7B%22field%22%3A%22selectUserID%22%2C%22key%22%3A0%7D'\n",
"# 构建请求头\n",
"headers = {\n",
" 'Accept': '*/*',\n",
" 'Accept-Encoding': 'gzip, deflate, br, zstd',\n",
" 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',\n",
" 'Content-Length': '299',\n",
" 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',\n",
" 'Cookie': 'kehu51_user=18735521522; kehu51_pass=Xx123456; kehu51_server_username=cc9c4b66f19ec7ae6d489e6caaaceb0d; kehu51_server_serverid=19; ASP.NET_SessionId=lvhtxdfjbuymrsryoczhn5mi; teamCreateManID=0jkmaY3RdeFj2HX4WrJN5Q==; kehu51cookie=6958BDD7DCEADF0A83775994EFD09E5D722AF537BFB0741BB8E35CE4807E32F48097A08E3C914A52730C3D4B09AF6C9524BAA937C4EF2AF773D396081027AE7EA29932D831A19FA4D145E78564F9A85D63C305EE0B8DD39B2178B00340B34D3BEF70D88C8EF4FE02BC0EF6601A6B1F0FB762CBDAE71DDE08C27E62F90CCF7E155E41C9983E3327F67C170BF17387753B3B26C7D353085F23A2111D62896C9EE93174D53C5EB23DF8569C5FF49E615D498D62CEAA6DB5C73176112ACEA5DB5501C1A1B71C0B470239831165C0EB939B753AB79B0323E9AA06',\n",
" 'Origin': 'https://s19.kehu51.com',\n",
" 'Priority': 'u=1, i',\n",
" 'Referer': 'https://s19.kehu51.com/App/customers/cuslist.aspx?viewname=mycus&templateid=',\n",
" 'Sec-Ch-Ua': '\"Chromium\";v=\"130\", \"Microsoft Edge\";v=\"130\", \"Not?A_Brand\";v=\"99\"',\n",
" 'Sec-Ch-Ua-Mobile': '?0',\n",
" 'Sec-Ch-Ua-Platform': '\"Windows\"',\n",
" 'Sec-Fetch-Dest': 'empty',\n",
" 'Sec-Fetch-Mode': 'cors',\n",
" 'Sec-Fetch-Site': 'same-origin',\n",
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0',\n",
" 'X-Requested-With': 'XMLHttpRequest'\n",
"}\n",
"\n",
"res = requests.post(url=url,data = json,headers=headers)\n",
"\n",
"data = res.json()\n",
"\n",
"gridHtml = data['gridHtml']\n",
"\n",
"soup = BeautifulSoup(gridHtml, 'lxml') # 使用lxml解析器\n",
"\n",
"tbody = soup.find_all('tbody')[0]\n",
"\n",
"data = []\n",
"\n",
"# 查找所有的行\n",
"rows = tbody.find_all('tr', class_='TableLine1 k5-grid-tr')\n",
"print(len(rows))\n",
"for row in rows:\n",
" td_tags=row.find_all('td')\n",
" # 客户名称(车牌)\n",
" customer_name = row.find('a', class_='A0').text.strip()\n",
" # 手机号\n",
" phone_number = row.find('a', class_='phonemenu-trigger')\n",
" if phone_number:\n",
" phone_number = phone_number.text.strip()\n",
" else:\n",
" phone_number = ''\n",
" # 机油\n",
" oil = row.find('a', href=lambda x: x and 'OpneQQDialog' in x)\n",
" if oil:\n",
" oil = oil.text.strip()\n",
" else:\n",
" oil = ''\n",
" # 车型\n",
" car_models =td_tags[5].get_text()\n",
" if car_models:\n",
" pass\n",
" else:\n",
" car_models=''\n",
" # 公里数\n",
" mileage = row.find('a', href=lambda x: x and 'OpenWangWang' in x)\n",
" if mileage:\n",
" mileage = mileage.text.strip()\n",
" else:\n",
" mileage = ''\n",
" # 其他联系方式\n",
" \n",
" other_contact = td_tags[7].get_text()\n",
" if other_contact:\n",
" pass\n",
" else:\n",
" other_contact = ''\n",
" # 日期\n",
" date = row.find('td', id=lambda x: x and x.startswith('Customize1_'))\n",
" if date:\n",
" date = date.text.strip()\n",
" else:\n",
" date = ''\n",
" # 价格\n",
" price = row.find('td', id=lambda x: x and x.startswith('Customize2_'))\n",
" if price:\n",
" price=price.text.strip()\n",
" else:\n",
" price=''\n",
" # 备注\n",
" remarks = row.find('td', id=lambda x: x and x.startswith('Customize3_'))\n",
" if remarks:\n",
" remarks=remarks.text.strip()\n",
" else:\n",
" remarks=''\n",
" # 姓名\n",
" name = row.find('td', id=lambda x: x and x.startswith('Customize4_'))\n",
" if name:\n",
" name = name.text.strip()\n",
" else:\n",
" name = ''\n",
"\n",
" # 将数据添加到列表中\n",
" data.append([customer_name, phone_number, oil,car_models, mileage, other_contact, date, price, remarks, name])\n",
"\n",
"# 创建DataFrame\n",
"df = pd.DataFrame(data, columns=['客户名称(车牌)', '手机号', '机油','车型', '公里数', '其他联系方式', '日期', '价格', '备注', '姓名'])\n",
"\n",
"# 导出到Excel\n",
"df.to_excel('car_data.xlsx', index=False)\n",
"\n",
"print(\"数据已成功导出到car_data.xlsx\")\n"
]
}
],
"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": 2
}