프로그래밍
-
CGV 필요한 데이터 파싱Web Crawler 2019. 11. 27. 20:43
이전에 셀레니움을 통해서 각 CGV 지역별 상영관 페이지에 대한 정보를 가져왔다. 이제부터는 가져온 페이지들을 반복문을 통해서 하나하나씩 페이지를 불러와서 필요한 정보만 파싱해오는 것을 할 것이다. 파싱할 페이지를 보니 파싱할 데이터가 있는 부분이 iframe 태그로 되어 있는 것을 확인 할 수 있다 니움을 통해서 각 CGV 지역별 상영관 페이지에 대한 정보를 가져왔다. 이제부터는 가져온 페이지들을 반복문을 통해서 하나하나씩 페이지를 불러와서 필요한 정보만 파싱해오는 것을 할 것이다. 파싱할 페이지를 보니 파싱할 데이터가 있는 부분이 iframe 태그로 되어 있는 것을 확인 할 수 있다 해당 iframe 태그는 현재 페이지에 새로운 페이지를 하나더 추가 할 수 있게 해주는 태그라는 것을 찾을 수 있었다...
-
크롤링 시작 ( 각 지역별 상영관 )Web Crawler 2019. 11. 27. 20:17
가장먼저 크롤링할 페이지를 보자 내가 크롤링 할 데이터는 서울에 속한 전 지역들의 상영 정보이다. 그러기 위해서는 해당 페이지의 네비게이션 바에 연결되있는 링크를 가져와야 한다. 하지만 해당 페이지는 JS로 바뀌기 때문에 Requests 를 통해서 응답을 받기에는 무리가 있음 -> Selenium 사용 위의 사진은 해당 네비게이션 바에 연결 된 링크의 위치이다. li 태그가 각 지역별로 존재하면서 해당 li 태그의 하위 태그인 a태그의 href 속성 값 으로 각 지역 페이지를 요청할 때 필요한 파라미터 값이 담겨져 있다 그렇다면 해당 속성 값을 불러와 URL 요청 양식에 맞게 요청을 한다면 원하는 페이지가 불러와질 것이다. from bs4 import BeautifulSoup from selenium i..
-
CGV 크롤러 (Requests & selenium)Web Crawler 2019. 11. 27. 19:54
크롤링을 할때 분명히 정확한 경로의 태그를 불어와도 none을 반환해주는 경우가 있음 이럴 경우에는 소스를 볼때 해당 태그가 소스에 없을 경우에 none을 출력함 이유를 알기 위해서는 아래의 방식 2가지의 차이점과 웹페이지에 대해 알고 있어야함 웹페이지는 HTML이라는 언어와 CSS, 자바스크립트라는 3가지 언어로 구성이 되어있음 HTML소스를 보는 방식 2가지의 차이점 1. 페이지 소스 메뉴를 통해 본 HTML은 웹서버로부터 받은 최초의 HTML이기 때문 + 이 페이지 소스 메뉴를 통해본 HTML소스의 구조는 자바스크립트로 인해 로딩 후에 변경될 수 있기 때문 EX ) 만약 페이지 소스 메뉴에는 있지만 개발자 도구에서 본 소스에 없는 경우에는 자바스크립트로 인해서 해당 내용이 지워진 경우라고 할 수 있..
-
C.G.V 영화 크롤러Web Crawler 2019. 11. 27. 13:54
가장 먼저 영화 정보를 크롤링하기 전에 정확히 크롤러가 어떠한 역할을 할 것 인지 확실히 정해두고 만들 필요가 있음 일단 시험 삼아 가장 먼저 서울권 에서만 1시간 단위로 모든 상영 정보를 불러오게 만들 것 임 내가 만들고 싶은 것 은 ? C.G.V 페이지에서 영화에 관한 정보를 불러오는 프로그램 해당 크롤러가 해야 할 일은? 6하 원칙에 맞게 누가 ? 크롤러가 언제 ? 1시간 간격 마다 어디서 ? C.G.V 강남 웹 페이지에서 무엇을 ? 영화 이름, 영화 상영관 위치, 영화 상영 시간, 상영관 잔여 좌석, 상영 날짜를 어떻게 ? Python 라이브 러리를 통해 ( requests, bs4 ) 데이터를 추출해서 왜 ? 불러온 정보를 최종적으로 DB에 담기 위해 내가 어떠한 프로그램을 만들지 생각을 정리 ..
-
계산기 만들기매일프로그래밍 2019. 11. 21. 16:47
파이썬 내장함수 eval을 사용하여 앞자리 숫자 부터 차례대로 연산하는 계산기 프로그램 만들기 user = input("숫자를 입력해 주세요") # 사용자에게 입력값 받기 def cc (user) : # 계산기 역할 함수생성 ls = [] # 입력값을 계산할 보드 los = 0 # 현재 연산자의 인덱스 위치 oper = ["+", "-", "/", "*", "="] # 연산자를 담는 배열 생성 if user not in oper : # 입력값중에 마지막에 = 이 없다면 추가 user = user + "=" for i,s in enumerate(user) : # 사용자 입력값을 하나씩 반복문으로 출력하면서 enumerate 함수로 해당 인덱스번호도 같이 출력 if s in oper : # 만약 사용자 입력..
-
N번째 피보나치 수 구하기매일프로그래밍 2019. 11. 21. 14:27
http:// 불러오는 중입니다... n = int(input()) a = 0 b = 1 count = 2 while count < n : if a == n : print(a) break elif b == n : print(b) break a = a + b count += 1 if count == n : print(a) b = b + a count += 1 if count == n : print(b) 피보나치 수를 보니 일정한 규칙이 있었음 0과 1로 시작해서 앞의 수와 뒤의 수를 계속 더해 나가는 것 이럴 경우 그렇다면 0과 1을 변수에 담고 계속해서 변수의 값을 증가시키면서 카운트를 한다면 n번째의 자리수를 구할수 있다고 생각 처음 0 과 1은 변수의 초기값으로 할당 했기 때문에 1번째와 2번째 자리..