- 조회수:2721
- 2018-05-27 01:00:00
Ai-macro에서 가장 중요한 html 소스 가공에 대해 알아볼게요!
html 소스 가공만 잘해도 매크로 짜는데 아주 쉬워진다는점. 잊지마세요!
라인 7 - 필수사항! 소스 추출은 해당 홈페이지에 포커싱이 있어야 되기때문에 아무 의미없는 곳을 클릭하여 포커스를 홈페이지내로 넣습니다.
(포커스가 없는 상태에서 라인 8 을 실행하면 복사가 안됩니다.)
먼저 [명령어 get_html]를 이용해 홈페이지의 소스를 추출하여 $all_source에 저장합니다.
아래와 같이 1줄로 추출되었다고 가정합니다.
([명령어 get_html] 은 style, data등 각 태그에 적용되어 있는 모든 정보를 포함하며 1줄로 나옵니다.)
<div class="example1-set2-cont-list" style="font-weight:bold;color:#000000;font-family:'Dotum';"><p>텍스트 추출을 위한 태그들</p></div>
정리를 하면 아래와 같습니다.
[참고 소스1]
<div class="example1-set2-cont-list" style="font-weight:bold;color:#000000;font-family:'Dotum';">
<p style="font-weight:bold;color:#000000;font-family:'Dotum';">텍스트 추출을 위한 태그들</p>
</div>
1) 태그안의 텍스트 추출하기
[참고 소스1]을 기준으로 가공을 시작해 볼까요? 먼저 <p>태그안의 문자열을 추출 하겠습니다.
위와 같이 [명령어 filter] 를 작성을 하고 아래의 파란색 글자 안에 있는 문자열을 추출하겠습니다.
(시작 문자열이 "<p", 끝 문자열이 "p>" 의 사이에 있는 소스를 $p_tag 에 배열로 저장하겠다는 내용입니다.)
<div class="example1-set2-cont-list" style="font-weight:bold;color:#000000;font-family:'Dotum';">
<p style="font-weight:bold;color:#000000;font-family:'Dotum';">텍스트 추출을 위한 태그들</p>
</div>
즉, $p_tag 를 log 로 출력할 경우 아래와 같이 나옵니다.
$p_tag[0] = style="font-weight:bold;color:#000000;font-family:'Dotum';">텍스트 추출을 위한 태그들</
아직 소스가 남아있죠? 왜 style="font...."> 와 마지막에 </ 를 남겼느냐!
p태그 텍스트만 정확하게 추출하기 위해서 입니다.
([명령어 filter] 의 경우 시작 문자열과 끝 문자열이 같은 패턴을 모두 추출합니다.)
- 같은 패턴이 추출되는 예제는 2.에서 설명드리겠습니다. 중요한 부분이니 놓치지 마세요!
$p_tag[0] 을 [명령어 filter] 로 아래와 같이 한번 더 가공을 합니다.
위와 같이 작성을 하고 아래의 파란색 글자 안에 있는 문자열을 추출하겠습니다.
(시작 문자열이 ">", 끝 문자열이 "</" 의 사이에 있는 소스를 $p_tag_text 에 배열로 저장하겠다는 내용입니다.)
style="font-weight:bold;color:#000000;font-family:'Dotum';">텍스트 추출을 위한 태그들</
[명령어 filter] 로 추출 후 $p_tag_text 를 log 에 출력하면
$p_tag_text[0] = 텍스트 추출을 위한 태그들
짜잔! $p_tag_text[0] 에는 "텍스트 추출을 위한 태그들" 텍스트를 가지게 됩니다.
2) 시작 문자열과 끝 문자열이 똑같은 리스트, 텍스트 모두 추출하기
이번엔 리스트인 <li>태그의 문자열을 모두 추출 하겠습니다. 아래의 소스를 기준으로 가공을 시작해 볼까요?
[참고 소스2]
<ul class="example1-set2-cont-list" style="font-weight:bold;color:#000000;font-family:'Dotum';">
<li style="font-weight:bold;color:#000000;font-family:'Dotum';">가방</li>
<li style="font-weight:bold;color:#000000;font-family:'Dotum';">축구공</li>
<li style="font-weight:bold;color:#000000;font-family:'Dotum';">의류</li>
</ul>
[참고 소스2]를 기준으로 [명령어 filter] 를 아래와 같이 사용합니다.
위와 같이 [명령어 filter] 를 작성을 하고 아래의 파란색 글자 안에 있는 문자열을 추출합니다.
(시작 문자열이 "<li", 끝 문자열이 "i>" 의 사이에 있는 소스를 $li_tag 에 배열로 저장하겠다는 내용입니다.)
<ul class="example1-set2-cont-list" style="font-weight:bold;color:#000000;font-family:'Dotum';">
<li style="font-weight:bold;color:#000000;font-family:'Dotum';">가방</li>
<li style="font-weight:bold;color:#ffffff;font-family:'Dotum';">축구공</li>
<li style="font-weight:bold;color:#111111;font-family:'Dotum';">의류</li>
</ul>
위와 같이 같은 패턴이 있을땐 해당 패턴 모두를 결과 배열 $li_tag 에 저장합니다.
log 에 $li_tag 를 출력하면 아래와 같이 출력됩니다.
[참고 소스3]
$li_tag[0] = style="font-weight:bold;color:#000000;font-family:'Dotum';">가방</l
$li_tag[1] = style="font-weight:bold;color:#ffffff;font-family:'Dotum';">축구공</l
$li_tag[2] = style="font-weight:bold;color:#111111;font-family:'Dotum';">의류</l
위와 같이 배열이 생성이 되며 $li_tag 에는 3개의 요소가 생성됩니다.
그리고 [명령어 filter] 에서 시작 문자열이 "<li" 인 이유는 위의 소스를 보시는바와 같이
style의 내용은 순서별, 내용별 다 다를수가 있기 때문에 "<li" 먼저 잘라 배열을 합니다.
리스트 배열이 생성이 되었으니 마저 텍스트를 추출해 볼까요?
배열이 생성되었을때는 $li_tag[0], $li_tag[1] 식으로 사용이 가능하지만!
리스트가 10개일수도 있고 100개일수도 있기때문에 아래의 예제에서는 [명령어 while] 을 사용하겠습니다.
위와 같이 [명령어 while] 을 작성합니다.
반복문 while문은 해당 배열 요소의 갯수만큼 회전하며 1개씩 값을 출력해준다고 생각하시면 됩니다.
첫번째 바퀴에서는 [참고 소스3]의 $li_tag[0] 를 $li_val 에 출력해주고,
두번째 바퀴에서는 [참고 소스3]의 $li_tag[1] 을 $li_val 에 출력해줍니다.
[참고 소스3]에서 요소 3개가 생성되었으니 3번 회전하겠죠?
텍스트를 추출하기 위해 아래와 같이 매크로를 작성하였습니다.
라인 3 - [명령어 filter] 를 아래와같이 작성합니다.
첫번째 바퀴
style="font-weight:bold;color:#000000;font-family:'Dotum';">가방</l
두번째 바퀴
style="font-weight:bold;color:#ffffff;font-family:'Dotum';">축구공</l
세번째 바퀴
style="font-weight:bold;color:#111111;font-family:'Dotum';">의류</l
라인 4 - 한바퀴를 회전할때마다 log 에서 "가방", "축구공", "의류" 를 순차적으로 출력합니다.
이렇게 리스트의 텍스트를 출력해봤습니다!
Tip.1 log 를 사용하여 값을 확인하면서 작업을 하시면 좀더 정확하고 편리하게 작업이 가능합니다.
Tip.2 chrome, ie로 해당페이지를 접속하여 F12를 눌리면 홈페이지의 소스를 확인할 수 있습니다.
첨부된 소스에서는 상단의 제목 "USER GUIDE" 를 추출하고
그후 하단에 [절차안내] 리스트를 추출합니다.
첨부파일[1]
열기 닫기