[Python] 네이버 카페 게시글 크롤링 selenium, bs4
·
Language/Python
네이버 카페의 게시판에서 글번호, 제목, 작성자, 작성일을 크롤링하는 코드입니다. 링크 주소 복사 ▪ 크롤링할 카페의 게시판으로 가서 첫번째 페이지의 링크 주소 복사 크롤링할 페이지 개수, URL 설정 page_num = 5 # 크롤링할 페이지 개수 url = "https://cafe.naver.com/ArticleList.nhn?search.clubid=21771779&search.menuid=56&search.boardtype=L&search.totalCount=151&search.cafeId=21771779&search.page=" driver.get(url+'1') # 크롤링할 페이지 열기 ▪ page_num에서 크롤링할 페이지 개수를 지정 ex) 5로 지정했으면 1,2,3,4,5 페이지의 내용을..
[빅데이터를 지탱하는 기술] 4. 빅데이터의 축적 (1)
·
Data Engineering/책 리뷰
4-1. 벌크 형과 스트리밍 형의 데이터 수집 객체 스토리지와 데이터 수집 ▪ 빅데이터는 확장성이 높은 '분산 스토리지(distributed storage)'에 저장 ▪ 기본이 되는 것은 대량으로 파일을 저장하기 위한 '객체 스토리지(object storage)' ex) 'HDFS', 'Amazon S3' ▪ 객체 스토리지에서의 파일 읽고 쓰기는 네트워크를 거침 ▪ 데이터는 여러 디스크에 복사되어 일부가 고장이 나도 데이터 손실이 발생하지 않음 ▪ 데이터의 읽고 쓰기를 다수의 하드웨어가 분산하여 데이터양이 늘어나도 성능이 떨어지지 않음 ▪ 객체 스토리지는 데이터양이 많을 때 우수한 반면에 소량의 데이터에서는 데이터양에 비해 통신 오버헤드가 커서 비효율적임 데이터 수집 ▪ 작은 데이터는 적당히 모아서 하나..
[빅데이터를 지탱하는 기술] 3. 빅데이터의 분산 처리 (3)
·
Data Engineering/책 리뷰
3-3. 데이터 마트의 구축 팩트 테이블 ▪ 팩트 테이블의 작성에는 ' 추가(append)'와 '치환(replace)'의 두 가지 방법이 있음 ▪ 추가는 새로운 데이터만을 증분으로 추가 ▪ 치환은 과거의 데이터를 포함하여 테이블 전체를 치환 테이블 파티셔닝 ▪ 추가의 효율이 압도적으로 유리 하지만 잠재적인 문제가 있음 ▪ 추가의 잠재적인 문제 - 추가에 실패한 것을 알아채지 못하면 팩트 테이블의 일부에 결손이 발생 - 추가를 잘못해서 여러 번 실행하면 팩트 테이블의 일부가 중복 - 팩트 테이블을 다시 만들 경우 관리가 복잡 ▪ 해당 문제의 가능성을 줄이기 위해 '테이블 파티셔닝(table partitioning)'을 사용 ▪ 하나의 테이블을 물리적 파티션으로 나눠 파티션 단위로 정리하여 데이터를 쓰거나 ..
[빅데이터를 지탱하는 기술] 3. 빅데이터의 분산 처리 (2)
·
Data Engineering/책 리뷰
3-2. 쿼리 엔진 데이터 마트 구축의 파이프라인 ▪ 분산 스토리지에 저장된 데이터를 구조화하고 열 지향 스토리지 형식으로 저장, 부하가 크기 때문에 Hive 사용 ▪ 구조화된 데이터를 결합, 집계하고 비정규화 테이블로 데이터 마트에 써서 내보냄, 열 지향 스토리지를 이용한 쿼리에는 Presto 사용 ▪ Hive에서 만들어진 테이블 정보는 'Hive 메타 스토어(Hive Metastore)'에 저장 Hive에 의한 구조화 데이터 작성 ▪ 외부 테이블(external table): Hive의 외부에 있는 특정 파일을 참고해 테이블이 존재하는 것처럼 읽어 들이는 방법 ▪ csv의 테이블 명을 참고해 데이터를 추출하여 텍스트 파일을 로드하고 구조화 데이터를 변환 하는 것이 이에 해당 ▪ Hive와 그 외 SQ..
[빅데이터를 지탱하는 기술] 3. 빅데이터의 분산 처리 (1)
·
Data Engineering/책 리뷰
3-1. 대규모 분산 처리의 프레임워크 구조화 데이터와 비구조화 데이터 ▪ SQL로 데이터를 집계할때, 먼저 테이블의 칼럼 명과 데이터형, 테이블 간의 관계 등을 '스키마(schema)'로 정함 ▪ 구조화된 데이터(structed data): 스키마가 명확하게 정의된 데이터 ▪ 비구조화 데이터(unstructed data): 스키마가 없는 데이터, SQL로 제대로 집계 할 수 없음 ▪ 비구조화 데이터를 분산 스토리지에 저장하고 분산 시스템으로 처리하는 것이 데이터 레이크 스키마리스 데이터 ▪ CSV, JSON, XML 등의 데이터는 서식은 정해져 있지만, 칼럼 수나 데이터형은 명확하지 않아 '스키마리스 데이터(schemaless data)'라고 불림 ▪ 새로운 데이터를 다운로드할 때마다 스키마를 정하는 ..
[빅데이터를 지탱하는 기술] 2. 빅데이터의 탐색 (2)
·
Data Engineering/책 리뷰
2-3. 애드 혹 분석과 시각화 도구 Jupyter Notebook에 의한 애드 혹 분석 ▪ 데이터를 파악하기 위해 여러번의 시행착오를 반복하는 상황에서는 대화형 실행 환경이 자주 사용 ▪ 오픈 소스의 대화형 도구인 'Jupyter Notebook' ▪ 크로스 집계의 결과를 보고 싶은 경우 스프레드시트와 BI 도구를 시작할 필요없이 노트북 안에서 실행 ▪ Jupyter Notebook은 웹 애플리케이션이지만, 로컬 호스트에서 기동 ▪ 노트북 자체도 단순한 JSON 파일이므로 로컬 파일로 손쉽게 처리할 수 있음 노트북 내에서의 시각화 ▪ 'matplotlib'은 과학 기술 계산 분야에서 사용되는 시각화 라이브러리 ▪ 시각화를 위해서 프로그래밍이 필요해서 시간이 오래 걸리지만 유사한 그래프를 다시 만드는 경..
[빅데이터를 지탱하는 기술] 2. 빅데이터의 탐색 (1)
·
Data Engineering/책 리뷰
2-1. 크로스 집계의 기본 트랜 잭션 테이블, 크로스 테이블, 피벗 테이블 ▪ 크로스 테이블(cross table): 행과 열이 교차 하는 부분에 숫자 데이터가 들어가는 테이블, 데이터 베이스에서는 다루기 어려움 ▪ 트랜잭션 테이블(transaction table): 행 방향으로 증가하는 테이블, 열 방향으로는 데이터를 증가 시키지 않음 ▪ 트랜잭션 테이블에서 크로스 테이블로 변환하는 과정을 '크로스 집계(cross tabulation)'이라 함 ▪ 피벗 테이블(pivot table): 소량의 데이터를 크로스 집계하는데 편리한 스프레드 시트의 테이블 룩업 테이블 ▪ 트랜잭션 테이블에 다른 테이블을 결합하고 싶을 때 사용 ▪ 트랜잭션 테이블과 룩업 테이블은 서로 독립적으로 관리 ▪ 룩업 테이블은 데이터 ..
[빅데이터를 지탱하는 기술] 1. 빅데이터의 기초 지식 (2)
·
Data Engineering/책 리뷰
1-3. 스크립트 언어에 의한 특별 분석과 데이터 프레임 데이터 처리와 스크립트 언어 ▪ 원시 데이터를 그대로 BI 도구로 읽을 수 없어 '전처리(preprocesccing)'가 필요한 경우가 있음 ▪ 이를 위해 자주 사용하는 스크립트 언어는 R과 Python ▪ R은 통계 분석을 위해 개발된 언어 ▪ Python은 다양한 라이브러리를 사용할 수 있고, API를 호출하거나 복잡한 문자열 처리에 적합 데이터 프레임, 기초 중의 기초 ▪ '데이터 프레임(data frame)'이란 표 형식의 데이터를 추상화한 객체 ▪ 데이터 프레임을 사용하여 데이터를 가공과 집계함 SQL 결과를 데이터 프레임으로 활용하기 ▪ 데이터 프레임은 쿼리를 실행한 결과로도 만들 수 있음 ▪ 복잡한 데이터 처리에는 SQL을 사용하면서 ..