프로그래밍

크롤러를 개발하다 보면 가장 중요한 부분은 불법 요청자로 판별되어 차단을 당하지 않는 것이다. 해당 웹 서버에 부담이 되는 많은 요청은 지양을 하는 것이 좋지만, 비즈니스를 위해 필요할 경우가 많다. 그럴 경우에 사용할 수 있는 방법 하나를 공유하고자 한다. User-Agent란 유저 에이전트는 웹 크롤러와 같은 웹 클라이언트가 서버에 HTTP 요청을 보낼 때 함께 보내는 정보이다. 해당 요청이 어떤 종류의 소프트웨어나 애플리케이션에서 온 것인지를 식별하기 위해 사용하고, 적합한 응답을 제공한다. 브라우저의 종류와 버전 : 예) Chrome/94.0.4606.81 등 운영체제 정보 : 예) windows10, macOS, Linux 등 디자이스 종류 : 모바일 장치인지 데스크톱 컴퓨터인지 식별 유저 에이..
오늘의 목표는 두 개의 이미지의 유사도를 반환해 낼 거다. 1. 히스토그램 비교 가장 일반적인 방법인 히스토그램은 이미지의 각 픽셀 값의 빈도를 나타내는 그래프로, 픽셀 값들의 분포를 알 수 있다. import cv2 import numpy as np # 이미지 불러오기 img1 = cv2.imread('image1.jpg') img2 = cv2.imread('image2.jpg') # 히스토그램 계산 hist1 = cv2.calcHist([img1], [0, 1, 2], None, [256, 256, 256], [0, 256, 0, 256, 0, 256]) hist2 = cv2.calcHist([img2], [0, 1, 2], None, [256, 256, 256], [0, 256, 0, 256, 0,..
이미지 분석을 위한 첫걸음으로 opencv를 사용해보고자 한다. opencv는 이미지를 처리하는 오픈소스 라이브러리이다. 전체 목표는 이미지를 읽어와서 그레이스케일한 후 유사도를 반환할 것이다. 천천히 시작해 보자!! pip install opencv-python 코드를 작성하고자 하는 환경에 opencv를 설치한다. import cv2 as cv print(cv.__version__) # 4.9.0 버전이 반환된다면 아주 잘 설치가 된 것이다!! import cv2 as cv img = cv.imread("path/to/image") cv.imshow("Display window", img) k = cv.waitKey(0) # 다른 키를 누를 때 까지 이미지 보여주기 이렇게 하면 이미지를 읽어와서 보여..
테이블 제약 조건 제약조건은 데이터의 무결성을 지키기 위해 제한하는 조건으로, 테이블에는 기본키,외래키 같은 제약조건을 설정할 수 있다. 제약 조건.. 데이터의 정합성을 위해 필요한 조건이지만 잘 활용하지 못하면 개발자들 기준에서는 귀찮을 수도 있는 조건이다. (데이터 삭제나 수정이 마음대로 안되기 때문에) 그래서 꼭 필요한 부분이 있다. 바로 ON DELETE 절을 추가하는 것이다. DELETE ON 1. 종류 on delete no action -- 기본값 on delete restrict -- 트랜잭션과 연관 on delete cascade on delete set null on delete set default 2. on delete caseade 부모 테이블에서 어떤 외래키를 삭제하면, 그 외래..
ec2환경에서 PostgreSQL을 세팅하는 방법에 대해 알아보자. ec2환경이면 RDS를 써도 되지 않아? 왜 굳이 세팅해?? 라고 한다면 각각의 장단점이 있는데, RDS - 장점 : AWS에서 거의 모든 기능을 관리해주기 때문에 사용하는 입장에서 편리하다. - 단점 : 비싸다... 과금이 상당히 잘 된다고 한다. DB 직접 세팅 - 장점 : RDS에 비해 훨씬 저렴하다. - 단점 : 데이터베이스 관리에 대한 부담이 있다. 지금 나의 상황은 시작하는 서비스이기 때문에 과금이 부담스럽고, DB 관리하는 과정이 도움이 될 것 같기 때문에 직접 세팅하는 것을 선택했다. 1. PostgreSQL 설치 # 설치 가능한 pg버전 확인하기 apt show postgresql # 14버전 설치하기 sudo apt i..
로그인할 shell 명령어를 변경해주어야 한다. chsh 지금은 /bin/sh로 되어있었고 바꿀 값을 입력해 준다. /bin/bash 이제 방향키도 잘 먹고 기존에 $로 되어있었는데 내가 알던 모습으로 변경 완료✨
데이터프레임의 특정 컬럼의 값을 일괄 변환해야할 일이 있을 때 apply()함수를 사용하게 된다. 1. 기본 문법 # 라이브러리 호출 부분 생략 def calc_ratio(row): """검색량 계산""" standard_volumn = row['standard_volumn'] standrad_ratio = row['standard_ratio'] ratio = row['ratio'] volume = standard_volumn*ratio/standard_ratio return volume # 데이터프레임 생성 부분 생략 result_df['volume'] = result_df.apply(calc_ratio, axis=1) df.apply부분을 보면 되는데, 변환하고자하는 부분을 함수로 작성하여 파라미터로..
사이트를 크롤링할 때 소스코드 내부에 있는 데이터를 json으로 파싱 하려고 할 때 잦은 에러를 마주한다... 1. 너무 JSON형식이 맞는데 처음부터 안 되는 경우 requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0) response_text = response.content.decode('utf-8') -> 응답받은 content or text를 디코드 해준다. 2. 잘가져온거 같은데 중간에서 자꾸 에러가 나는 경우 ValueError: Expecting , delimiter: line 1 column 532 (char 531) try: result_data = json.loads(result_data) excep..
seojeon9
'프로그래밍' 카테고리의 글 목록