전체 글(476)
-
279일차 - 애니메이션 정보 업데이트
업데이트 알고리즘부터 만들어야겠다. 업데이트 로그파일을 통해서 크롤링을 완료했으니까 이제 업데이트 파일을 체크하고 수정해야한다. 마지막으로 업데이트 엑셀파일과 애니메이션 정보 엑셀파일을 합치고 기존 업데이트 엑셀파일의 이름을 바꿔 줄 예정이다. 결과 (2000년 1분기 업데이트, 시트 2762 ~ 2771)
2021.10.04 -
278일차 - 애니메이션 데이터 수집 및 가공 (3)
우선 크롤링은 모두 끝났다. 이제 데이터 가공에 들어가야한다. 0. 문제확인 1. 문자열 치환 2. 중복 제거 3. 장르(Genre)를 제외한 나머지 태그(Tag)로 이동 결과 가공까지 완료했으니, 내일 업데이트 부분 끝내면 이제 앱개발에 들어가야겠다.
2021.10.03 -
277일차 - 애니메이션 데이터 수집 및 가공 (2)
후.. 어제 8시간을 좀 넘게 크롤링해서 다 채워놨다. 이제는 2차 크롤링을 해야한다. 이것도 오래 걸릴 것 같다 후..;; 오늘도 크롤링하는데에 하루를 보낼것같다 에효..
2021.10.02 -
276일차 - 애니메이션 데이터 수집 및 가공 (1)
공백인 부분은, 장르들을 제외하고 전부 태그로 넘기면서 장르가 없고, 태그만 있는 데이터들은 공백처리가 되었다. 이부분은 직접 위치를 찾아서 고쳐줘야할 것 같다. 애니 업데이트하려고 분기별 데이터 모아놓은 곳 찾고있었는데.. https://anime.onnada.com/ 분기별 신작 애니메이션 정보 anime.onnada.com 이런 사이트가 있었네.. 애초에 여기서 크롤링했으면 됬을텐데 하..;; 다시금 정보의 중요성을 깨닫는다. 일단 위 사이트에서 다시 애니정보 크롤링해서 엑셀파일 만들고, 기존 엑셀파일과 합쳐야겠다. 이정도 양이면.. 그냥 여기서 크롤링해서 쓸걸그랬다ㅋㅋㅋ 음.. 어차피 경험치도 쌓였으니까 다시 크롤링해야겠다. 1. 애니마에서 애니 제목, 장르, 방영일 크롤링 및 대표이미지 다운로드..
2021.10.01 -
275일차 - 크롤링 데이터 가다듬기 (4)
오늘은 시간이 많이 없다. 얼른 후딱 끝내보자!! 우선 전체 엑셀파일에서 중복 데이터를 제거한 장르 목록을 뽑아보자. 결과 '군사', '재난', '요괴 호러', '왕도', '시간여행', '군상극', '히어로', '사극', '농구', '슬래셔', '슬랩스틱', '역사 마법', '시골', 'SF의 모험', '모험 메카', '유도', '도박', '액션 스릴러', '일상드라마', '코미디 메카', '백합', '19금', '일상 치유', '슬픔', '여행', '블랙 코미디', '양키', '뱀파이어', '메카', '학원', '과자', '장편 드라마', '회귀', '스파이 미스터리', '코미디의 판타지', '던전', '마법 모험', '브로맨스', '루프', '혼고 미츠루', '오컬트', '전쟁', '야쿠자', '스릴..
2021.09.30 -
274일차 - 크롤링 데이터 가다듬기 (3)
1. 감독 이름 제거 2. delete 적힌 부분 중점적으로 제거 3. 장르 큰 틀로 나눈 후, 나머지 태그로 이동 노가다 중이다.. 코드로 작업할 수 있는건 최대한 해놨고, 일단 육안으로 체크해서 수정하고나서 각 장르마다 카운트세서, 리스트형식으로보고 이상한거 있는지 최종 체크해놓고 태그로 이동시켜야겠다.. 끝이 보인다.. 육안으로 노가다하는건 끝이고 내일은 로직짜서 컴마(,)를 기점으로 split해서 리스트 set형식으로 만든 다음에, 이상한거 있나 없나 체크하고 이상한것들 다 모아서 if in으로 위치 찾아서 수정해주면 데이터는 끝이다. 이제 이걸로 개발하면된다 후..;; 앞으로는 크롤링에는 손을 잘 안댈것같다. 사이트 1군데에서 하거나 양식이 비슷비슷하면 편할 것 같은데, 이번에 한거는 어우..;..
2021.09.29 -
273일차 - 크롤링 데이터 가다듬기 (2)
후우.. 오늘은 눈이 좀 아플 것 같은 날이다. 노가다를 해야한다. 1. 감독 이름 제거 2. delete 적힌 부분 중점적으로 제거 3. 장르 큰 틀로 나눈 후, 나머지 태그로 이동 이 무슨 노가다란 말이요..ㅠㅠ
2021.09.28 -
272일차 - 크롤링 데이터 가다듬기
1. 중복 데이터 제거 2. 치환 3. 공백 검색 후 채우기 하아.. 내일은 육안으로 찾아야겠다. delete 적어놓은 부분들 중심으로 삭제하고, 몇몇개에 감독 이름 들어가있는데, 그거 없애고, 장르만 큰 틀로 추출한다음에 나머지는 태그로 다 빼야겠다.
2021.09.27 -
271일차 셀레니움(Selenium) - 츄잉 크롤링
이제 빈 공백을 채울려고했는데, 검색하다보니 츄잉이라는 곳도 애니메이션 정보를 제공하길래, 여기서 장르를 뽑아오려고 크롤링중이다. 아무래도, IP차단 걱정도 있고 해서, 천천히 크롤링중인데, 시간이 좀 걸릴 것 같다. 오늘 하루는 크롤링 돌려놓고 내일 빈 공백들 찾고, 중복 제거해야할 것 같다. 이제 정말 많이 찼다. 공백인 부분은 제목에 하자가 있어서 그런것같다. 따로 채워줘야할듯.. 후.. 크롤링만 몇일째인지.. 정보수집이 꽤 오래걸린다. 크롤링 했던 시간만 따져도 최소 10시간은 될 것 같다. 시행착오가 너무 많았다ㅠㅠ
2021.09.26 -
270일차 셀레니움(Selenium) - 구글 크롤링
이렇게 해도 공백이 존재한다. 구글링을 해도 나오지 않는 건, 직접 검색해봐야할 것 같다. 이상하게 크롤링 된 부분은 육안으로 찾아서 1차 수정. 중복된 부분은 set함수를 사용해서 지울 예정. 일단 나머지 애니들도 전부 크롤링을 해야겠다.
2021.09.25 -
269일차 셀레니움(Selenium) - 나무위키 크롤링 (2)
애니메이션 추천을 위해서 장르를 크롤링하고있는데, 나무위키를 통해서 추출하고있다. 근데, 장르 자체가 안적혀있는 경우도 많아서, 그런 경우는 공백 처리를하고 공백인 애니는 구글링을 통해 장르를 채워 볼 생각이다. 제작년도와 대표이미지도 구글링을 통해 채울 생각이다. 대표이미지는 구글링을통해서 이미지를 다운받아서 저장할 생각이다. 이미지 용량이 생각보다 크다면, 최적화할 방법도 찾아볼 생각이다. 태그같은경우에는, 유저가 직접 입력하거나 수정하는 방향으로 가려고 한다. 자기전에 스크립트로 남은 데이터들 전부 크롤링 돌려놔야겠다.
2021.09.24 -
268일차 셀레니움(Selenium) - 나무위키 크롤링 (1)
소스코드는 단순한데.. 은근 시간이 오래걸린다.. 숙련도가 낮아서 그런가보다. 시행착오를 계속 하고 있는 중이다. 이제 저 코드를 통해서 엑셀파일 a, b, c ... 을 만들고, 그에 따라서 상세 내용들을 링크를 통해 크롤링해서 채우는 형식으로 할 예정인데.. 처음에는 링크를 하이퍼링크로 주고, 텍스트를 링크로 바꿨더니 value값이 제대로 안떨어지고 재가공을 해줘야하는 귀찮음이 생겨서 그냥 생짜 링크주소로 박아넣었다. 그리고, 지금 계속 시간을 허비한게, 클라우드플레어(cloudflare)인데, 얘는 셀레니움을 통해서 크롤링을 할 때, url의 변동이 있으면 디도스로 인식해서 인증을 해야지만 크롤링을 할 수 있게 만든다. 헤더를 줘도 안되고, 새 탭을 만들어서 해도 안되고.. 그렇다고 시간을 길게잡아..
2021.09.23 -
267일차 스크래피(Scrapy) - 지마켓(Gmarket) 전체 카테고리 상품 크롤링
오늘은 개발하는 순서대로 적어보려고 한다. 지마켓 카테고리별 전체 상품 크롤링 1. gmarket_category.py 2. scrapy shell로 크롤링 데이터 확인 scrapy shell https://corners.gmarket.co.kr/Bestsellers response.css('div.gbest-cate ul.by-group li a').getall() 3. gmarket_category.py 수정 4. items.py 수정 5. pipelines.py 수정 6. settings.py 수정 7. gmarkget_category.py 수정 8. CSV 파일로 저장
2021.09.22 -
266일차 스크래피(Scrapy) - 지마켓(Gmarket) 크롤링
크롤러(spider) 작성 1. items.py 작성 크롤링하고자 하는 데이터를 아이템(item)으로 선언해줘야 함 클래스를 만들고, scrapy.item을 상속받고, 아이템 이름을 만들고, scrapy.Field()를 넣어줘야 함. 2. gmarket.py 수정 yield 명령어로 아이템(item)에 저장할 수 있다. 아이템 클래스 생성 및 아이템 저장 선언 from 프로젝트이름.items import 아이템클래스명 클래스 생성 item = 아이템클래스명() 아이템 저장 item['아이템명'] = 아이템데이터 yield item 3. 데이터 포맷으로 아이템 저장 csv, xml, json 포맷 - scrapy crawl {크롤러명} -o {저장할 파일명} -t {저장포맷} # 한글 문자가 깨질 경우 -..
2021.09.21 -
265일차 스크래피(Scrapy) - 환경 설정 및 기초
스크래피(Scrapy) # 참고 : 스크래피(Scrapy)는 프레임워크이다. (사용방법 숙지하고 규칙에 따라줘야함) 특징 크롤링을 좀 더 안정적으로 할 수 있다. -> 스크래피 내부에서 다양한 안전장치가 있다. 크롤링을 좀 더 빠르게 할 수 있다. -> 크롤링 프로그램을 동시에 여러개 실행시켜서 많은 양의 데이터 크롤링 시, 시간을 단축시킬 수 있다. 다양한 크롤링 관련 기능 -> 크롤링한 데이터를 다양한 포맷으로 저장 가능하다. 사용방법 실제 크롤링할 스파이더(spider, scrapy 기반 크롤링 프로그램) 생성 크롤링할 사이트(시작점)와 크롤링할 아이템(item)에 대한 selector 설정 크롤러 실행 설치 - pip install scrapy 또는 - pip install --upgrade se..
2021.09.20 -
264일차 셀레니움(Selenium) - XPATH를 활용한 페이스북(Facebook), 트위터(Twitter) 로그인
# XPATH 참고 사이트 https://wkdtjsgur100.github.io/selenium-xpath/ (python) selenium에서 xpath를 이용해 크롤링 하기 selenium으로 특정 element를 가져올 때, 가져오고 싶은 element가 다른 element 안에 있을 경우에 그 특정 element를 쉽게 가져올 수 있는 방법 중 하나인 xpath를 사용해 element를 가져오는 방법에 대해서 작 wkdtjsgur100.github.io / : 절대경로를 나타냄 // : 문서내에서 검색 //@href : href 속성이 있는 모든 태그 선택 //a[@href='http://google.com'] : a 태그의 href 속성에 http://google.com 속성값을 가진 모든 태..
2021.09.19 -
263일차 셀레니움(Selenium) - 다음 뉴스 댓글 크롤링
# 참고 사이트 https://www.selenium.dev/selenium/docs/api/py/webdriver/selenium.webdriver.common.action_chains.html?highlight=move_to_element#selenium.webdriver.common.action_chains.ActionChains.move_to_element selenium.webdriver.common.action_chains — Selenium 3.141 documentation selenium.webdriver.common.action_chains The ActionChains implementation, class selenium.webdriver.common.action_chains.Act..
2021.09.18 -
262일차 셀레니움(Selenium) - 다음 뉴스 크롤링
[ 크롤링할 뉴스 기사 ] https://news.v.daum.net/v/20210916215439825 출시 1년된 카카오워크, 누적 가입자 45만 돌파 (지디넷코리아=임유경 기자)카카오엔터프라이즈(대표 백상엽)는 출시 1주년을 맞은 카카오워크의 누적가입자가 45만 명을 돌파했다고 16일 밝혔다. 카카오엔터프라이즈에 따르면 동원그룹, GC news.v.daum.net [ 다음 뉴스 크롤링 ] head 태그 관련 : get_attribute("text") body 태그 관련 : text 1. daum_title.py 2. 결과 크롤링은 보면 알겠지만, 코드가 길지 않다. 대신에, 정확하게 가져오기 위해서 제대로 지칭해줘야 한다. 예전에 웹을 개발해보기 전에는 그냥 그렇구나 하면서 크롤링을 익혔었는데, 웹..
2021.09.17 -
261일차 - 팬텀JS (phantomJS), 헤들리스 크롬(Headless Chrome)
글 적다가 이미지 올리는데 화면이 멈춰서 10분정도 기다리다가 못참고 새로고침했는데.. 다 날라갔다. 짜증나니까 대충 적을 예정이다. 팬텀 JS는 백그라운드에서 웹테스트 하는 드라이버이고, 헤들리스 크롬은 셀레니움을 사용해서 옵션값을 통해 백그라운드에서 테스트하게 하는 방법이다. [ 팬텀 JS ] 1. phantom_setting.py 2. test.py 3. 테스트 결과 UserWarning: Selenium support for PhantomJS has been deprecated, please use headless versions of Chrome or Firefox instead warnings.warn('Selenium support for PhantomJS has been deprecated..
2021.09.16 -
260일차 - 셀레니움(Selenium)
셀레니움(Selenium) : 웹을 테스트하기 위한 프레임워크(FrameWork) 오늘부터 셀레니움을 집중적으로 공부할 생각이다. 위에 적혀있는대로 셀레니움은 프레임워크(FrameWork)이며, 내가 셀레니움의 규칙에 맞춰서 개발을 해야한다. 프레임워크는 익히는 시간이 라이브러리보다 훨씬 길지만, 강의를 통해서 그 시간을 단축시키고 원하는 기능만 사용해서 개발을 해보려고 한다. [ 셀레니움 설치 ] 1. pip install selenium 2. 웹드라이버 인스톨 : 웹 테스트 자동화를 위해 제공되는 툴 ( 각 브라우저 및 OS별로 존재 ) selenium : 테스트 코드를 사용하여 브라우저에서의 액션을 테스트할 수 있게 해주는 툴 파이어폭스, 크롬드라이버 등 각 브라우저마다 웹드라이버 다운로드 가능 크..
2021.09.15 -
259일차 - 간단한 일기
어제 매복 사랑니 발치하고 오늘 백신 맞았는데.. 도저히 뭔가를 할 수 있는 상태가 아니다..;; 1. 인프런 강의 참고 https://www.inflearn.com/course/crawling-scrapy-selenium/dashboard 현존 최강 크롤링 기술: Scrapy와 Selenium 정복 - 인프런 | 강의 데이터 과학, 빅데이터, 크롤링을 익히고자 하시는 분들을 위해 - 현존하는 최신, 최고의 크롤링 기술을 다양한 예제로 빠르게 익힐 수 있도록 꾸몄습니다., 온오프라인 2만명 수강! 현존 최강 www.inflearn.com 2. 셀레니움(Selenium) https://www.selenium.dev/ Selenium Selenium automates browsers. That's it! w..
2021.09.14 -
258일차 SWA - 데이터 수집 계획
나는 무작정 개발하는 것보다는 어느정도 계획을 세우고 그 계획에 맞춰서 개발하는 것을 선호한다. 지금 애니메이션 추천을 위한 데이터 수집을 해야하는데, 해본적이 없으니.. 일단 머릿속에 떠오르는대로 계획을 세우고 진행해봐야겠다. 서버가 받아야 할 정보 : 장르, 태그 등등의 옵션 사용자가 받고 싶은 정보 : 애니메이션 제목 크롤링을 하기 위해서는 어떻게 진행해야 할까..? 음.. 엑셀 파일이 어떤 형식이면 좋을까..? 애니메이션 제목 대표 이미지 장르 태그 제작년도 위와 같은 형태면 괜찮지 않을까? 1. 애니메이션 제목 https://namu.wiki/w/%EC%9D%BC%EB%B3%B8%20%EC%95%A0%EB%8B%88%EB%A9%94%EC%9D%B4%EC%85%98/%EB%AA%A9%EB%A1%9..
2021.09.13 -
257일차 - SWA 개인 프로젝트 시작 전, 생각 정리
SWA.. 그냥 소프트웨어, 웹사이트, 앱의 줄임말이다ㅋㅋㅋ 매번 길게 적는게 귀찮아서 그냥 SWA라고 칭하려고 한다. 어차피 나만 알면 되니까.. 이번 개인 프로젝트는 소프트웨어, 웹사이트, 앱 모두 연동해서 개발해보려고 한다. 그 전에 간단한 계획을 세워보자! 생각도 정리해야하고! 우선순위도 생각해봐야한다.. 프로젝트 이름 미정 주 기능 애니 추천 (+ 소설 추천) 소프트웨어 파이썬, PyQt5 웹 장고, 리액트 앱 안드로이드, 코틀린 우선순위 1. 소프트웨어 2. 앱 3. 웹 우선 크롤링 기능이 필요할 것 같다. 음.. 기능을 생각해보면 로그인이나 회원가입은 필요없고. 웹이나 앱이나 결국 크롤링을 하기 위해서는 서버에서 크롤링을 돌려서 결과값을 줘야할 것 같은데.. 서버에서 크롤링하면 시간이 너무 ..
2021.09.12 -
256일차 리액트(React) - 트위터 웹사이트 완성
https://kwongeneral.github.io/0912_React_Twitter/#/ React App kwongeneral.github.io 배포 설정 1. package.json 수정 2. 파이어베이스 승인된 도메인 추가 3. 파이어베이스 보안 정책 수정 4. 비밀키 보안 설정 전체 소스코드 1. package.json 2. App.js import {useEffect, useState} from "react"; import React from "react"; // import AppRouter from "components/Router"; import AppRouter from "./Router"; import { authService } from "../fbase"; function App..
2021.09.11 -
255일차 리액트(React) - 트위터 웹사이트 (3)
1. 파일 첨부 및 사진 미리보기 - Home.js 2. 사진 저장 기능 - npm install uuid (고유 식별자를 만들어주는 라이브러리) - fbase.js - 파이어베이스 파일 저장 확인 3. 프로필 - 파이어베이스 색인 생성 - Profile.js - Navigation.js - Router.js - App.js
2021.09.10 -
254일차 리액트(React) - 트위터 웹사이트 (2) : 본격적인 시작
1. fbase.js 수정 2. App.js 수정 3. 파이어베이스 로그인 방법 설정 4. Auth.js 수정 - 회원가입 성공 여부 확인 5. 파이어베이스 로그인 유지 (setPersistence) 및 크롬 로그인 여부 확인 local : 웹 브라우저를 종료해도 로그인 유지 session : 웹 브라우저의 탭을 종료하면 로그아웃 none : 새로고침하면 로그아웃 6. 리액터에서 DB 데이터 활용 시, 주의해야 할 점 리액트의 비동기는 값을 가져오는 시간을 기다려 주지 않는다. 위의 코드를 보면, 딜레이가 없을 경우에는 null값을 가져오고, 딜레이를 2초로 걸었을 때는 값이 잘 넘어온다. 이를 주의해서 알고리즘을 짜야할 것 같다. 7. useEffect ( 특정한 시점에 실행되는 함수 ) 파이어베이스 ..
2021.09.09 -
253일차 리액트(React) - 트위터 웹사이트 (1) : 환경 설정
1. 리액트 프로젝트 생성 및 쓸데없는 파일 제거 2. 파이어베이스 프로젝트 생성 3. 파이어베이스 라이브러리 설치 4. 파이어베이스 설정 5. env 파일 설정 6. Router, Auth, EditProfile, Profile, Home 파일 생성 및 설정 - Router.js - Auth.js - EditProfile.js - Profile.js - Home.js 7. 훅스(Hooks) -> 함수 컴포넌트는 상태 관리를 위해 훅스를 사용한다. - 훅스를 위한 useState 함수의 역할 훅스를 사용하려면 useState 함수를 사용하면 된다. 이 함수는 인자로 [상태, 상태 관리 함수 이름]와 같은 형태의 배열을 입력 받는데, 입력 받은 상태와 상태 관리 함수를 짝지어 준다. 대충 [변수명, 변수값..
2021.09.08 -
252일차 - 현재까지 리액트(React) 느낀 점 정리
1. 리액트는 간편하지만, 지켜야할 규약이 좀 있다. 또한, 리액트 관련 라이브러리에 대한 정보를 살펴봐야 할 필요가 있을 것 같다. 2. 리액트에서는 함수나 클래스를 통틀어서 컴포넌트라고 부르는 것 같다. 함수형 컴포넌트, 클래스형 컴포넌트라고 부르는 걸로 보니. 3. State는 동적 변수를 정의하기 위한 약속인데, 이를 사용하기 위해서는 클래스형 컴포넌트를 사용해야 하며, React.Component를 상속받아야 한다. 그리고 state를 사용하기 위한 약속이 있는데 이는 아래와 같다. state = { 변수명: 변수 타입에 따른 값, } 4. 리액트에서 클래스 내부에 함수를 선언할 때는, const나 function을 붙이지 않는다. 형식에 맞춰서 알고리즘을 작성하고 render를 통해서 필요에 ..
2021.09.07 -
252일차 - 리액트(React) : 영화 평가 웹사이트 완성
라이브러리 설치 목록 axios react-router-dom prop-types gh-pages https://kwongeneral.github.io/0907_React_Movie/ Kwonputer React : Movie kwongeneral.github.io State 책 : 스테이트는 동적 데이터를 다룰 때 사용한다. 동적 데이터란 말 그대로 변경될 가능성이 있는 데이터를 말한다. Props는 이런 데이터들을 다루지 못한다. State는 좀 익숙한게, SwiftUI로 앱을 만들 때, 동적 데이터는 전역변수로 State로 선언했었기 때문이다. State로 선언하지 않으면 앱이 빌드될 때, 메모리에 미리 올라가서 값 변경이 이뤄지지 않았다. Swift는 그런 구조였다. 생각해보면, Text 입력값을..
2021.09.07 -
251일차 리액트(React) - 영화 평가 웹사이트 (3) : 본격적인 시작
환경 설정 1. 리액트 생성 2. package.json 파일 수정 package.json에서 scripts 키 값을 수정한다. scripts에 있는 명령어는 start, build, test, eject인데, 이 중에서 test와 eject는 사용하지 않을 예정이니까 삭제한다. 3. npm start (로컬 개발서버 열기) 4. public & src 파일 훝어보기 - favicon.ico : 웹페이지를 열었을 때, 최 상단 탭에 표시되는 아이콘 - index.html : 예제 템플릿 - logo.svg logo192.png logo512.png : 아이콘 - robots.txt : 크롤링 허용 비허용 설정하는 파일로 보임. - manifest.json : 웹페이지 기본값 설정으로 보임. 아이콘 및 제..
2021.09.06