전체 글
-
24. 카드 뭉치Programmers 2023. 7. 11. 14:39
문제 설명 코니는 영어 단어가 적힌 카드 뭉치 두 개를 선물로 받았습니다. 코니는 다음과 같은 규칙으로 카드에 적힌 단어들을 사용해 원하는 순서의 단어 배열을 만들 수 있는지 알고 싶습니다. 원하는 카드 뭉치에서 카드를 순서대로 한 장씩 사용합니다. 한 번 사용한 카드는 다시 사용할 수 없습니다. 카드를 사용하지 않고 다음 카드로 넘어갈 수 없습니다. 기존에 주어진 카드 뭉치의 단어 순서는 바꿀 수 없습니다. 예를 들어 첫 번째 카드 뭉치에 순서대로 ["i", "drink", "water"], 두 번째 카드 뭉치에 순서대로 ["want", "to"]가 적혀있을 때 ["i", "want", "to", "drink", "water"] 순서의 단어 배열을 만들려고 한다면 첫 번째 카드 뭉치에서 "i"를 사용한..
-
[Parsing] Scrapy를 활용하여 웹 스크래핑 하기Project 2023. 7. 9. 00:44
Pyspider를 활용하여 크롤러를 구현해보려고 했으나, 왜 예시가 없나 했더니 코드도 구식이고 지금 시점에서 구현이 어려웠다...(공식문서에 자랑(?)했던 WebUI도 이제 지원하지 않는 듯) 그래서 대체재를 찾던 도중 Scrapy가 눈에 띄어 이것을 활용하여 만들어보기로 한다. +) 6년 전에 마지막으로 깃헙에 커밋된 코드라서, 자잘한 오류만 짚고 넘어가자면 gcd(최대공약수)를 구현하는데 math가 아닌 현재 지원하지 않는 fractions 모듈을 사용한다던가, 무차별적인 six 모듈에서 함수를 가져와 일일이 코드를 고치는 데 애를 먹기도 했고, pickle error가 자주 발생하기도 했다... 또한 인용하거나 따라해볼만한 튜토리얼 같은 문서가 부족하다 Scrapy? https://keyhyuk-..
-
7월 1주차 Error + Unknown 모음.Data Engineer 2023. 7. 8. 16:34
- six 모듈 : Six는 python2 및 3 호환성 라이브러리로, 유틸리티 기능을 제공한다. 두 Python 버전 모두에서 호환되는 Python 코드 작성을 목표로 Python 버전 간의 차이점을 매끄럽게 하기 위해 만들어졌다. Python 2.7 및 3.3 이상을 지원하며, 하나의 Python 파일에만 포함되어 있으므로 프로젝트에 쉽게 복사할 수 있다. https://six.readthedocs.io pyspider를 지금 뜯어보고 있는데 six 모듈은 위 설명과 같이 이전 파이썬 버전의 함수를 사용할 수 있게 해주는 모듈인 것 같다. - Python 상위/하위 폴더에 있는 파일 import 하기 파이썬에는 패키지 import 말고 내가 만든 파일을 불러 올 수 있다. 다음과 같은 문제는 깃헙에 ..
-
PySpiderProject 2023. 7. 8. 11:24
Pyspider는 웹 크롤링을 위해 개발된 모듈이다. 웹 크롤링에는 2가지 지켜야할 특성이 있다. 1. 100-200개의 웹사이트를 수집했을 시 그들은 온/오프라인에서 그들의 템플릿을 때때로 변화시킨다. - 우리는 웹사이트의 변화 여부를 확인하기 위해 강력한 감시도구가 필요하며, 각각의 웹사이트에 스크립트(템플릿)를 작성하게 해주는 좋은 도구가 필요하다. 2. 데이터는 반드시 웹사이트가 업데이트 되었을 때 5분 내로 수집되어야만 한다. - 다음과 같은 문제를 인덱스 페이지를 빈번하게 확인하고, 최근 업데이트 시간(혹은 최근 응답 시간)과 같은 것들을 사용해 페이지의 변화요부를 확인함으로써 해결하였다. 게다가, 우리는 빠진 부분이 없는지 확인하기 위해 x일 이후 페이지들을 재확인한다. Pyspider는 w..
-
23. 폰켓몬Programmers 2023. 7. 4. 08:53
문제 설명 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. 홍 박사님 연구실의 폰켓몬은 종류에 따라 번호를 붙여 구분합니다. 따라서 같은 종류의 폰켓몬은 같은 번호를 가지고 있습니다. 예를 들어 연구실에 총 4마리의 폰켓몬이 있고, 각 폰켓몬의 종류 번호가 [3번, 1번, 2번, 3번]이라면 이는 3번 폰켓몬 두 마리, 1번 폰켓몬 한 마리, 2번 폰켓몬 한 마리가 있음을 나타냅니다. 이때, 4마리의 폰켓몬 중 2마리를 고르는 방법은 다음과 같이 6가지가 있습니다. 첫 번째(3번), 두 번째(1번) 폰켓몬을 선택 첫 번째(3번), 세 번째(2번) 폰켓몬을 선택 첫..
-
웹 크롤링 데이터를 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에 미리 저장되어 있고, 게임 플레이 도중에 서버로부터..