344 lines
14 KiB
Plaintext
344 lines
14 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"metadata": {},
|
|
"cell_type": "markdown",
|
|
"source": "",
|
|
"id": "647cfbcdeaa27eb5"
|
|
},
|
|
{
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2025-01-17T03:08:53.359083Z",
|
|
"start_time": "2025-01-17T03:08:53.166826Z"
|
|
}
|
|
},
|
|
"cell_type": "code",
|
|
"source": [
|
|
"import requests\n",
|
|
"import pandas as pd\n",
|
|
"\n",
|
|
"header = {\n",
|
|
" \"Host\": \"yqhm.vip5968.com\",\n",
|
|
" \"Origin\": \"http://yqhm.vip5968.com\",\n",
|
|
" \"Referer\": \"http://yqhm.vip5968.com/Module/Member/MemInfo.aspx?PID=42&MemCard=810076\",\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",
|
|
" \"X-Requested-With\": \"XMLHttpRequest\"\n",
|
|
"}\n",
|
|
"\n",
|
|
"cookies = {\n",
|
|
" \"ASP.NET_SessionId\": \"lzkml2bs2crzysshj2nutb5v\",\n",
|
|
" \"TestCookie\": \"\",\n",
|
|
" \"LoginState\": \"68AD1028E54520B1EDDB8584F2768630F73F7846610C020F0270B0E2C34FA16B27D3F2A5A659FD92\"\n",
|
|
"}\n",
|
|
"\n",
|
|
"data = {\n",
|
|
" \"Method\": \"MemInfoCountExpenseGet\",\n",
|
|
" \"memid\": \"1185\"\n",
|
|
"}\n",
|
|
"\n",
|
|
"url = 'http://yqhm.vip5968.com/AjaxService/Service.ashx?Method=MemInfoCountExpenseGet'\n",
|
|
"\n",
|
|
"res = requests.post(url=url, headers=header, cookies=cookies, data=data)\n",
|
|
"data_list = res.json()\n",
|
|
"\n",
|
|
"for data in data_list:\n",
|
|
" df = data.Dataframe()\n",
|
|
" df.to_excel(f'成浩美车会员管理系统导出.xlsx')\n"
|
|
],
|
|
"id": "4930c73284248d36",
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"{'List': [{'OrderAccount': '2025010617115616',\n",
|
|
" 'OrderEndTime': '2900/1/1 0:00:00',\n",
|
|
" 'OrderDetailID': '9897',\n",
|
|
" 'OrderID': '9445',\n",
|
|
" 'OrderAccount1': '2025010617115616',\n",
|
|
" 'GoodsID': '272',\n",
|
|
" 'GoodsDetailBidPrice': '0.0000',\n",
|
|
" 'OrderDetailPrice': '580.0000',\n",
|
|
" 'OrderDetailDiscountPrice': '580.0000',\n",
|
|
" 'OrderDetailItemPoint': '0.0000',\n",
|
|
" 'OrderDetailPoint': '0',\n",
|
|
" 'OrderDetailNumber': '5',\n",
|
|
" 'OrderDetailType': '1',\n",
|
|
" 'OrderDetailStaffID': '0',\n",
|
|
" 'OrderDetailCreateTime': '2025/1/6 17:12:06',\n",
|
|
" 'OrderDetaiEndTime': '2900/1/1 0:00:00',\n",
|
|
" 'OrderDetailRemark': '',\n",
|
|
" 'OrderDetailOldID': '0',\n",
|
|
" 'OrderDetailCountNum': '5',\n",
|
|
" 'DeductGoodsID': '0',\n",
|
|
" 'GoodsID1': '272',\n",
|
|
" 'GoodsCode': '190623082115',\n",
|
|
" 'GoodsName': '隐形车衣保养',\n",
|
|
" 'GoodsNameCode': 'YXCYBY',\n",
|
|
" 'GoodsPrice': '580.0000',\n",
|
|
" 'GoodsUnit': '块',\n",
|
|
" 'GoodsSalePercet': '0',\n",
|
|
" 'GoodsClassID': '12',\n",
|
|
" 'CommissionType': '0',\n",
|
|
" 'CommissionNumber': '0',\n",
|
|
" 'GoodsPoint': '0',\n",
|
|
" 'MinPercent': '0',\n",
|
|
" 'GoodsType': 'True',\n",
|
|
" 'GoodsBidPrice': '0.0000',\n",
|
|
" 'GoodsRemark': '',\n",
|
|
" 'GoodsPicture': '',\n",
|
|
" 'CreateShopID': '3',\n",
|
|
" 'CreateUserID': '4',\n",
|
|
" 'CreateTime': '2022/10/12 10:51:49',\n",
|
|
" 'GoodsNumberLowest': '0',\n",
|
|
" 'GoodsWeiXinPrice': '0.0000',\n",
|
|
" 'IsPutAway': 'False'}]}"
|
|
]
|
|
},
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"execution_count": 2
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"cell_type": "markdown",
|
|
"source": "请求列表",
|
|
"id": "cd5414f2e299d35a"
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"id": "initial_id",
|
|
"metadata": {
|
|
"collapsed": true,
|
|
"ExecuteTime": {
|
|
"end_time": "2025-01-18T02:28:51.436282Z",
|
|
"start_time": "2025-01-18T02:28:51.300809Z"
|
|
}
|
|
},
|
|
"source": [
|
|
"import requests\n",
|
|
"import pandas as pd\n",
|
|
"from bs4 import BeautifulSoup\n",
|
|
"from tqdm import tqdm\n",
|
|
"\n",
|
|
"headers = {\n",
|
|
" \"cookie\": \"td_cookie=2691013127; ASP.NET_SessionId=lzkml2bs2crzysshj2nutb5v; TestCookie=; LoginState=68AD1028E54520B1EDDB8584F2768630F73F7846610C020FB26F23CFB749BC377C96B23EE9919A65\",\n",
|
|
" \"host\": \"yqhm.vip5968.com\",\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",
|
|
"viewstate = None\n",
|
|
"eventvalidation = None\n",
|
|
"all_data_list = []\n",
|
|
"for page in tqdm(range(1, 56)): # 总页数注意+1\n",
|
|
" url = 'http://yqhm.vip5968.com/Module/Member/MemList.aspx?PID=3'\n",
|
|
"\n",
|
|
" data = {\n",
|
|
" \"PID\": \"3\",\n",
|
|
" \"__EVENTTARGET\": \"NetPager\",\n",
|
|
" \"__EVENTARGUMENT\": page,\n",
|
|
" \"__VIEWSTATE\": viewstate,\n",
|
|
" \"__EVENTVALIDATION\": eventvalidation\n",
|
|
"\n",
|
|
" }\n",
|
|
"\n",
|
|
" res = requests.post(url=url, headers=headers, data=data)\n",
|
|
" print(res.text)\n",
|
|
" soup = BeautifulSoup(res.text, 'html.parser')\n",
|
|
"\n",
|
|
" viewstate = soup.find('input', {'id': '__VIEWSTATE'})['value']\n",
|
|
" eventvalidation = soup.find('input', {'id': '__EVENTVALIDATION'})['value']\n",
|
|
"\n",
|
|
" input_tags = soup.find_all('input', {'id': lambda x: x and 'rptDataList_chkItem' in x})\n",
|
|
"\n",
|
|
" # 遍历找到的<input>标签并提取memid和memcard属性\n",
|
|
" for tag in input_tags:\n",
|
|
" memid = tag.get('memid')\n",
|
|
" memcard = tag.get('memcard')\n",
|
|
" # print(f\"MemID: {memid}, MemCard: {memcard}\")\n",
|
|
" new_data = {\n",
|
|
" \"Method\": \"MemInfoCountExpenseGet\",\n",
|
|
" \"memid\": memid\n",
|
|
" }\n",
|
|
" print(memid)\n",
|
|
" new_url = 'http://yqhm.vip5968.com/AjaxService/Service.ashx?Method=MemInfoCountExpenseGet'\n",
|
|
" res = requests.post(url=new_url, headers=headers, data=new_data)\n",
|
|
" list = res.json().get('List')\n",
|
|
" for data in list:\n",
|
|
" data['memcard'] = memcard\n",
|
|
" all_data_list.append(data)\n",
|
|
"\n",
|
|
"df = pd.DataFrame(all_data_list)\n",
|
|
"\n",
|
|
"df.to_excel(f'成浩美车会员管理系统导出.xlsx')\n",
|
|
"\n"
|
|
],
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
" 0%| | 0/55 [00:00<?, ?it/s]"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\n"
|
|
]
|
|
},
|
|
{
|
|
"ename": "TypeError",
|
|
"evalue": "'NoneType' object is not subscriptable",
|
|
"output_type": "error",
|
|
"traceback": [
|
|
"\u001B[1;31m---------------------------------------------------------------------------\u001B[0m",
|
|
"\u001B[1;31mTypeError\u001B[0m Traceback (most recent call last)",
|
|
"Cell \u001B[1;32mIn[32], line 31\u001B[0m\n\u001B[0;32m 28\u001B[0m \u001B[38;5;28mprint\u001B[39m(res\u001B[38;5;241m.\u001B[39mtext)\n\u001B[0;32m 29\u001B[0m soup \u001B[38;5;241m=\u001B[39m BeautifulSoup(res\u001B[38;5;241m.\u001B[39mtext, \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mhtml.parser\u001B[39m\u001B[38;5;124m'\u001B[39m)\n\u001B[1;32m---> 31\u001B[0m viewstate \u001B[38;5;241m=\u001B[39m soup\u001B[38;5;241m.\u001B[39mfind(\u001B[38;5;124m'\u001B[39m\u001B[38;5;124minput\u001B[39m\u001B[38;5;124m'\u001B[39m, {\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mid\u001B[39m\u001B[38;5;124m'\u001B[39m: \u001B[38;5;124m'\u001B[39m\u001B[38;5;124m__VIEWSTATE\u001B[39m\u001B[38;5;124m'\u001B[39m})[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mvalue\u001B[39m\u001B[38;5;124m'\u001B[39m]\n\u001B[0;32m 32\u001B[0m eventvalidation \u001B[38;5;241m=\u001B[39m soup\u001B[38;5;241m.\u001B[39mfind(\u001B[38;5;124m'\u001B[39m\u001B[38;5;124minput\u001B[39m\u001B[38;5;124m'\u001B[39m, {\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mid\u001B[39m\u001B[38;5;124m'\u001B[39m: \u001B[38;5;124m'\u001B[39m\u001B[38;5;124m__EVENTVALIDATION\u001B[39m\u001B[38;5;124m'\u001B[39m})[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mvalue\u001B[39m\u001B[38;5;124m'\u001B[39m]\n\u001B[0;32m 34\u001B[0m input_tags \u001B[38;5;241m=\u001B[39m soup\u001B[38;5;241m.\u001B[39mfind_all(\u001B[38;5;124m'\u001B[39m\u001B[38;5;124minput\u001B[39m\u001B[38;5;124m'\u001B[39m, {\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mid\u001B[39m\u001B[38;5;124m'\u001B[39m: \u001B[38;5;28;01mlambda\u001B[39;00m x: x \u001B[38;5;129;01mand\u001B[39;00m \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mrptDataList_chkItem\u001B[39m\u001B[38;5;124m'\u001B[39m \u001B[38;5;129;01min\u001B[39;00m x})\n",
|
|
"\u001B[1;31mTypeError\u001B[0m: 'NoneType' object is not subscriptable"
|
|
]
|
|
}
|
|
],
|
|
"execution_count": 32
|
|
},
|
|
{
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2025-01-18T02:35:24.666100Z",
|
|
"start_time": "2025-01-18T02:35:24.666100Z"
|
|
}
|
|
},
|
|
"cell_type": "code",
|
|
"source": [
|
|
"import requests\n",
|
|
"import pandas as pd\n",
|
|
"from bs4 import BeautifulSoup\n",
|
|
"from tqdm import tqdm\n",
|
|
"\n",
|
|
"headers = {\n",
|
|
" \"cookie\": \"td_cookie=2698739984; ASP.NET_SessionId=lzkml2bs2crzysshj2nutb5v; TestCookie=; td_cookie=2764366113; LoginState=68AD1028E54520B1EDDB8584F2768630F73F7846610C020FCDEE011B12E86E6E806A72CE142D4339\",\n",
|
|
" \"host\": \"yqhm.vip5968.com\",\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_list = []\n",
|
|
"# for page in tqdm(range(1, 56)): # 总页数注意+1\n",
|
|
"url = 'http://yqhm.vip5968.com/Module/Member/MemList.aspx?PID=3'\n",
|
|
"\n",
|
|
"data = {\n",
|
|
" \"PID\": \"3\",\n",
|
|
" # \"__EVENTTARGET\": \"NetPager\",\n",
|
|
" # \"__EVENTARGUMENT\": page,\n",
|
|
" # \"__VIEWSTATE\": viewstate,\n",
|
|
" # \"__EVENTVALIDATION\": eventvalidation\n",
|
|
"\n",
|
|
"}\n",
|
|
"res = requests.post(url=url, headers=headers, data=data)\n",
|
|
"print(res.text)\n",
|
|
"soup = BeautifulSoup(res.text, 'html.parser')\n",
|
|
"\n",
|
|
"viewstate = soup.find('input', {'id': '__VIEWSTATE'})['value']\n",
|
|
"eventvalidation = soup.find('input', {'id': '__EVENTVALIDATION'})['value']\n",
|
|
"\n",
|
|
"input_tags = soup.find_all('input', {'id': lambda x: x and 'rptDataList_chkItem' in x})\n",
|
|
"\n",
|
|
"# 遍历找到的<input>标签并提取memid和memcard属性\n",
|
|
"for tag in input_tags:\n",
|
|
" memid = tag.get('memid')\n",
|
|
" memcard = tag.get('memcard')\n",
|
|
" # print(f\"MemID: {memid}, MemCard: {memcard}\")\n",
|
|
" new_data = {\n",
|
|
" \"Method\": \"MemInfoCountExpenseGet\",\n",
|
|
" \"memid\": memid\n",
|
|
" }\n",
|
|
" print(memid)\n",
|
|
" new_url = 'http://yqhm.vip5968.com/AjaxService/Service.ashx?Method=MemInfoCountExpenseGet'\n",
|
|
" res = requests.post(url=new_url, headers=headers, data=new_data)\n",
|
|
" list = res.json().get('List')\n",
|
|
" for data in list:\n",
|
|
" data['memcard'] = memcard\n",
|
|
" all_data_list.append(data)\n",
|
|
"\n",
|
|
"for page in tqdm(range(2, 56)): # 总页数注意+1\n",
|
|
" url = 'http://yqhm.vip5968.com/Module/Member/MemList.aspx?PID=3'\n",
|
|
"\n",
|
|
" data = {\n",
|
|
" \"PID\": \"3\",\n",
|
|
" \"__EVENTTARGET\": \"NetPager\",\n",
|
|
" \"__EVENTARGUMENT\": page,\n",
|
|
" \"__VIEWSTATE\": viewstate,\n",
|
|
" \"__EVENTVALIDATION\": eventvalidation\n",
|
|
"\n",
|
|
" }\n",
|
|
"\n",
|
|
" res = requests.post(url=url, headers=headers, data=data)\n",
|
|
" # print(res.text)\n",
|
|
" soup = BeautifulSoup(res.text, 'html.parser')\n",
|
|
"\n",
|
|
" viewstate = soup.find('input', {'id': '__VIEWSTATE'})['value']\n",
|
|
" eventvalidation = soup.find('input', {'id': '__EVENTVALIDATION'})['value']\n",
|
|
"\n",
|
|
" input_tags = soup.find_all('input', {'id': lambda x: x and 'rptDataList_chkItem' in x})\n",
|
|
"\n",
|
|
" # 遍历找到的<input>标签并提取memid和memcard属性\n",
|
|
" for tag in input_tags:\n",
|
|
" memid = tag.get('memid')\n",
|
|
" memcard = tag.get('memcard')\n",
|
|
" # print(f\"MemID: {memid}, MemCard: {memcard}\")\n",
|
|
" new_data = {\n",
|
|
" \"Method\": \"MemInfoCountExpenseGet\",\n",
|
|
" \"memid\": memid\n",
|
|
" }\n",
|
|
" print(memid)\n",
|
|
" new_url = 'http://yqhm.vip5968.com/AjaxService/Service.ashx?Method=MemInfoCountExpenseGet'\n",
|
|
" res = requests.post(url=new_url, headers=headers, data=new_data)\n",
|
|
" list = res.json().get('List')\n",
|
|
" for data in list:\n",
|
|
" data['memcard'] = memcard\n",
|
|
" all_data_list.append(data)\n",
|
|
"\n",
|
|
"df = pd.DataFrame(all_data_list)\n",
|
|
"\n",
|
|
"df.to_excel(f'成浩美车会员管理系统导出.xlsx')\n",
|
|
"\n"
|
|
],
|
|
"id": "4743835b87d92aa8",
|
|
"outputs": [],
|
|
"execution_count": null
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 2
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython2",
|
|
"version": "2.7.6"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|