크롤링

Data

빅데이터의 정의와 데이터 수집, 저장

✅ 빅데이터의 정의 빅데이터를 이론으로 공부하면 주로 3V(Volume, Velocity, Variety)라 정의한다. 이는 각각 규모의 증가, 다양성, 처리 속도를 뜻한다. - 규모의 증가(Volume): 기존 데이터 수집, 관리, 처리 소프트웨어의 한계를 넘어선다. - 처리 속도(Velocity): 데이터의 양과 내용이 끊임없이 변화(실시간성 정보가 증가)함에 따라 대규모 데이터의 빠른 처리, 분석이 요구된다. - 다양성(Variety): 비정형 데이터의 종류가 다양해진다. 여기서 규모의 증가에 집중해서, '기존 소프트웨어의 한계를 넘어섰다'의 기존 소프트웨어는 MySQL, Orcale과 같은 관계형데이터베이스를 의마한다. 이러한 소프트웨어는 대부분 분산환경이 아닌 서버 한 대만을 염두에 두고 만들어..

Crawling

[크롤링/16]메시지 큐(파이썬 Redis)

- 크롤링과 스크레이핑을 분리해서 비동기적으로 처리하자 우선 크롤링과 스크레이핑은 다르다. 크롤링은 HTML/파일 등을 추출하고 저장하는 것이고, 스크레이핑은 그 결과물인 HTML에서 원하는 데이터를 추출하는 것이다. 그리고 일반적으로 크롤링보다 스크레이핑에서 문제가 더 많이 생긴다. 실제로 회사에서 크롤러를 관리할 때도 크롤링에 실패한 경우 원인을 파악해보면 십중팔구 스크레이핑이 문제였다. 크롤링은 HTML을 긁어오기만 하면 된다. 그 HTML에서 키워드 등 원하는 데이터의 유무를 판단하는 건 스크레이핑의 영역이다. HTML을 긁어오는데서 실패를 할 가능성은 웹 서버 에러를 제외하고는 거의 없지만, 스크레이핑은 데이터의 위치가 바뀌었다던지, 데이터가 더이상 포함되어있지않다던지 다양한 실패 가능성이 있다..

Crawling

[크롤링/14]Scrapy로 Javascript 사용한 페이지 크롤링하기(Splash)

github.com/scrapy-plugins/scrapy-splash scrapy-plugins/scrapy-splash Scrapy+Splash for JavaScript integration. Contribute to scrapy-plugins/scrapy-splash development by creating an account on GitHub. github.com Scrapy는 lxml을 기반으로 만들어져 있어서 자바스크립트를 읽고 실행하지 못한다. 따라서 자바스크립트를 처리하기 위해 Selenium과 PhantomJS를 주로 사용하는데, Scrapy에서도 Splash를 사용하면 자바스크립트를 처리할 수 있다. Splash는 웹킷을 기반으로 만들들어진 헤드리스 브라우저를 사용한 서버다. Spl..

Crawling

[크롤링/13]Scrapy 오류 처리 설정

RETRY_ENABLED(기본값 True) 타임아웃 또는 HTTP 상태 코드 500 등이 발생했을 때d 자동으로 재시도할지 여부 이 설정과 관계 없이 Request.meta 속성으로 dont_rety 키 값을 True로 지정하면 해당 요청은 재시도하지 않는다. yield scrapy.Requests(url, meta={'dont_retry': True}) 잘못된 응답 또는 데이터 손실 오류는 서버 구성 오류에서 네트워크 오류, 데이터 손상에 이르기까지 여러 상황에서 발생할 수 있다. 깨진 응답이 부분적이거나 불완전한 내용을 포함 할 수 있다는 점을 고려하여 깨진 응답을 처리하는 것이 합리적 일지 결정하는 것은 사용자의 몫이다. RETRY_TIMES(기본값 2) 재시도 최대 횟수 재시도 횟수가 2라는건 처..

Crawling

[크롤링/12]Scrapy HTTP 요청/캐시 설정

캐시 설정은 같은 요청을 반복할 때 상대 서버에 가는 부하를 줄일 수 있다. HTTP 캐시 설정을 활성화하면 첫 요청을 제외하고는 대상 서버가 아닌 저장된 캐시를 활용하게 된다. 또한 응답을 캐시에서 받으면 요청 사이에 대기 시간이 들어가지 않으므로 빠른 처리가 가능하다. 1. HTTP 요청 USER_AGENT(기본값 "Scrapy/VERSION (+https://scrapy.org)") 공식 문서: docs.scrapy.org/en/latest/topics/settings.html?highlight=user_agent#user-agent Settings — Scrapy 2.4.1 documentation Here’s a list of all available Scrapy settings, in alph..

Crawling

[크롤링/11]Scrapy 병렬 처리 설정

특정한 웹 사이트를 크롤링할 때 병렬 처리를 하는 것은 민폐다. 하지만 불특정 다수의 웹 사이트를 크롤링할 때는 병렬처리로 크롤링 시간을 단축할 수 있다. Scrapy의 기본 설정은 특정 웹 사이트를 크롤링하는 것에 맞춰져있다. 즉, 불특정 다수의 웹 사이트를 크롤링 하기에는 잘 맞지않다. 하지만 Scrapy는 비동기 아키텍처로 인해 빠른 broad crawling 광범위 크롤링에 좋은 성능을 보여준다. Priority Queue 사용 중지하기 SCHEDULER_PRIORITY_QUEUE = 'scrapy.pqueues.DownloaderAwarePriorityQueue' Priority Queue는 싱글 도메인 크롤링에 적합하다. CONCURRENT_REQUESTS(기본값 16) CONCURRENT_R..

Crawling

[크롤링/10]Scrapy로 크롤링 대상 사이트에 피해주지 않는 설정하기

크롤러를 만들때 중요한건 크롤링 대상 사이트에 피해를 주지않는 것이다. 크롤러는 크롤링 할 사이트가 있어야만 존재할 수 있다. 그러므로 크롤링 대상에 피해를 주지 않기위한 Scrapy 설정들(클릭하면 공식 문서로 이동) Settings — Scrapy 2.4.1 documentation Here’s a list of all available Scrapy settings, in alphabetical order, along with their default values and the scope where they apply. The scope, where available, shows where the setting is being used, if it’s tied to any particular comp..

Crawling

[크롤링/05]효율적인 크롤링 하는 방법

Q. 효율적인 크롤링이란? A. 크롤러를 운용하는 서버의 리소스를 효율적으로 활용하는 정도 웹 사이트의 변경 시점이나 변경 빈도 학습 정기적으로 크롤링을 하면 대상 사이트의 경향을 알 수 있음 예 1> 매주 화요일에 자료가 업데이트 된다. 5시부터 10시까지는 접속이 지연된다. → 매주 화요일 10시 30분에 크롤링 예 2> 매일 자료가 업데이트 된다고 공지가 올라와있다. 9시부터 20시까지는 트래픽이 높다. → 8시 30분 또는 20시 30분에 크롤링을 하는 등 트래픽이 높은 시간을 피해서 크롤링 예 3> 매주 수요일 9시마다 오류가 발생한다. → 해당 요일, 시간을 피해서 크롤링 크롤링에 필요한 시간은 웹 사이트에 따라 다름 웹 사이트 내부의 페이지가 같아도 응답 간격과 응답 속도의 차이가 존재 크롤..

Crawling

[크롤링/01] 크롤러의 개념과 동작

크롤러 인터넷에 있는 콘텐츠를 기계적으로 수집해 데이터로 저장 파일, 데이터베이스 등에 저장 검색 서비스, 데이터 분석, 머신러닝 등에 활용 참고하면 좋은 자료 - 클라우드 페어 클라우드 페어에서는 크롤링의 개념 뿐만 아니라 나쁜 봇과 좋은 봇의 차이를 알려준다. 사용 예시 구글, 네이버 등 포탈은 콘텐츠를 크롤링해서 저장해서 검색 서비스를 제공 특정 분야나 용도에 초점을 맞춘 검색 서비스도 존재(네이버쇼핑의 최저가 사이트 등 가격 비교) RSS 리더 등 회사 인터넷 내부의 서버를 크롤링해서 사내 문서를 검색 네이버 서치와 관련된 정보를 얻을 수 있는 Naver Search Advisor 웹마스터 가이드 - 네이버 서치어드바이저 네이버 검색을 위한 웹마스터 가이드 입니다. 웹마스터 가이드 라인은, 네이버..

박한결
'크롤링' 태그의 글 목록