Ai-macro

게시글 검색
html 소스 가공하는 방법
조회수: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]

열기 닫기