Skip to content

Instantly share code, notes, and snippets.

@mrbkdad
Created August 17, 2018 00:23
Show Gist options
  • Save mrbkdad/3c9086e0b89a2276777511cec6326d9a to your computer and use it in GitHub Desktop.
Save mrbkdad/3c9086e0b89a2276777511cec6326d9a to your computer and use it in GitHub Desktop.
판다스 이용 Ancos 품목 마스터 저장
Display the source blob
Display the rendered blob
Raw
{
"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