Files
2026-01-30 11:28:35 +08:00

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
}