Showing
2 changed files
with
56 additions
and
22 deletions
1 | var readline=require('readline');//입력받기 위한 모듈 | 1 | var readline=require('readline');//입력받기 위한 모듈 |
2 | var r=readline.createInterface({input:process.stdin,output:process.stdout});//키보드 입출력 정의 | 2 | var r=readline.createInterface({input:process.stdin,output:process.stdout});//키보드 입출력 정의 |
3 | -var rtfw="http://www.rankedftw.com/search/?name=";//rtfw에서 기본 검색 url | 3 | +var rtfw1="http://www.rankedftw.com/search/?name=";//rtfw에서 기본 검색 url |
4 | +var rtfw2="http://www.rankedftw.com/player/" | ||
4 | var league='silver_2'; | 5 | var league='silver_2'; |
5 | var region='KR'; | 6 | var region='KR'; |
6 | // | 7 | // |
... | @@ -14,8 +15,8 @@ var fs=require('fs');//파일시스템 사용 | ... | @@ -14,8 +15,8 @@ var fs=require('fs');//파일시스템 사용 |
14 | // | 15 | // |
15 | r.question("분석을 원하는 아이디를 입력하세요 : ",function(answer){//question메소드에서 callback함수 생성 | 16 | r.question("분석을 원하는 아이디를 입력하세요 : ",function(answer){//question메소드에서 callback함수 생성 |
16 | console.log("입력완료! 분석중...");//callback함수란 이벤트가 왔을 때 실행되는 함수이다. answer에 검색을 원하는 아이디가 담겨있다. | 17 | console.log("입력완료! 분석중...");//callback함수란 이벤트가 왔을 때 실행되는 함수이다. answer에 검색을 원하는 아이디가 담겨있다. |
17 | - rtfw=rtfw+answer;//검색 url 구성 | 18 | + rtfw1=rtfw1+answer;//검색 url 구성 |
18 | - console.log(rtfw);//검색 url 확인 | 19 | + console.log(rtfw1);//테스트용 : 검색 url 확인 |
19 | // | 20 | // |
20 | //client.fetch(rtfw,param,function(err,$,res){ | 21 | //client.fetch(rtfw,param,function(err,$,res){ |
21 | //if(err){console.log(err);return;} | 22 | //if(err){console.log(err);return;} |
... | @@ -28,14 +29,18 @@ r.question("분석을 원하는 아이디를 입력하세요 : ",function(answer | ... | @@ -28,14 +29,18 @@ r.question("분석을 원하는 아이디를 입력하세요 : ",function(answer |
28 | // | 29 | // |
29 | // var parsing_html=fs.readFile(rtfw,'utf8',(err,data)=>{//html reading fs 사용 | 30 | // var parsing_html=fs.readFile(rtfw,'utf8',(err,data)=>{//html reading fs 사용 |
30 | //err? console.log(err) : console.log('okay cheerio!');//에러나면 에러출력, 이외엔 okay 메시지 | 31 | //err? console.log(err) : console.log('okay cheerio!');//에러나면 에러출력, 이외엔 okay 메시지 |
31 | -request(rtfw,(error,response,body)=>{//rtfw url 불러오기 | 32 | +var username='';//username문자열 선언 |
33 | +var userleague='';//userleague 문자열 선언 | ||
34 | +var userregion='';//userregion 문자열 선언 | ||
35 | +var usernumber='';//usernumber 문자열 선언 | ||
36 | +request(rtfw1,(error,response,body)=>{//rtfw url 불러오기 | ||
32 | if(error){throw error};//에러처리 | 37 | if(error){throw error};//에러처리 |
33 | let $ = cheerio.load(body);//rtfw가 body이다. $로 jquery방식으로 html탐색 | 38 | let $ = cheerio.load(body);//rtfw가 body이다. $로 jquery방식으로 html탐색 |
34 | - try{//try_catch구문 | 39 | +// try{//try_catch구문 |
35 | - let username='';//username문자열 선언 | 40 | + //let username='';//username문자열 선언 |
36 | - let userleague='';//userleague 문자열 선언 | 41 | + //let userleague='';//userleague 문자열 선언 |
37 | - let userregion='';//userregion 문자열 선언 | 42 | + //let userregion='';//userregion 문자열 선언 |
38 | - let usernumber='';//usernumber 문자열 선언 | 43 | + //let usernumber='';//usernumber 문자열 선언 |
39 | $('ul').find('a').each(function(index,elem){//ul 태그 아래 a태그를 찾는다. | 44 | $('ul').find('a').each(function(index,elem){//ul 태그 아래 a태그를 찾는다. |
40 | username=$(this).find('.name').text().trim();//name클래스를 찾아 공백빼고 텍스트화 | 45 | username=$(this).find('.name').text().trim();//name클래스를 찾아 공백빼고 텍스트화 |
41 | userleague=$(this).find('.league').text().trim();//league클래스를 찾아 공백빼고 텍스트화 | 46 | userleague=$(this).find('.league').text().trim();//league클래스를 찾아 공백빼고 텍스트화 |
... | @@ -43,21 +48,50 @@ request(rtfw,(error,response,body)=>{//rtfw url 불러오기 | ... | @@ -43,21 +48,50 @@ request(rtfw,(error,response,body)=>{//rtfw url 불러오기 |
43 | if((username===answer)&&(userregion===region)){//아직 리그 구현 안함-리그는 그림으로 비교 | 48 | if((username===answer)&&(userregion===region)){//아직 리그 구현 안함-리그는 그림으로 비교 |
44 | console.log(`${username}`);//테스트용 : 유저네임 출력 | 49 | console.log(`${username}`);//테스트용 : 유저네임 출력 |
45 | console.log(`${userregion}`);//테스트용 : 유저리전 출력 | 50 | console.log(`${userregion}`);//테스트용 : 유저리전 출력 |
46 | - var localnumber=$(this).toString().slice(29,43);//rtfw에서 사용하는 사용자번호를 문자열로 넉넉히 자름 | 51 | + var usernumber=$(this).toString().slice(29,43);//rtfw에서 사용하는 사용자번호를 문자열로 넉넉히 자름 |
47 | - var localindex1=localnumber.search('/');//첫번째 슬레시 발견하는 인덱스 검출 | 52 | + var localindex1=usernumber.search('/');//첫번째 슬레시 발견하는 인덱스 검출 |
48 | - localnumber=localnumber.slice(localindex1+1);//앞부분 슬래시 자른다. | 53 | + usernumber=usernumber.slice(localindex1+1);//앞부분 슬래시 자른다. |
49 | - var localindex2=localnumber.search('/')-localindex1+1;//두번째 슬레시 발견하는 인덱스 검출 | 54 | + var localindex2=usernumber.search('/')-localindex1+1;//두번째 슬레시 발견하는 인덱스 검출 |
50 | - localnumber=localnumber.slice(0,localindex2);//뒷부분 슬래시 자른다. | 55 | + usernumber=usernumber.slice(0,localindex2);//뒷부분 슬래시 자른다. |
51 | - console.log(`${localnumber}`);//테스트용 : 로컬넘버 출력 | 56 | + console.log(`${usernumber}`);//테스트용 : 유저넘버 출력 |
52 | - | 57 | + if(rtfw2.length>33){//하나라도 붙어있으면 |
58 | + rtfw2=rtfw2;//아무것도 안한다. | ||
59 | + }else{//그렇지않고 아무것도 안붙어있으면 | ||
60 | + rtfw2=rtfw2+usernumber+'/';//rtfw2 url갱신 | ||
53 | } | 61 | } |
62 | + console.log(rtfw2);//테스트용 : rtfw2 출력 | ||
63 | + }//이름서버리그비교if종료 | ||
64 | + });//ul a find문 종료 | ||
54 | 65 | ||
66 | + var profileID=''; | ||
67 | + request(rtfw2,(error,response,body)=>{//rtfw2 url 불러오기 | ||
68 | + if(error){throw error};//에러처리 | ||
69 | + console.log('request2 processing');//테스트용 : request2 실행여부 출력 | ||
70 | + let $ = cheerio.load(body);//rtfw2가 body이다. $로 jquery방식으로 html탐색 | ||
71 | + $('.content').find('.bnet-link').each(function(index,elem){//content 클래스 안의 bnet-link클래스를 포함하는 요소를 찾는다. | ||
72 | + profileID=$(this).toString().slice(62,72);//얻고자 하는 profileID를 포함하여 앞뒤로 적당히 자른다. | ||
73 | + var localindex3=profileID.search('/');//첫번째 슬레시 발견하는 인덱스 검출 | ||
74 | + profileID=profileID.slice(localindex3+1);//앞부분 슬래시 자른다. | ||
75 | + var localindex4=profileID.search('/')-localindex3;//두번째 슬레시 발견하는 인덱스 검출 | ||
76 | + profileID=profileID.slice(0,localindex4);//뒷부분 슬래시 자른다. | ||
77 | + console.log(`${profileID}`);//테스트용 : profileID 출력 | ||
78 | + });//a bnetlink 종료 | ||
79 | +console.log(`${profileID}`);//테스트용 : profileID 출력 | ||
55 | 80 | ||
56 | - }); | 81 | +var match_history_1="https://kr.api.blizzard.com/sc2/legacy/profile/3/1/" |
57 | - }catch(error){ | 82 | +var match_history_2="/matches?access_token=US0q3wV6W1fIYZmRnEBbNvUrRHYZhwANIi" |
58 | - console.error(error); | 83 | +var match_history_url=match_history_1+profileID+match_history_2; |
59 | - } | 84 | +console.log(match_history_url); |
60 | -}); | 85 | +request(match_history_url,(error,response,body)=>{ |
86 | + if(error){throw error}; | ||
87 | + console.log('request3 processing'); | ||
88 | + //console.log(body); //테스트용: response body 출력 | ||
89 | +});//request3종료 | ||
90 | +});//request2종료 | ||
91 | +// }catch(error){ | ||
92 | +// console.error(error); | ||
93 | +// }//try_catch구문 종료 | ||
94 | +});//request1 종료 | ||
61 | 95 | ||
62 | // });//parsing_html 끝 | 96 | // });//parsing_html 끝 |
63 | // | 97 | // | ... | ... |
... | @@ -5,5 +5,5 @@ | ... | @@ -5,5 +5,5 @@ |
5 | 5. a.player에서 profileID를 추출한다. ->플레이어 페이지나 프로필 페이지 등등 활용 가능 | 5 | 5. a.player에서 profileID를 추출한다. ->플레이어 페이지나 프로필 페이지 등등 활용 가능 |
6 | 6. profileID로 API에서 필요정보 요청 | 6 | 6. profileID로 API에서 필요정보 요청 |
7 | 7 | ||
8 | -주의사항 : 한명을 특정해야함. 특정번호는 꼭 7자리가 아닐수 있다. | 8 | +주의사항 : 한명을 특정해야함. 특정번호는 꼭 7자리가 아닐수 있다. 맨 처음 뜬 사람 기준 |
9 | 없애야 할 철자 : y e r / " 5가지 | 9 | 없애야 할 철자 : y e r / " 5가지 | ... | ... |
-
Please register or login to post a comment