횽들아.. html 파싱하는 법좀 갈켜죠...
좀 효율적으로 하는 방법 없을까.. 요즘은 컴속도가 빨라서 별 문제 없으리라 믿지만
배열에 쳐넣고 순차검색하려니까 간지가 안나네..
댓글 21
파싱을 할려면 일단 렉싱이 필요한데.. HTML 처리에서 가장 난제는 문법성 검토를 무시해야 하는 script 내부문과 주석처리라 할 수 있어.. 그래서 물리적 속도를 위한 IO버퍼와 논리 처리를 위한 버퍼.. 효율을 높일려면 더블버퍼처리 해줘야 되고 html은 변칙 계층구조라 일반적으로 파싱했을때 xml처럼 완전한 트리구조가 나오지 않지.. 다시말해 스택이나 재귀에 의한 파싱은 어려움.. 그래 꽁수를 써서 변칙 파싱이 필요한데.. 링크드 리스트를 이용한 토큰버퍼를 이용한 방식이 있어.. 형이 이거 한다고 작년 겨울에 2달을 고생했지..
담배(210.124)2005-06-24 12:13
MSHTML 보면 다나온다? IHTMLDocument2 인터페이스 쓰던가? Programing IE 5.0 이거 보면 될거 같은데...
몽...(203.246)2005-06-24 12:13
요 형들 내공좀 있구나
냠(221.154)2005-06-24 12:21
니가 웹브라우저를 만들지 않는 이상 분명히 html의 일부분을 뽑아 쓰려고 그러는거 같은데 그런데 html parser고 나발이고 모기잡는데 도끼쓰는격이다. 그런건 간지 안나더라도 순차검색 하던지 정규식 함수 grouping써서 필요한부분 뽑아내는게 낫다. 후후
낙타구(163.28)2005-06-24 12:24
맞아.. html 파서 제작은 노가중에 상 노가다성.. 주로 용도는 토큰필터링.. 원하는 부분만 뽑아쓰는방법이 정신건강에 좋다.. String에 indexOf <- 이게 젤 속편하다..
담배(210.124)2005-06-24 12:28
Parser라... Html의 특정부분만을 뽑아 사용하기 위한 그냥 Parser라면 위의 햏자들 말처럼 링크드 리스트나 IndexOf 같은 함수로 토큰처리로 뽑아내는게 제일 편하고 고생안하는 방법이나 만일 HTML 또는 XML 전체 구문들을 모두 사용하고 모든 Node들을 뽑아내기 위한 정상 Parser라면 Tree 구조를 사용하는게 제일 좋을 것이요. 물론 HTML이 워낙 변칙이라 XML처럼 정상적인 Tree 구조를 기대하는 것도 무리자만 정말 좋은 Parser는 이런 불규칙한 Node들까지도 범용적으로 처리해서 특정 부분이 이상해도 왼만하면 정상적으로 처리할려는 예외 처리를 Utility로 갖고 있도록 만들어야 하오. 순차처리로 했을 때 속도면에서 만족스럽지 못하나 안정성이나 확실한 Child Node
골빈당(211.59)2005-06-24 12:44
Scan를 위해선 역시 순차처리만큼 확신한 방법이 없소. 일단 안정빵으로 순차처리로 모든 Node를 정확하고 확실하게 읽도록 만들고 나서 파서가 정상작동하는 것을 확인하고, 그리고 나서 튜닝에 들어갈 무렵 속도 개선을 해보길. 파서의 가장 큰 이슈는 사용하든 안하든 일단 모든 Child Node들을 꼬이지 않게 논리적 Tree로 재구성하냐 못하냐의 문제요. 논리적 Tree로 재구성하지 못한 부실한 Tree를 만들어봐야 어차피 그 Tree Node로 만들어지는 2차 생성물또한 부실하며 정확할 수 없다오.
골빈당(211.59)2005-06-24 12:49
이렇게 Tree가 완성되면, 특정 부모 Node들, 즉 자주 사용되거나 프로그램에서 중요하게 쓰여질 특정 Node들은 특정 리스트에 사이드로 등록해놓으시요.일정 키워드 식으로 자주 사용될 것 같은 Node의 index같은 것을 따로 등록해놓으면 빨리 특정 노느를 찾을수 있소.이렇게 하면 특정 노드를 찾기 위해 처음부터 스캔하지 않고, 필요한 노드의 인덱스를 알기에 그 부분부터 바로 스캔할 수 있어 속도를 향상시킬수 있을것이요. 일종의 비자금 장부라고 해야되나. 그리고 좀더 유연한 Tree는 어느 node를 찍더라도 자신을 기준으로 상하 노드(부모,자식), 좌우 노드(형제노드)를 모두 바로 접근할수 있도록 만들어주는게 나중을 위해서 좋을 것이요. 파싱 결과물로 2차 생성물을 만들어보면 뭔말인지 알것이요.
골빈당(211.59)2005-06-24 12:57
그리고 뭘 물어볼려면 최소한 반말은 하지 말길. 여기 프갤에 경력 10년차 이상의 고수분들도 있는 것 같던데, 그 분들이 재수없어 프갤 안오면 나중에 정말 노하우가 묻어있는 좋은 답변도 못듣고, 엉뚱한 리플이나 달릴 수 있을지도. 그런걸 바라지는 않을 것이라 생각되오
골빈당(211.59)2005-06-24 13:01
윈도즈 플랫폼이면 몽횽아 말대로 MSHTML 써라.. 그게 젤 편하고 좋다..
맛있는파전(59.11)2005-06-24 13:25
골빈당 // 디씨 스럽지가 않잖아요 -_)
satan-_-(221.149)2005-06-24 13:41
디시스럽지가 않다는 말은 무슨 뜻이요. 어떻게 해야 디시스러운지-.-; 원래 내 전문갤은 영화갤인데, 프갤에서 열심히 기웃거리고 있는 중이오만..
골빈당(211.59)2005-06-24 13:50
ㅎㅎ 진짜 물어본건 아닌데 ㅎㅎ 디씨에서 설명 듣느니 데브피아나 코드구루 가서 뒤지는게 훨씬 생산적이야 ㅎㅎ
냠(221.154)2005-06-24 14:08
DOM(IE에 있는 Document Object Model) 이라고 찾아바바요. 이거 Parser 맞송.
널널이(218.152)2005-06-24 14:08
감사. 근데 어차피 전문적인게 아니고 정보나 뽑아 쓰려는 (사실 사이트 뒤지기 귀찮으니까 자동화) 목적으로 한건데 필요한건 한두줄의 정보(주가,환율..) 인데 50000줄짜리 HTML 코드를 모조리 배열에 넣고 하려니까 좀 글찮아.. 그래서 전문가 횽들이 이미 쓰고 있는 새로운 방법이 있나 해서 물어보긴 한건데 별로 바라지는 않아 ㅎㅎ
냠(221.154)2005-06-24 14:16
헐.. 지금 만들고 있는 플그램이 그런건데.. -_-;; 웹페이지 실시간 감시 및 정보추출.. 전문용어로 '웹에이전트'라 함.. 이쪽으론 국내에는 한양대 최중민 교수님이 권위자.. 근데 별거아니겠구나 하고 시작했는데 지대로 만들려니까 파고들면 들수록 어려움.. 컴파일러, 분산처리, 네트워크, 인공지능(AI서버), 지식공학 등 많은 개념들이.. -_-;; 덜덜덜..
담배(218.154)2005-06-24 14:26
담배햏자의 마음을 나도 상당히 이해한다오. 대략 담배햏이 고생했던 부분도 내가 고생했던 부분이란 같은 거라는 느낌이 팍 드오.암튼 이쪽 계열 플그램은 보통 인내력과 집중력아니면 하기 힘듬. 배경지식도 상당히 많이 필요하고. 구현시 꼭 봐야하는 RF문서나 포럼 문서만 바이블 책 두께로 2~3권 불량은 넘을 듯
골빈당(211.59)2005-06-24 14:31
특정한 정보만 가져오는 거라면 그냥 정규표현식으로 해도 될것 같으오.
마하하(220.118)2005-06-24 16:37
perl 뒀다 뭐해 perl.
펄(211.192)2005-06-24 17:38
난 경제과거든? ㅎㅎ 그래서 금융정보를 수집해서 실시간 예측을 한다거나 아님 하다못해 주식 매수 매각 시점 이라도 찾는데 이용하려고 공부중이얌..
파싱을 할려면 일단 렉싱이 필요한데.. HTML 처리에서 가장 난제는 문법성 검토를 무시해야 하는 script 내부문과 주석처리라 할 수 있어.. 그래서 물리적 속도를 위한 IO버퍼와 논리 처리를 위한 버퍼.. 효율을 높일려면 더블버퍼처리 해줘야 되고 html은 변칙 계층구조라 일반적으로 파싱했을때 xml처럼 완전한 트리구조가 나오지 않지.. 다시말해 스택이나 재귀에 의한 파싱은 어려움.. 그래 꽁수를 써서 변칙 파싱이 필요한데.. 링크드 리스트를 이용한 토큰버퍼를 이용한 방식이 있어.. 형이 이거 한다고 작년 겨울에 2달을 고생했지..
MSHTML 보면 다나온다? IHTMLDocument2 인터페이스 쓰던가? Programing IE 5.0 이거 보면 될거 같은데...
요 형들 내공좀 있구나
니가 웹브라우저를 만들지 않는 이상 분명히 html의 일부분을 뽑아 쓰려고 그러는거 같은데 그런데 html parser고 나발이고 모기잡는데 도끼쓰는격이다. 그런건 간지 안나더라도 순차검색 하던지 정규식 함수 grouping써서 필요한부분 뽑아내는게 낫다. 후후
맞아.. html 파서 제작은 노가중에 상 노가다성.. 주로 용도는 토큰필터링.. 원하는 부분만 뽑아쓰는방법이 정신건강에 좋다.. String에 indexOf <- 이게 젤 속편하다..
Parser라... Html의 특정부분만을 뽑아 사용하기 위한 그냥 Parser라면 위의 햏자들 말처럼 링크드 리스트나 IndexOf 같은 함수로 토큰처리로 뽑아내는게 제일 편하고 고생안하는 방법이나 만일 HTML 또는 XML 전체 구문들을 모두 사용하고 모든 Node들을 뽑아내기 위한 정상 Parser라면 Tree 구조를 사용하는게 제일 좋을 것이요. 물론 HTML이 워낙 변칙이라 XML처럼 정상적인 Tree 구조를 기대하는 것도 무리자만 정말 좋은 Parser는 이런 불규칙한 Node들까지도 범용적으로 처리해서 특정 부분이 이상해도 왼만하면 정상적으로 처리할려는 예외 처리를 Utility로 갖고 있도록 만들어야 하오. 순차처리로 했을 때 속도면에서 만족스럽지 못하나 안정성이나 확실한 Child Node
Scan를 위해선 역시 순차처리만큼 확신한 방법이 없소. 일단 안정빵으로 순차처리로 모든 Node를 정확하고 확실하게 읽도록 만들고 나서 파서가 정상작동하는 것을 확인하고, 그리고 나서 튜닝에 들어갈 무렵 속도 개선을 해보길. 파서의 가장 큰 이슈는 사용하든 안하든 일단 모든 Child Node들을 꼬이지 않게 논리적 Tree로 재구성하냐 못하냐의 문제요. 논리적 Tree로 재구성하지 못한 부실한 Tree를 만들어봐야 어차피 그 Tree Node로 만들어지는 2차 생성물또한 부실하며 정확할 수 없다오.
이렇게 Tree가 완성되면, 특정 부모 Node들, 즉 자주 사용되거나 프로그램에서 중요하게 쓰여질 특정 Node들은 특정 리스트에 사이드로 등록해놓으시요.일정 키워드 식으로 자주 사용될 것 같은 Node의 index같은 것을 따로 등록해놓으면 빨리 특정 노느를 찾을수 있소.이렇게 하면 특정 노드를 찾기 위해 처음부터 스캔하지 않고, 필요한 노드의 인덱스를 알기에 그 부분부터 바로 스캔할 수 있어 속도를 향상시킬수 있을것이요. 일종의 비자금 장부라고 해야되나. 그리고 좀더 유연한 Tree는 어느 node를 찍더라도 자신을 기준으로 상하 노드(부모,자식), 좌우 노드(형제노드)를 모두 바로 접근할수 있도록 만들어주는게 나중을 위해서 좋을 것이요. 파싱 결과물로 2차 생성물을 만들어보면 뭔말인지 알것이요.
그리고 뭘 물어볼려면 최소한 반말은 하지 말길. 여기 프갤에 경력 10년차 이상의 고수분들도 있는 것 같던데, 그 분들이 재수없어 프갤 안오면 나중에 정말 노하우가 묻어있는 좋은 답변도 못듣고, 엉뚱한 리플이나 달릴 수 있을지도. 그런걸 바라지는 않을 것이라 생각되오
윈도즈 플랫폼이면 몽횽아 말대로 MSHTML 써라.. 그게 젤 편하고 좋다..
골빈당 // 디씨 스럽지가 않잖아요 -_)
디시스럽지가 않다는 말은 무슨 뜻이요. 어떻게 해야 디시스러운지-.-; 원래 내 전문갤은 영화갤인데, 프갤에서 열심히 기웃거리고 있는 중이오만..
ㅎㅎ 진짜 물어본건 아닌데 ㅎㅎ 디씨에서 설명 듣느니 데브피아나 코드구루 가서 뒤지는게 훨씬 생산적이야 ㅎㅎ
DOM(IE에 있는 Document Object Model) 이라고 찾아바바요. 이거 Parser 맞송.
감사. 근데 어차피 전문적인게 아니고 정보나 뽑아 쓰려는 (사실 사이트 뒤지기 귀찮으니까 자동화) 목적으로 한건데 필요한건 한두줄의 정보(주가,환율..) 인데 50000줄짜리 HTML 코드를 모조리 배열에 넣고 하려니까 좀 글찮아.. 그래서 전문가 횽들이 이미 쓰고 있는 새로운 방법이 있나 해서 물어보긴 한건데 별로 바라지는 않아 ㅎㅎ
헐.. 지금 만들고 있는 플그램이 그런건데.. -_-;; 웹페이지 실시간 감시 및 정보추출.. 전문용어로 '웹에이전트'라 함.. 이쪽으론 국내에는 한양대 최중민 교수님이 권위자.. 근데 별거아니겠구나 하고 시작했는데 지대로 만들려니까 파고들면 들수록 어려움.. 컴파일러, 분산처리, 네트워크, 인공지능(AI서버), 지식공학 등 많은 개념들이.. -_-;; 덜덜덜..
담배햏자의 마음을 나도 상당히 이해한다오. 대략 담배햏이 고생했던 부분도 내가 고생했던 부분이란 같은 거라는 느낌이 팍 드오.암튼 이쪽 계열 플그램은 보통 인내력과 집중력아니면 하기 힘듬. 배경지식도 상당히 많이 필요하고. 구현시 꼭 봐야하는 RF문서나 포럼 문서만 바이블 책 두께로 2~3권 불량은 넘을 듯
특정한 정보만 가져오는 거라면 그냥 정규표현식으로 해도 될것 같으오.
perl 뒀다 뭐해 perl.
난 경제과거든? ㅎㅎ 그래서 금융정보를 수집해서 실시간 예측을 한다거나 아님 하다못해 주식 매수 매각 시점 이라도 찾는데 이용하려고 공부중이얌..
내공이 조금씩 세어 나오네; 암튼 웹쪽은 효용도 많고 발전도 많은 것 같구나;