TIL 200304

조양권·2021년 5월 17일

TIL

목록 보기
9/24

1. 오늘

  • 로컬에서 서버의 db에 접속하는데에 성공했다.
  • aws의 ec2서버에 db가 저장되어 있었는데, ubuntu를 서버라고 착각해 ubuntu의 ip에서 db를 호출하니 되지 않았다.
client = pymongo.MongoClient("mongodb://my server ip(ec2):27017")
  • 위와같은 한줄변경으로 호출에 성공했다.
  • ubuntu는 linux의 배포판 os이고, 내가 db를 설치해두었던 ec2의 인스턴스란것은 하나의 가상컴퓨터 같은것이다.
  • 인스턴스는 추상화된 개념 혹 클래스 객체, 컴퓨터 프로세스등과 같은 템플릿이 실제로 구현된 것을 의미한다. 해당 클래스의 구조로 컴퓨터 저장공간에서 할당된 실체를 의미하기도 한다.
  • 여기서 클래스는 속성과 행위로 구성된 일종의 설계도이다.
  • requests로 크롤링 해온 페이지의 한글이 깨지는 현상을 수정했다.
url = 'https://directg.net/game/game_thumb.html?page=' + str(page_number)
response = requests.get(url)
#여기서 두줄의 코드만 추가했다.
response.raise_for_status()
response.encoding = None#인코딩추측을 허락하지 않은것
#response.encoding = 'euc-kr'#한글 인코딩
html = response.text
  • requests 에서 웹 호출을 진행한 후 결과는 Response 객체에 담기게 되는데, Response의 text 속성은 str 클래스 타입으로서 보통 requests 모듈에서 자동으로 데이타를 인코딩해 준다.
  • 즉, requests는 HTTP 헤더를 통해 결과 데이터의 인코딩 방식을 추측하여 Response 객체의 encoding 속성에 그 값을 지정하고, text 속성을 접근할 때 이 encoding 속성을 사용한다. 만약 인코딩 방식을 변경해야 한다면, text 속성을 읽기 전에 Response의 encoding 속성을 변경하면 된다.
  • api를 페이지네이션하는데에 성공했다.
sort_page = request.args['page']
sort_page = int(sort_page)
if sort_page in range(1,100):
#대략 예상범위로 100을 주었다. 개선의 여지가 있어보인다.
    result_db = intermediate_db.skip((sort_page-1)*8).limit(8)
else:
    result_db = intermediate_db

한페이지에 8개의 정보만 출력하도록 했다.

  1. 사이트
    인스턴스와 클래스의 공부에 도움이 되었던 사이트

클래스와 인스턴스란?

profile
할 수 있는 것이 늘어나는 즐거움

0개의 댓글