요구사항
- 목적
- 랜딩페이지 푸터 검수 프로그램 제작
- 주소를 넣으면 푸터부분의 구성요소가 정해진 데이터와 일치하는가?
- 요청 상세 내용
- input.txt에 랜딩주소를 넣는다.
- 프로그램 실행.
- output.txt에 푸터부분+개인정보처리방침상 [개인정보관리책임자]탭에 적힌 이름과 이메일이 정해진 DB와 맞는지 안맞는지 결과가 나온다.
요구사항 분석
- input.txt에 푸터부분을 검사할 URL을 넣는다.
- 프로그램을 실행하게 되면 셀레니움이 실행되면서 푸터로부터 정보를 추출한다.
- 푸터부분에서 정보를 추출하는데 성공하였다면 프로그램상 따로 등에 넣은 데이터와 일치하는지 검사한다.
- 만약 정보가 일치한다면 O표시를 일치하지 않는다라면 일치하지 않는 항목과 함께 X표시를한다.
프로그램 사용법
- 사용법
- 사업자정보를 담을 '.txt' 파일을 준비합니다.
- 파일의 이름을 '사업자정보.txt' 로 둡니다.
- '사업자정보.txt' 의 내용을 입력하고 main.py가 실행되는 위치에 놓습니다.
- '사업자정보.txt' 컬럼은 탭 하나로 구분되어야 합니다.
- 이와 관련된 이슈가 개발이슈 항목에 기술되어 있습니다.
- 첫 번째 행은 키워드를 만들 때 쓰고, 실제 탐색에 쓰이는 값은 두 번째 줄 부터 시작됩니다.
- 탐색 전략
- 두 가지 경우를 모두 탐색해야 한다.
- 실제 값 탐색
- 키워드 탐색
- '광고대행사 : ' 와 같이 페이지에서 레코드에 해당하는 값이 있을것으로 예상되는 키워드로 탐색
- 실제 값 탐색 방법
- 각 페이지에서 DB와 일치하는 정보가 붙어있을 것으로 예상되는 키워드를 추린다.
- ex) DB상의 '회사명' -> 페이지 상의 '광고대행사'
- DB의 컬럼을 key로, 레코드를 value로 하는 구조의, 탐색할 페이지의 정보를 담을 dictionary를 만든다.
- 탐색 완료 여부를 체크할 dictionary를 만든다.
- DB '사업자정보.txt' 의 각 case set (레코드)에 대해, 각 필드값들이 실제 페이지에 존재하는지 검색한다.
- 만약 컬럼의 '회사명' 에 해당하는 '쇼엠' 값이 실제 페이지에 존재한다면, '쇼엠' 앞의 일정 범위까지 텍스트를 추출한다.
- 추출된 범위 텍스트에 '회사명' 에 대응되는 키워드인 '광고대행사' 가 포함되어 있는지 확인한다.
- 만약 포함되어있을 경우, #2 에서 만든 dictionary의 '쇼엠' 이라는 key를 '회사명' 이라는 value로 할당한다.
- #4 ~ #7 을 반복하며 찾아지는 정보를 통해 dictionary를 완성한다.
- 이 때, DB의 값이 페이지에서 찾아지지 않는다면 dictionary에는 별다른 처리 없이 'None' 으로 둔다.
- 하나의 case 탐색이 끝나면 다음 case 탐색을 시도한다.
- 이 때, 이미 검사가 끝난 '회사명' 항목에 대해 '박데이터랩' 이라는 항목이 다시 발견되는 경우, '박데이터랩' 이라는 키워드의 앞에 '광고대행사' 라는 키워드가 나오는지 확인한다.
- 만약 해당 키워드가 나온다면 잘못된 page 이므로 page dictionary의 '회사명' key는 기존 값 대신 'False'가 된다.
- 키워드 탐색 방법
- 위의 '실제 값 탐색 방법'의 #1 ~ #3 까지는 동일하게 만든다.
- 예상되는 키워드들이 실제 페이지에 존재하는지 검색한다.
- 예를들면 '쇼엠' 의 경우 앞에 '광고대행사 :' 라는 키워드가 붙어있을 것으로 기대할 수 있다.
- 해당되는 키워드가 실제 페이지에도 존재한다면, '광고대행사 :' 키워드의 뒤쪽 일정 범위까지 텍스트를 추출한다.
- 추출된 텍스트에 DB의 해당 필드와 매치되는 올바른 값이 포함되고 있는지 검사한다.
- 예를들면 다음과 같다.
- '개인정보담당자' 의 경우 modal 페이지에 '개인정보관리책임자' 라는 키워드의 아래 몇 줄에 담당자의 이름 이메일 정보가 포함되어 있다.
- 이 때, '이름' 키워드의 뒤에 해당하는 값이 DB의 개인정보 담당자와(남현석) 일치하지 않는 경우(윤성민 등) 이것은 잘못된 정보이다.
- 따라서 해당 부분을 'False' 처리한다.
- 탐색 결과
- 탐색 페이지에 대한 dictionary의 keyword에 대응하는 각 value에 대해,
- 'None' 은 탐색된 정보가 없다는 것으로, 페이지에서 해당 키워드로 찾지 못한 경우이다.
- 'False' 는 잘못된 키워드가 매칭된 경우이다.
개발 이슈
- 주요 이슈
- IDE툴 : Visual Studio Code(이하 VSCode) 개발시 탭 간격 관련 이슈
- '사업자정보.txt' 에 사업자 정보를 저장하고 VSCode 에서 코딩시, 윈도우10 기본 메모장에서는 입력한 탭 개수가 정상적으로 인식되는데 VSCode 에서는 탭 개수가 윈도우보다 더 많이 인식되는 현상이 있습니다.
- 예를들어 메모장을 열고 사업자정보를 붙여넣을 시, 메모장에서는 컬럼 간격이 탭 한개인것에 비해 VSCode 에서는 탭이 3개로 인식되는 경우가 있었습니다.
- 이 경우 '사업자정보.txt' 파일을 만들고 윈도우 메모장을 열어서 저장하지 말고, VSCode 에서 '사업자정보.txt' 파일을 연 다음 붙여넣기 해야 탭 간격이 정상적으로 인식됩니다.