본문 바로가기
  • 실행력이 모든걸 결정한다
반응형

분류 전체보기580

[크롤링, 예제 1] BOJ 정답율 추출하기 아래 포스팅을 읽지 않았다면 무조건 읽고 올 것을 권장한다. 설치법과 robots.txt같이 필수적으로 알아둬야 하는 개념이 필요하다. kimcoder.tistory.com/164 크롤링을 위한 준비과정 (Python, selenium, beautifulsoup 설치) ※크롤링을 할 때 지켜야 하는 룰이 있으니 robots.txt에 대해 모른다면 아래 포스팅을 읽고 오는 것을 강력히 권한다. kimcoder.tistory.com/163 크롤링의 정의와 이점 그리고 주의할 점 크롤링이란 무수 kimcoder.tistory.com 현 시점부터 크롤링은 기본적으로 파이썬을 이용할 예정이지만, 같은 예제를 Node.js에서 cheerio, request 모듈로 크롤링한 포스팅도 있다. kimcoder.tisto.. 2020. 10. 23.
크롤링을 위한 준비과정 (Python, selenium, beautifulsoup 설치) ※크롤링을 할 때 지켜야 하는 룰이 있으니 robots.txt에 대해 모른다면 아래 포스팅을 읽고 오는 것을 강력히 권한다. kimcoder.tistory.com/163 크롤링의 정의와 이점 그리고 주의할 점 크롤링이란 무수히 많은 컴퓨터에 분산 저장되어 있는 문서를 수집하여 검색 대상의 색인으로 포함시키는 기술을 의미하며, 스크래핑(Scraping) 이라고도 한다. 쉽게 말하면 웹 페이지를 가져와서 kimcoder.tistory.com 이번 포스팅에서는 크롤링을 위한 준비 과정에 대해 다루고, 다음 포스팅부터 본격적으로 크롤링을 해볼 것이다. Python 환경에서 웹 크롤링을 하기 위한 3가지 준비절차가 있다. Python설치 -> selenium, beautifulsoup 모듈 설치 -> driver.. 2020. 10. 22.
크롤링의 정의와 이점 그리고 주의할 점 크롤링이란 무수히 많은 컴퓨터에 분산 저장되어 있는 문서를 수집하여 검색 대상의 색인으로 포함시키는 기술을 의미하며, 스크래핑(Scraping) 이라고도 한다.쉽게 말하면 웹 페이지를 가져와서 그 안에서 데이터를 추출하는 기술이다.자동 입력, 파일 다운로드 기능도 가능하고, driver을 이용하면 동적인 크롤링을 할 수 있게 된다. 여기서 동적이라는 의미는, 코드에 의해 사이트를 옮겨다니거나 스크롤이나 클릭을 하여 웹 코드에 변동이 있더라도 데이터를 추출할 수 있게 되는 것이다. 크롤링을 할 때 주의할 점이 있다.웹사이트에서 크롤링봇 접근을 Disallow 하는 페이지는 크롤링을 해서는 안된다. 이는 처벌을 받을 수 있다.그렇다면 접근을 허용하는지에 대한 여부는 어떻게 확인할까?그것은 robots.txt.. 2020. 10. 22.
[Node.js] request, cheerio를 이용한 웹크롤링 이번 포스팅에서는 Node.js에서 request, cheerio 모듈을 이용하여, 백준 온라인 저지 사이트에 있는 특정 문제들의 정답률 데이터를 모두 긁어와서 평균까지 계산해주는 크롤링 봇 구현에 대해 다룰 것이다. 지나친 크롤링은 웹사이트에 트래픽을 줄 수 있으므로 가볍게 모든문제 1페이지에 있는 문제번호 1000~1099까지 총 100문제의 정답률 데이터들만 추출해보자. 프로젝트 폴더 내에 request, cheerio 모듈을 설치해줘야 한다. npm install request --save npm install cheerio --save html코드를 가져오고 싶은 사이트의 url을 request의 매개변수에 넣고, let $ = cheerio.load(body) 로 html코드를 최종적으로 세팅.. 2020. 10. 21.
[SQL-Select, 난이도 중하] 상위 n개 레코드 테이블 명은 ANIMAL_INS 이며, DATETIME순 상위 1개 레코드의 NAME을 조회하는 SQL문을 작성하면 된다. >> SELECT NAME FROM ANIMAL_INS ORDER BY DATETIME LIMIT 1; SELECT : 조회하라 NAME : NAME 필드를 FROM ANIMAL_INS : 테이블 "ANIMAL_INS" 에서 ORDER BY DATETIME : 필드 "DATETIME" 순으로 LIMIT 1 : 상위 1개 레코드만 2020. 10. 20.
[SQL-Select, 난이도 중하] 여러 기준으로 정렬하기 테이블 명은 ANIMAL_INS 이며, NAME순으로, NAME이 같다면 DATETIME의 역순으로 모든 동물의 ANIMAL_ID, NAME, DATETIME을 조회하는 SQL문을 작성하면 된다. >> SELECT ANIMAL_ID,NAME,DATETIME FROM ANIMAL_INS ORDER BY NAME, DATETIME DESC; SELECT : 조회하라 ANIMAL_ID,NAME,DATETIME : ANIMAL_ID,NAME,DATETIME 필드를 FROM ANIMAL_INS : 테이블 "ANIMAL_INS" 에서 ORDER BY NAME, DATETIME DESC : 필드 "NAME" 순으로, "NAME"이 같다면 DATETIME의 역순으로 2020. 10. 20.
[SQL-Select, 난이도 하] 동물의 아이디와 이름 테이블 명은 ANIMAL_INS 이며, ANIMAL_ID순으로 모든 동물의 ANIMAL_ID, NAME을 조회하는 SQL문을 작성하면 된다. >> SELECT ANIMAL_ID,NAME FROM ANIMAL_INS ORDER BY ANIMAL_ID; SELECT : 조회하라 ANIMAL_ID,NAME : ANIMAL_ID,NAME 필드를 FROM ANIMAL_INS : 테이블 "ANIMAL_INS" 에서 ORDER BY ANIMAL_ID : 필드 "ANIMAL_ID" 순으로 2020. 10. 20.
[SQL-Select, 난이도 중하] 어린 동물 찾기 테이블 명은 ANIMAL_INS 이며, ANIMAL_ID순으로 INTAKE_CONDITION이 Aged가 아닌 동물의 ANIMAL_ID, NAME을 조회하는 SQL문을 작성하면 된다. >> SELECT ANIMAL_ID,NAME FROM ANIMAL_INS WHERE NOT INTAKE_CONDITION="Aged" ORDER BY ANIMAL_ID; SELECT : 조회하라ANIMAL_ID,NAME : ANIMAL_ID,NAME 필드를FROM ANIMAL_INS : 테이블 "ANIMAL_INS" 에서WHERE NOT INTAKE_CONDITION="Aged" : 필드명 "INTAKE_CONDITION" 의 값이 "Aged"가 아닌ORDER BY ANIMAL_ID : 필드명 "ANIMAL_ID" 순으로 2020. 10. 20.
[SQL-Select, 난이도 중하] 아픈 동물 찾기 테이블 명은 ANIMAL_INS 이며, ANIMAL_ID순으로 INTAKE_CONDITION이 Sick인 동물의 ANIMAL_ID, NAME을 조회하는 SQL문을 작성하면 된다. >> SELECT ANIMAL_ID,NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION="Sick" ORDER BY ANIMAL_ID; SELECT : 조회하라 ANIMAL_ID,NAME : ANIMAL_ID,NAME 필드를 FROM ANIMAL_INS : 테이블 "ANIMAL_INS" 에서 WHERE INTAKE_CONDITION="Sick" : 필드 "INTAKE_CONDITION" 의 값이 "Sick"인 ORDER BY ANIMAL_ID : 필드 "ANIMAL_ID" 순으로 2020. 10. 20.