거래소 긁어오기를로아 API를 사용해서 수정했습니다.자세한 코드는 정리되는대로 다시 작성하겠습니다.
스프레드시트 주소는 아래 확인하세요~
https://giveme100.tistory.com/130
안녕하세요.
로스트아크를 즐기고 있는 카제로스서버 원래다른게임을하려고했다 입니다.
오늘은, 이전 1탄에서 언급했던 거래소 금액을 긁어오는 방법을 공유하고자 합니다.
이전 1탄(https://giveme100.tistory.com/2)에서는 단일 품목의 금액을 긁어오는 코드를 만들어 보았습니다.
하지만 1탄의 코드를 보면 2가지 단점이 바로 보이는데요,
첫 번째.
하나하나 함수마다 한번씩 서버에 접근하여 데이터를 긁어오게 되므로, 다량의 물품을 등록할 경우 상당한 렉을 유발하게 됩니다.
두 번째.
물품 가격을 갱신하기가 상당히 번거롭습니다.
엑셀 내 함수로 표현되다 보니, 시트가 새로 열릴때 갱신되며 수동적으로 갱신하기 위해서는 해당함수를 지웠다가 다시 입력해줘야 합니다.
(DELETE 후 CTRL+Z 도 있습니다만..)
그래서 이번에 소개드릴 코드를 작성하게 되었는데요.
필요한 품목을 통째로 긁어오는 함수입니다!!!
속도가 상당히 빨라졌고... 갱신 버튼을 통해 수동 갱신이 가능합니다!!
다만 출력이 되는 위치(ROW/COLUMN) 지정 등이 들어가게 되면 스크립트 만들기가 귀찮아지므로... 하드코딩으로 위치를 지정했습니다.
(우선 저만 쓰기용으로 만들었기때문에.....)
우선 화면은 아래와 같이 표시됩니다.
각 '갱신'버튼을 누르면 아래 목록이 갱신되는 방식입니다.
로스트아크 공식 홈페이지 '거래소'에서 데이터를 크롤링하는 방식입니다.
위 스크립트로 금액을 추출한 후 활용하면 되겠죠...
예를들면,
회복약, 중급 오레하 융화 재료 같은 물건을 만들면 얼마가 들지 계산하는 서식을 만들수도 있을겁니다.
중급 오레하는 1편에서 소개드린 함수 'get_market_chip()'을 활용하면 되겠죠??
아래는 해당 스프레드시트에 대한 공유URL 입니다.
https://docs.google.com/spreadsheets/d/15m2rw0unU-nxQBz7xQ-BzjLk-YyVZdZ8L9ofy-lCSMw/edit?usp=sharing
위 스프레드시트는 간단하게 활용하실 수 있도록
제가 1탄, 2탄에서 만들었던 코드를 라이브러리 형태로 넣어놓았습니다.
훨씬 쉽고 편하게 활용하실 수 있겠죠...
본인이 사용하고 있던 스프레드시트가 있다면 라이브러리만 당겨다가 쓰시면 될겁니다.
위 제작에 들어간 코드는 아래를 참고하세요.
function data_market_living(start){
var print_column = 1;
var last_row = 3;
var start=1;
var pagecnt = 3;
var url = "";
var url1 = "https://lostark.game.onstove.com/Market/List_v2?firstCategory=90000&secondCategory=0&characterClass=&tier=0&grade=99&itemName=&pageNo=";
var url2 = "&isInit=false&sortType=1";
var txt1 = "#tbodyItemList > tr:nth-child(";
var txt2 = ") > td:nth-child(";
var txt3_name = ") > div > span.name";
var txt3_grade = ") > div";
var txt3_etc = ") > div > em";
var sheet = SpreadsheetApp.getActive().getActiveSheet();
url = url1 + j + url2;
var option = {'method': 'GET', 'muteHttpExceptions': true};
var response = UrlFetchApp.fetch(url, option);
var html = response.getContentText('UTF-8');
var load_data = Cheerio.load(html);
for(var j=1; j<=pagecnt; j++){
url = url1 + j + url2;
response = UrlFetchApp.fetch(url, option);
html = response.getContentText('UTF-8');
load_data = Cheerio.load(html);
for(var i=1; i<=10; i++){
sheet.getRange(last_row,start).setValue(load_data(txt1 + i + txt2 + "1" + txt3_name).text());
sheet.getRange(last_row,start+1).setValue(load_data(txt1 + i + txt2 + "1" + txt3_grade).attr("data-grade"));
sheet.getRange(last_row,start+2).setValue(load_data(txt1 + i + txt2 + "2" + txt3_etc).text());
sheet.getRange(last_row,start+3).setValue(load_data(txt1 + i + txt2 + "3" + txt3_etc).text());
sheet.getRange(last_row,start+4).setValue(load_data(txt1 + i + txt2 + "4" + txt3_etc).text());
last_row++;
}
}
}
function data_market_smelt(start){
var print_column = 1;
var last_row = 3;
var start=7;
var pagecnt = 5;
var url = "";
var url1 = "https://lostark.game.onstove.com/Market/List_v2?firstCategory=50000&secondCategory=0&characterClass=&tier=0&grade=99&itemName=&pageNo=";
var url2 = "&isInit=false&sortType=1";
var txt1 = "#tbodyItemList > tr:nth-child(";
var txt2 = ") > td:nth-child(";
var txt3_name = ") > div > span.name";
var txt3_grade = ") > div";
var txt3_etc = ") > div > em";
var sheet = SpreadsheetApp.getActive().getActiveSheet();
url = url1 + j + url2;
var option = {'method': 'GET', 'muteHttpExceptions': true};
var response = UrlFetchApp.fetch(url, option);
var html = response.getContentText('UTF-8');
var load_data = Cheerio.load(html);
for(var j=1; j<=pagecnt; j++){
if(j>=2){
url = url1 + j + url2;
response = UrlFetchApp.fetch(url, option);
html = response.getContentText('UTF-8');
load_data = Cheerio.load(html);
}
for(var i=1; i<=10; i++){
sheet.getRange(last_row,start).setValue(load_data(txt1 + i + txt2 + "1" + txt3_name).text());
sheet.getRange(last_row,start+1).setValue(load_data(txt1 + i + txt2 + "1" + txt3_grade).attr("data-grade"));
sheet.getRange(last_row,start+2).setValue(load_data(txt1 + i + txt2 + "2" + txt3_etc).text());
sheet.getRange(last_row,start+3).setValue(load_data(txt1 + i + txt2 + "3" + txt3_etc).text());
sheet.getRange(last_row,start+4).setValue(load_data(txt1 + i + txt2 + "4" + txt3_etc).text());
last_row++;
}
}
}
그럼, 즐로아 하시기 바랍니다.
'로스트아크 > 로스트아크 편하게하기' 카테고리의 다른 글
구글 스프레드시트에서 로아 편하게 하기 6탄: 카오스, 가디언.. 휴경은 어떻게 처리할까? (0) | 2021.10.01 |
---|---|
구글 스프레드시트에서 로아 편하게 하기 5탄: 카오스, 가디언 어디 돌지 표시하기 (0) | 2021.09.30 |
구글 스프레드시트에서 로아 편하게 하기 4탄: 공대 관리하기 (9) | 2021.07.29 |
구글 스프레드시트에서 로아 편하게 하기 3탄: 수집품 현황 가져오기 (3) | 2021.07.27 |
구글 스프레드시트에서 로아 편하게 하기 1탄: 거래소 가격 검색하기 (3) | 2021.07.23 |