PGping 61e952c381e949abb7f34bb4434d0569
파싱 이란 특정 데이터에서 원하는 데이터를 뽑아내는 과정 이라고 생각하시면 됩니다.
정확한 뜻은 다른뜻이지만.. 오토핫키에서는 이정도만 생각하시면 됩니다.
먼저 한국마인크래프트포럼 이니 마인크래프트와 관련해서 파싱을 해보겠습니다.
서버 정보 사이트에서 그 서버의 현재 접속중인 인원을 파싱해오는걸 보여드리겠습니다.
모두들 아시는 마*리스트 에서 제가 플레이하는 서버의 현재 접속중인 인원을 파싱해보겠습니다.
아래는 파싱에 필요한 데이터를 가져오는 구문입니다.
winHttp.Open("GET","https://minelist.kr/servers/서버주소")
winHttp.Send("") ; 전송 메소드
winHttp.WaitForResponse( ) ; 값이 올때까지 대기
Data := winHttp.ResponseText ; 받은 값을 Data변수에 대입
위에 구문에서 서버주소는 마*리스트에 있는 서버주소를 넣을시 그 주소의 html을 불러오게 됩니다.
이게 첫 발판이 되며 오토핫키에 있는 정규식으로 원하는 값을 따로 빼오게 됩니다.
정규식에 대한건 더 정확하게 다른 강좌글로 알려드리겠습니다.
필요한 값은 마*리스트에 있는 아래와 같은 위치를 보여주는 html로부터 가져옵니다.
위에 값을 크롬 F12를 통해 확인할시 아래와 같은 값이 나옵니다.
필요한건 '</font> '와 '명 접속중' 입니다.
아래와 같은 방법으로 할시 접속자만 빼올 수 있습니다.
위에서 Data는 불러온 html 코드이며 즉 사이트의 전체 html코드 입니다.
두번재 파라미터는 파싱할때 사용할 정규식인데 설명 드리자면
Data속 텍스트중 '</font> (.*)명 접속중' 으로 이루어진걸 가져오라는 뜻인데
여기서 (.*)은 </font> 와 명 접속중 사이에 뭐가 있던 가져오라는 뜻입니다.
다른 정규식을 사용할시 숫자만 가져와라 특수문자만 가져와라 등 여러가지가 가능합니다.
세번째 파라미터에 있는 user는 찾은 값을 대입할 변수입니다.
풀 코드를 적어드리겠습니다.
winHttp.Open("GET","https://minelist.kr/servers/서버주소")
winHttp.Send("") ; 전송 메소드
winHttp.WaitForResponse( ) ; 값이 올때까지 대기
Data := winHttp.ResponseText ; 받은 값을 Data변수에 대입
RegExMatch(Data,"</font> (.*)명 접속중", user) ;정규식으로 파싱
Msgbox,%user1%명
; user = </font> '접속자수'명 접속중
; user1 = 접속자수
만약 모르시거나. 다른 값이 나온다면 주저 하지 마시고 질문 남겨주시면 확인후 알려드리겠습니다.
아이스틴
2020.01.12마*리스트보고 궁금했었는데 이런거였군요
DDang_
2020.01.14좋은 글은 추천입니다
겸손한젤리봇
2020.01.14DDang_
2020.01.14안들렸습니다
Violet
2020.03.21RegExMatch(Data," (.*)명 접속중", user) ;정규식으로 파싱
Msgbox,%user1%명 ;왜 여기서 user를 사용하지 않고 user1 을 사용하는 지 궁금합니다. user를 사용하면 (.*)명 접속중 의 내용이 나오지만 user1 은 (.*0) 숫자만 나옵니다. 아무도 질문을 안해서 질문을 합니다. user1이라는 변수가 갑자기 추가되었는데 이렇게 사용을 해도 되나요? 글 올린 시간보다 훨씬 늦었지만 그래도 댓글을 달아봅니다.
PGping
2020.03.22Data에 파싱하기전 즉 순수한 상태의 문자열입니다.
RegExMatch(Data," (.*)명 접속중", user) ; 여기서 Data는 값을빼올 문자열이며 그뒤 " (.*)명 접속중" 이거는 정규식을 사용한 파싱입니다.
그 뒤에 user라는 변수가 파싱후 값을 넣을 변수명인데.
user 에는 " (.*)명 접속중" 이 들어가게 되고
user1 에는 (.*) 에 해당하는 값이 들어가게 됩니다.