참고사항
해당 사이트는 크롤링이 불가합니다.
공부목적으로 수집하였음을 알려드립니다.
또한 웹 사이트마다 구조가 다르기 때문에 통용되는 방법은 아니고 하나의 예시를 보여드리고자 합니다.
카테고리 확인
예시로 "~ 용어사전 사이트" 의 용어목록 카테고리를 가져왔습니다.
첫 글자의 리스트와 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": "하드 리턴"
}
]
'Crawling > Basic' 카테고리의 다른 글
파이썬 다음-뉴스 댓글 크롤링 하기 -2 : 동적인 데이터를 수집하는 방법 (0) | 2020.08.09 |
---|---|
파이썬 다음-뉴스 크롤링 하기 -1 (0) | 2020.08.07 |
아이피 우회하여 크롤링하기 tor / requests[socks] (0) | 2020.08.03 |
정규표현식으로 태그 추출하기 (0) | 2020.07.27 |
파이썬 구글 날씨 검색기(크롤러) 만들기 : 모듈화와 핵심 팁 (0) | 2020.07.22 |