안녕하세요.
현재 HTML PARSER 작업을 진행 중인데요.
오늘 하루 소요 하면서 알아낸 정보 입니다.
요약
- 실제 웹에서 쓰이는 HTML TAG는 엄격한 문법이 적용되지 않았다.
- HTML Grammar 분석보다 웹페이지 파싱 후 파서 제작이 더 빠르다.
- Web Browser에서는 모두 태그 보정 로직이 들어가야 한다(추정)
- 보정 태그 처리는 파싱시 처리 하는게 Tokenize 할 때 보다 빠르다.
- Open,Close가 쌍을 이루는 문법은 STACK활용하는걸 고려 해볼 만 합니다.
HTML Grammar 입니다.
http://www.cl.cam.ac.uk/~jac22/books/www/book/node162.html
보시면 아시겠지만, 중,고급이 아닐 경우 배보다 배꼽이 더 커지는 경우가 생깁니다.
http://stackoverflow.com/questions/5175840/is-html-a-context-free-language
스택 오버플러에서도 한마디 했군요.
쌍이 안맞는 태그를 예시로 보겠습니다.
view-source:http://www.ppomppu.co.kr/zboard/zboard.php?id=ppomppu2
아래 항목은 끝부분에 close 를 알려주는 태그 입니다.
하지만 아래 항목은 다릅니다. Close 표시가 없습니다.
위의 경우 open은 있고, close가 없기에 child TAG추가 유무를 알 수 없습니다.
선택은 보정 로직 또는 해당 태그를 핸들링 코드 처리 입니다.
저는 보정 로직 적용 하는걸로 가닥을 잡았습니다.
보정 로직이 적용된 로그 입니다.
보시면 Form 시작의 depth가 8 입니다.
해당 태그의 MAX depth 의 경우 29까지 가네요.
다시 depth 8까지 보정 로직이 적용 된 후의 모습입니다.
추후 복잡한 쇼핑몰, 신문사 웹사이트 파싱 처리 하면서 개선을 해나가면 될 듯 합니다.
감사 합니다.
'습작 및 R&D' 카테고리의 다른 글
SQL PARSING – 2 (MYSQL Table Parsing) (0) | 2014.08.02 |
---|---|
SQL Parsing – 1(Oracle Table) (0) | 2014.08.01 |
HTML PARSER – 2 (0) | 2014.07.23 |
HTML Parser - 1 (0) | 2014.07.23 |
부동산 실거래가 – 5 ( 네이버 연동 ) (1) | 2014.07.14 |