Created
August 17, 2018 00:23
-
-
Save mrbkdad/3c9086e0b89a2276777511cec6326d9a to your computer and use it in GitHub Desktop.
판다스 이용 Ancos 품목 마스터 저장
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 34, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import requests\n", | |
"from bs4 import BeautifulSoup as bs\n", | |
"import pandas as pd\n", | |
"import time" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 35, | |
"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>LAB_NO</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>PGRPA0001</td>\n", | |
" <td>제품</td>\n", | |
" <td>(주)노드메이슨</td>\n", | |
" <td>엔코스7월</td>\n", | |
" <td>테스트제품1</td>\n", | |
" <td>18071908A</td>\n", | |
" <td>사용</td>\n", | |
" <td>KG</td>\n", | |
" <td>2018-08-08</td>\n", | |
" <td>-</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>PGRPA0002</td>\n", | |
" <td>제품</td>\n", | |
" <td>(주)고려한백화장품</td>\n", | |
" <td>JJJJ</td>\n", | |
" <td>테스트제품2</td>\n", | |
" <td>18071909A</td>\n", | |
" <td>사용</td>\n", | |
" <td>KG</td>\n", | |
" <td>2018-08-08</td>\n", | |
" <td>-</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>PGRPA0003</td>\n", | |
" <td>제품</td>\n", | |
" <td>(주)네추럴에프앤피</td>\n", | |
" <td>QQQQ</td>\n", | |
" <td>테스트제품3</td>\n", | |
" <td>18071910A</td>\n", | |
" <td>사용</td>\n", | |
" <td>KG</td>\n", | |
" <td>2018-08-08</td>\n", | |
" <td>-</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>PGRPA0004</td>\n", | |
" <td>제품</td>\n", | |
" <td>(주)고운세상코스메틱</td>\n", | |
" <td>DDDD</td>\n", | |
" <td>테스트제품4</td>\n", | |
" <td>18071911A</td>\n", | |
" <td>사용</td>\n", | |
" <td>KG</td>\n", | |
" <td>2018-08-08</td>\n", | |
" <td>-</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>PGRPA0005</td>\n", | |
" <td>제품</td>\n", | |
" <td>(주)갤러리에이엠</td>\n", | |
" <td>TEST</td>\n", | |
" <td>테스트제품5</td>\n", | |
" <td>18071912A</td>\n", | |
" <td>사용</td>\n", | |
" <td>KG</td>\n", | |
" <td>2018-08-08</td>\n", | |
" <td>-</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" 품목코드 유형 업체명 브랜드명 원료명 LAB_NO 상태 단위 사용시작일 \\\n", | |
"0 PGRPA0001 제품 (주)노드메이슨 엔코스7월 테스트제품1 18071908A 사용 KG 2018-08-08 \n", | |
"1 PGRPA0002 제품 (주)고려한백화장품 JJJJ 테스트제품2 18071909A 사용 KG 2018-08-08 \n", | |
"2 PGRPA0003 제품 (주)네추럴에프앤피 QQQQ 테스트제품3 18071910A 사용 KG 2018-08-08 \n", | |
"3 PGRPA0004 제품 (주)고운세상코스메틱 DDDD 테스트제품4 18071911A 사용 KG 2018-08-08 \n", | |
"4 PGRPA0005 제품 (주)갤러리에이엠 TEST 테스트제품5 18071912A 사용 KG 2018-08-08 \n", | |
"\n", | |
" 사용종료일 \n", | |
"0 - \n", | |
"1 - \n", | |
"2 - \n", | |
"3 - \n", | |
"4 - " | |
] | |
}, | |
"execution_count": 35, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df = pd.read_excel(\"data/품목마스터_20180808110022658.xls\",skiprows=2,header=None)\n", | |
"df.columns = ['a','b','품목코드','유형','업체명','브랜드명','원료명','LAB_NO','상태','단위','사용시작일','사용종료일']\n", | |
"df = df[df.columns[2:]]\n", | |
"df['사용시작일']=df['사용시작일'].astype(str)\n", | |
"df.head()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 36, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(6, 10)" | |
] | |
}, | |
"execution_count": 36, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df.values.shape" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 37, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def getVendorCode(sess,vendorName):\n", | |
" user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'\n", | |
" head = {\n", | |
" 'User-Agent':user_agent\n", | |
" }\n", | |
" url = 'http://www.pgian.com:9093/common/popup/vendorListAC.json'\n", | |
" param = {\n", | |
" 'pageNo': '1',\n", | |
" 'pageSize': '10',\n", | |
" 'vendorName': vendorName,\n", | |
" 'itemType': 'PRODUCT'\n", | |
" }\n", | |
" req = sess.post(url,param,headers=head)\n", | |
" return req.json().get('list',[{'vendorCode':'error'}])" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 38, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def getItemParam(itemNo,vendorCode,vendorCodeNm,itemSpec,itemName,uom,validFrom):\n", | |
" item = [\n", | |
" {\n", | |
" \"itemTypel\":{\"code\":\"PRODUCT\",\"codeNm\":\"제품\"},\n", | |
" \"itemType\":\"PRODUCT\",\n", | |
" \"itemGroupl\":{\"code\":\"\"},\n", | |
" \"itemGroup\":itemNo,\n", | |
" \"itemStatusl\":{\"code\":\"ACTIVE\",\"codeNm\":\"사용\"},\n", | |
" \"itemStatus\":\"ACTIVE\",\n", | |
" \"uoml\":{\"code\":\"C\",\"codeNm\":\"C\",\"optionData\":\"C\",\"optionData2\":\"C\"},\n", | |
" \"itemFunctionl\":{\"code\":\"\",\"codeNm\":\"선택\"},\n", | |
" \"vendorCodeNm\":vendorCodeNm,\n", | |
" \"validFrom\":validFrom,\n", | |
" \"_CUD\":\"C\",\n", | |
" \"itemNo\":itemNo,\n", | |
" \"vendorCode\":vendorCode,\n", | |
" \"itemSpec\":itemSpec,\n", | |
" \"itemName\":itemName,\n", | |
" \"uom\":uom\n", | |
" }\n", | |
" ]\n", | |
" return item\n", | |
"def getItemParamByRow(row,vendorCode):\n", | |
" #itemNo,vendorCode,vendorCodeNm,itemSpec,itemName,uom,validFrom\n", | |
" return getItemParam(row['품목코드'],vendorCode,row['업체명'],row['브랜드명'],row['원료명'],row['단위'],row['사용시작일'])" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 39, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"(주)노드메이슨 472\n", | |
"0 \n", | |
" [{'itemTypel': {'code': 'PRODUCT', 'codeNm': '제품'}, 'itemType': 'PRODUCT', 'itemGroupl': {'code': ''}, 'itemGroup': 'PGRPA0001', 'itemStatusl': {'code': 'ACTIVE', 'codeNm': '사용'}, 'itemStatus': 'ACTIVE', 'uoml': {'code': 'C', 'codeNm': 'C', 'optionData': 'C', 'optionData2': 'C'}, 'itemFunctionl': {'code': '', 'codeNm': '선택'}, 'vendorCodeNm': '(주)노드메이슨', 'validFrom': '2018-08-08', '_CUD': 'C', 'itemNo': 'PGRPA0001', 'vendorCode': '472', 'itemSpec': '엔코스7월', 'itemName': '테스트제품1', 'uom': 'KG'}]\n", | |
"(주)고려한백화장품 466\n", | |
"1 \n", | |
" [{'itemTypel': {'code': 'PRODUCT', 'codeNm': '제품'}, 'itemType': 'PRODUCT', 'itemGroupl': {'code': ''}, 'itemGroup': 'PGRPA0002', 'itemStatusl': {'code': 'ACTIVE', 'codeNm': '사용'}, 'itemStatus': 'ACTIVE', 'uoml': {'code': 'C', 'codeNm': 'C', 'optionData': 'C', 'optionData2': 'C'}, 'itemFunctionl': {'code': '', 'codeNm': '선택'}, 'vendorCodeNm': '(주)고려한백화장품', 'validFrom': '2018-08-08', '_CUD': 'C', 'itemNo': 'PGRPA0002', 'vendorCode': '466', 'itemSpec': 'JJJJ', 'itemName': '테스트제품2', 'uom': 'KG'}]\n", | |
"(주)네추럴에프앤피 471\n", | |
"2 \n", | |
" [{'itemTypel': {'code': 'PRODUCT', 'codeNm': '제품'}, 'itemType': 'PRODUCT', 'itemGroupl': {'code': ''}, 'itemGroup': 'PGRPA0003', 'itemStatusl': {'code': 'ACTIVE', 'codeNm': '사용'}, 'itemStatus': 'ACTIVE', 'uoml': {'code': 'C', 'codeNm': 'C', 'optionData': 'C', 'optionData2': 'C'}, 'itemFunctionl': {'code': '', 'codeNm': '선택'}, 'vendorCodeNm': '(주)네추럴에프앤피', 'validFrom': '2018-08-08', '_CUD': 'C', 'itemNo': 'PGRPA0003', 'vendorCode': '471', 'itemSpec': 'QQQQ', 'itemName': '테스트제품3', 'uom': 'KG'}]\n", | |
"(주)고운세상코스메틱 467\n", | |
"3 \n", | |
" [{'itemTypel': {'code': 'PRODUCT', 'codeNm': '제품'}, 'itemType': 'PRODUCT', 'itemGroupl': {'code': ''}, 'itemGroup': 'PGRPA0004', 'itemStatusl': {'code': 'ACTIVE', 'codeNm': '사용'}, 'itemStatus': 'ACTIVE', 'uoml': {'code': 'C', 'codeNm': 'C', 'optionData': 'C', 'optionData2': 'C'}, 'itemFunctionl': {'code': '', 'codeNm': '선택'}, 'vendorCodeNm': '(주)고운세상코스메틱', 'validFrom': '2018-08-08', '_CUD': 'C', 'itemNo': 'PGRPA0004', 'vendorCode': '467', 'itemSpec': 'DDDD', 'itemName': '테스트제품4', 'uom': 'KG'}]\n", | |
"(주)갤러리에이엠 465\n", | |
"4 \n", | |
" [{'itemTypel': {'code': 'PRODUCT', 'codeNm': '제품'}, 'itemType': 'PRODUCT', 'itemGroupl': {'code': ''}, 'itemGroup': 'PGRPA0005', 'itemStatusl': {'code': 'ACTIVE', 'codeNm': '사용'}, 'itemStatus': 'ACTIVE', 'uoml': {'code': 'C', 'codeNm': 'C', 'optionData': 'C', 'optionData2': 'C'}, 'itemFunctionl': {'code': '', 'codeNm': '선택'}, 'vendorCodeNm': '(주)갤러리에이엠', 'validFrom': '2018-08-08', '_CUD': 'C', 'itemNo': 'PGRPA0005', 'vendorCode': '465', 'itemSpec': 'TEST', 'itemName': '테스트제품5', 'uom': 'KG'}]\n", | |
"(주)에이블씨엔씨 516\n", | |
"5 \n", | |
" [{'itemTypel': {'code': 'PRODUCT', 'codeNm': '제품'}, 'itemType': 'PRODUCT', 'itemGroupl': {'code': ''}, 'itemGroup': 'PGRPA0006', 'itemStatusl': {'code': 'ACTIVE', 'codeNm': '사용'}, 'itemStatus': 'ACTIVE', 'uoml': {'code': 'C', 'codeNm': 'C', 'optionData': 'C', 'optionData2': 'C'}, 'itemFunctionl': {'code': '', 'codeNm': '선택'}, 'vendorCodeNm': '(주)에이블씨엔씨', 'validFrom': '2018-08-08', '_CUD': 'C', 'itemNo': 'PGRPA0006', 'vendorCode': '516', 'itemSpec': '미샤', 'itemName': '테스트제품6', 'uom': 'KG'}]\n" | |
] | |
} | |
], | |
"source": [ | |
"sess = requests.Session()\n", | |
"user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'\n", | |
"head = {\n", | |
" 'User-Agent':user_agent\n", | |
"}\n", | |
"## Login\n", | |
"url = 'http://www.pgian.com:9093/j_spring_security_check'\n", | |
"param = {\n", | |
" 'loginType' : 'IDPW',\n", | |
" 'domainId' : '',\n", | |
" 'loginRedirect' : '',\n", | |
" 'loginId' : '***',\n", | |
" 'loginPwd' : '***',\n", | |
"}\n", | |
"req = sess.post(url,param,headers=head)\n", | |
"time.sleep(1) ## 처리중 지연 현상 처리를 위해 1초간 sleep\n", | |
"saveUrl = 'http://www.pgian.com:9093/default/sys/std/item/itemSave.json'\n", | |
"# row = df.iloc[0]\n", | |
"# vendorCd = getVendorCode(sess,row['업체명'])\n", | |
"# print(row['업체명'],vendorCd[0]['vendorCode'])\n", | |
"# item = getItemParamByRow(row,vendorCd[0]['vendorCode'])\n", | |
"# print(item)\n", | |
"# sess.post(saveUrl,json=item,headers=head)\n", | |
"for index, row in df.iterrows():\n", | |
" vendorCd = getVendorCode(sess,row['업체명'])\n", | |
" print(row['업체명'],vendorCd[0]['vendorCode'])\n", | |
" ## item save\n", | |
" item = getItemParamByRow(row,vendorCd[0]['vendorCode'])\n", | |
" print(index,'\\n', item)\n", | |
" sess.post(saveUrl,json=item,headers=head)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3", | |
"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.6.5" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment