본문으로 바로가기
728x90

참고사항

 

해당 사이트는 크롤링이 불가합니다.

공부목적으로 수집하였음을 알려드립니다.

 

또한 웹 사이트마다 구조가 다르기 때문에 통용되는 방법은 아니고 하나의 예시를 보여드리고자 합니다.

 

 

카테고리 확인

 

예시로 "~ 용어사전 사이트" 의 용어목록 카테고리를 가져왔습니다.

첫 글자의 리스트와 4개의 카테고리가 존재합니다.

 

 

Form Data 확인

 

"ㄱ"  > "용어사전" >  첫번째 항목 선택

 

해당 페이지의 Request Method POST 방식이고 Form Data 를 확인해보니 다음과 같은 구조를 가지고 있었습니다.

 


"ㄱ"  > "용어사전" >  끝 페이지 항목 선택

 

listPage 라는 키값이 1 -> 295 로 변한 것을 확인할 수 있습니다.

listPage 를 1씩 증가 시켜 계속해서 호출하면 한 카테고리(한 단어의 첫글자, 한 카테고리)의 전체 페이지 수집할 수 있게 됩니다. (이것을 4 x 41 번 해야합니다. => listPage(각 카테고리마다 수가 다름) x 4 x 41)

 

listCount 는 한 번의 요청으로 보여줄 항목들의 수를 나타내는 것이고 (그 동안의 경험)

listCount 를 100 을 요청하면 100 개의 항목을 응답받을 것이고 listPage 의 범위는 달라집니다.

즉 listCount 의 값을 높여서 호출하면 요청 수를 줄일 수 있는 장점이있습니다. (선택사항)

 


"A"  > "용어사전" >  첫번째 항목 선택

 

firstWordVal 이라는 키값이 A 로 변했습니다.

 

이것으로 반복할 범위를 구했습니다. (0~9 는 확인해보니 전부 0)

firstWord = { 
    'hangle': ['ㄱ', 'ㄴ', 'ㄷ', 'ㄹ', 'ㅁ', 'ㅂ', 'ㅅ', 'ㅇ', 'ㅈ', 'ㅊ', 'ㅋ', 'ㅌ', 'ㅎ'],
    'number': [0], #1, 2, 3 ,4 ,5 ,6 ,7 ,8 ,9,
    'alpha': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
}

 


"A"  > "시사상식" >  첫번째 항목 선택

 

다음으로 카테고리를 변경해보았습니다.

이번에는 div_big_cd_in 이라는 키값이 51 -> 107 로 변했습니다.

 

나머지 카테고리도 확인해보니 각각 50, 202 인것을 확인했습니다.

 

이것으로 카테고리 범위는 다음과 같습니다.

category = {
        '용어사전': 51, 
        '시사상식': 107, 
        'TTA표준': 50, 
        '기타': 202
}

 

 

결과

 

12000 개를 수집하고 차단당했습니다.

스케쥴러를 등록해서 시간 간격으로 수집하는 방법을 연구해봐야겠습니다.

[
	{
		"id": "038809-1",
		"name": "가간섭성"
	},
	{
		"id": "038818-3",
		"name": "가간섭성 광"
	},
	{
		"id": "038814-3",
		"name": "가간섭성 광통신"
	},
	{
		"id": "038812-3",
		"name": "가간섭성 광파 전송"
	},
	{
		"id": "038807-1",
		"name": "가간섭성 길이"
	},
    
    .....
    
	{
		"id": "044814-2",
		"name": "하드 디스크"
	},
	{
		"id": "044815-2",
		"name": "하드 디스크 드라이브"
	},
	{
		"id": "044816-1",
		"name": "하드 디스크 시스템"
	},
	{
		"id": "044822-1",
		"name": "하드 리턴"
	}
]