크롤링 (5), beautifulsoup4로 네이버 기사 크롤링하기 네이버 랭킹 뉴스 페이지가 개편되어 해당 코드로 기사를 가져올 수 없습니다. 해당 코드는 참고용으로만 봐주시기 바랍니다. (JY) 융합연구 1 - 크롤링 (4), beautifulsoup4로 네이버 기사 크롤링하기 dsbook.tistory.com 네이버 랭킹 뉴스만 볼 수 있던 페이지가 전면적으로 개편되면서 위 게시글에서 작성한 코드를 사용했을 때 뉴스를 가져올 수 없었다. 그래서 이번에 개편된 랭킹 뉴스 페이지를 기반으로 새롭게 크롤링하는 코드를 작성해보았다. 랭킹 뉴스 페이지에서 이전처럼 정치, 경제, 사회, 과학 등 분야별로 따로 나누어서 게시글을 찾아볼 수 없었다. 대신 각 언론사별로 많이 본 뉴스와 댓글이 많은 뉴스를 나누어서..
데이터 분석 & 시각화 검색 결과
SQL이란? Structured Query Language의 줄임말로, 관계형 데이터베이스 시스템(RDBMS)에서 자료를 관리 및 처리하기 위해 설계된 언어입니다. 1970년대 IBM에서 최초 개발되었으며 데이터를 저장하는 모든 회사에서 NoSQL과 함께 많이 쓰고 있습니다. SQL 문법의 종류 SQL 문법은 크게 DDL, DML, DCL로 나누어집니다. DDL(Data Definition Language, 데이터 정의 언어) - 관계형 데이터베이스의 구조를 정의하기 위해 사용하는 언어(ex - CREATE, ALTER, DROP...) DML(Data Manipulation Language, 데이터 조작 언어) - 테이브렝서 데이터를 입력, 수정, 삭제, 조회하는 언어(SELECT, INSERT, UP..
1차원 ndarray Numpy의 기본 자료형 ndarray의 기본적인 인덱싱과 슬라이싱은 List 객체와 동일하다. x1 = np.array([ 1, 3, 5, 7, 9]) x1[0] # 1 x1[3] # 7 x1[-1] # 9 x1[-2] # 7 x1[1:3] # [3, 5] 2차원 ndarray 2차원 리스트 배열에서의 indexing은 x[i][j] 형태로 가능한 것처럼, 2차원 ndarray 배열에서의 indexing은 x[i, j] 형태로 가능하다. 이때 i는 행, j는 열을 의미한다. 먼저 np.random.random로 (10, 5) 크기의 ndarray를 생성한다. x2 = np.random.random(size = (10, 5)) x2 기본적으로 ndarray 객체를 인덱싱을 할 경우,..
Numpy Numpy는 파이썬으로 데이터를 분석할 때 가장 많이 사용하는 모듈 중 하나이다. Numpy의 자료형은 ndarray로 효율적인 배열 연산을 하기 위해 개발되었다. 리스트와 ndarray는 유연성과 효율성 측면에서 비교할 수 있다. 파이썬 리스트의 경우, 서로 다른 자료형을 담을 수 있어 유연성이 높은 반면 각 요소의 정보를 따로 담아야 하기 때문에 반복문 사용이 필수적이라 효율성이 떨어진다. ndarray의 경우 같은 자료형만을 이용해 구성할 수 있어 유연성은 떨어지지만 모든 요소 정보를 한 번에 저장하고 C로 구현된 내부 반복문을 사용하기 때문에 속도가 매우 빠르다. 배열 만들기 : np.array() 리스트를 활용해 배열을 만들 수 있다. 이 외에, array() 함수의 인자로 리스트, ..
import cv2 import numpy as np import matplotlib.pyplot as plt Contours Feature img = cv2.imread('cropped.jpg') img_copy = img.copy() img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) res, thr = cv2.threshold(img_gray, 127, 255, cv2.THRESH_BINARY) contours, _ = cv2.findContours(thr, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) cnt = contours[1] cv2.drawContours(img_copy, [cnt], -1, (0, 255, 0), 2) plt...
import cv2 import numpy as np import matplotlib.pyplot as plt Contour Features 1. Contour Approximation (Contour 근사) cv2.findContours 함수를 통해 찾은 Contours line에는 각각의 Contours point를 가지고 있다. 보통은 이 Point를 drawContours 함수를 이용하여 Line을 그리게 된다. 이 때 우리가 지정한 정밀도에 따라 Point의 꼭짓점의 수를 줄여가면서 기존의 Contours line에 근사한 line을 그릴 수 있다. 이 Point의 수를 줄이는데 Douglas-Peucker 알고리즘을 사용한다. cv2.approxPolyDP(curve, epsilon, clos..
import cv2 import numpy as np import matplotlib.pyplot as plt Contours Contour는 동일한 색 또는 동일한 픽셀값(강도, intensity)을 가지고 있는 영역의 경계선 정보이다. 물체의 윤곽선, 외형을 파악하는데 사용된다. openCV의 findContour 함수로 이미지의 Contour 정보와 Contour 계층구조(hierarchy) 정보를 출력한다. 흑백 이미지 또는 이진화된 이미지에만 적용할 수 있다. findContours 함수로 반환받는 Contour 값은 Contour를 구성하는 점들로 이루어진 배열의 리스트로 len(contours)로는 hierarchy의 갯수를, len(contours[i])로는 각각의 hierarchy를 이루..
import cv2 import numpy as np import matplotlib.pyplot as plt Contour Contour는 등고선이라는 뜻으로 같은 값을 가진 곳을 연결한 선이라고 생각하면 된다. 이미지에서 Contours는 동일한 색 또는 동일한 강도를 가지고 있는 영역의 경계선을 연결한 선이다. 물체의 모형 분석이나 객체 감지 및 인식 알고리즘에 주로 사용하는 툴이다. 1. 정확도를 높이기 위해 주로 Binary 이미지를 사용한다. 그래서 Contours를 찾기 전에 threshold나 Canny 경계선 탐지 등을 이미지에 먼저 적용한다. 2. cv2.drawContours() 함수는 원본 이미지를 직접 수정하기 때문에, 원본 이미지를 보존하려면 copy() 함수를 사용해야 한다. ..
import cv2 import numpy as np import matplotlib.pyplot as plt 이미지 피라미드 (Image Pyramids) 이미지의 스케일(scale)과 해상도를 조절하는 작업으로 동일한 이미지를 가지고 여러 다양한 크기로 조절하여 작업할 필요가 있을 때도 있다. 예를 들어 이미지에서 사람의 얼굴과 같이 객체에서 특정한 무언가를 탐색하려고 할 때가 대표적이다. 우리가 확보한 얼굴 이미지가 있다고 가정하자. 다른 이미지에서 이 얼굴과 동일한 이미지를 탐색한다고 할 때, 우리가 가진 이미지에서 얼굴 크기와 다른 이미지에서 보이는 얼굴 크기가 다를 수 있다. 이럴 경우에는 탐색 대상 이미지의 해상도를 다단계로 만들어 각 단계에서 얼굴을 탐색하면 좀 더 나은 결과를 보일 수 있..
import cv2 import numpy as np import matplotlib.pyplot as plt Canny Edge Detection 경계선 검출 방식에서 가장 많이 사용하는 알고리즘이다. 일반적으로 경계선 검출기는 잡음에 매우 민감한 특성을 가지고 있다. 따라서 잡음으로 인해 잘못된 경계선을 계산하는 것을 방지하기 위해 개발 된 알고리즘이다. Canny 알고리즘은 다음의 5가지 단계를 거친다. 1. Gaussian Filter로 이미지의 잡음을 제거한다. 2. Sobel Filter를 사용하여 Gradient의 크기(intensity)를 구한다. 3. Non-maximum suppression을 적용하여 경계선 검출기에서 거짓 반응을 제거한다. 4. 경계선으로써 가능성 있는 픽셀을 골라내..
최근댓글