Project
-
웹 크롤러 설계Project 2023. 7. 12. 18:17
웹 크롤러 - 검색 엔진에서 널리쓰는 기술로, 웹에 새로 올라오거나 갱신된 콘텐츠를 찾아내는 것이 주된 목적 - 콘텐츠는 웹 페이지일수도, 이미지나 비디오 또는 PDF 파일일 수도 있다. 1. Search Engine Indexing - 웹 페이지를 모아 검색 엔진을 위한 로컬 인덱스를 만든다 - GoogleBot : 구글 검색 엔진이 사용하는 크롤러 2. Web Archiving - 나중에 사용할 목적으로 장기보관하기 위해 웹에서 정보를 모으는 절차 - 많은 국립 도서관이 크롤러를 돌려 웹사이트를 아카이빙 3. Web Mining - 인터넷에서 유용한 지식을 도출해 낼 수 있는 것 - 유명 금융 기업들은 크롤러를 사용해 주주총회 자료나 연차 보고서를 다운받아 기업의 핵심 사업 방향을 제시 4. Web ..
-
[Parsing] Scrapy를 활용하여 웹 스크래핑 하기Project 2023. 7. 9. 00:44
Pyspider를 활용하여 크롤러를 구현해보려고 했으나, 왜 예시가 없나 했더니 코드도 구식이고 지금 시점에서 구현이 어려웠다...(공식문서에 자랑(?)했던 WebUI도 이제 지원하지 않는 듯) 그래서 대체재를 찾던 도중 Scrapy가 눈에 띄어 이것을 활용하여 만들어보기로 한다. +) 6년 전에 마지막으로 깃헙에 커밋된 코드라서, 자잘한 오류만 짚고 넘어가자면 gcd(최대공약수)를 구현하는데 math가 아닌 현재 지원하지 않는 fractions 모듈을 사용한다던가, 무차별적인 six 모듈에서 함수를 가져와 일일이 코드를 고치는 데 애를 먹기도 했고, pickle error가 자주 발생하기도 했다... 또한 인용하거나 따라해볼만한 튜토리얼 같은 문서가 부족하다 Scrapy? https://keyhyuk-..
-
PySpiderProject 2023. 7. 8. 11:24
Pyspider는 웹 크롤링을 위해 개발된 모듈이다. 웹 크롤링에는 2가지 지켜야할 특성이 있다. 1. 100-200개의 웹사이트를 수집했을 시 그들은 온/오프라인에서 그들의 템플릿을 때때로 변화시킨다. - 우리는 웹사이트의 변화 여부를 확인하기 위해 강력한 감시도구가 필요하며, 각각의 웹사이트에 스크립트(템플릿)를 작성하게 해주는 좋은 도구가 필요하다. 2. 데이터는 반드시 웹사이트가 업데이트 되었을 때 5분 내로 수집되어야만 한다. - 다음과 같은 문제를 인덱스 페이지를 빈번하게 확인하고, 최근 업데이트 시간(혹은 최근 응답 시간)과 같은 것들을 사용해 페이지의 변화요부를 확인함으로써 해결하였다. 게다가, 우리는 빠진 부분이 없는지 확인하기 위해 x일 이후 페이지들을 재확인한다. Pyspider는 w..
-
웹 크롤링 데이터를 MySQL에 저장하기Project 2023. 7. 3. 12:08
Mac에 Mysql 설치 brew install mysql brew install mysql-client MySQL 실행 $ mysql.server start Mysql 데이터베이스 및 유저 생성 mysql > CREATE DATABASE crawl_data DEFAULT CHARACTER SET utf8; mysql > CREATE USER crawl_usr IDENTIFIED BY 'Test001'; exit 입력 후, Python으로 Mysql 접속 코드 만들기 import MySQLdb conn = MySQLdb.connect( user="crawl_usr", passwd="Test001", host="localhost", db="crawl_data" # charset="utf-8" ) print..
-
Requests 알아보기Project 2023. 6. 28. 15:45
오늘은 웹 크롤러를 만들기 전에, Python의 requests에 알아보자. Requests 공식 문서는 다음과 같다. https://requests.readthedocs.io/en/latest/ Requests: HTTP for Humans™ — Requests 2.31.0 documentation Requests: HTTP for Humans™ Release v2.31.0. (Installation) Requests is an elegant and simple HTTP library for Python, built for human beings. Behold, the power of Requests: >>> r = requests.get('https://api.github.com/user', auth..
-
Client와 Server, REST API, JSONProject 2023. 6. 26. 16:58
* Client 정보를 요청하는 측이 클라이언트, 요청을 받아 응답하는 쪽이 서버이다. 클라이언트가 서버로 데이터를 보내는 것을 Request라고 한다. 단순한 검색부터 상품 결제까지 전부 웹 서버로 요청을 보내야 한다. 이러한 요청은 데이터의 모음으로 네트워크를 통해 서버에게 전달되며, 서버로 요청을 보낸 이후 응답이 올 때까지 기다리는 것이 클라이언트의 역할이다. 클라이언트는 HTML, 자바스크립트, CSS 코드를 적절히 화면에 출력하는 기능을 수행한다. 이때 클라이언트는 출력만을 담당하며, 정보를 생성하고 보내는 역할은 전적으로 서버가 담당한다. 웹뿐만 아니라 온라인 게임에서도 유사한데, 게임 배경 화면이나 캐릭터 이미지 같은 그래픽 파일은 PC에 미리 저장되어 있고, 게임 플레이 도중에 서버로부터..