221021 TIL

·2022년 10월 20일
0
post-thumbnail

localhost:5000 Error

mac m1을 사용하고 있다.
파이썬으로 내 컴퓨터를 로컬호스트로 돌려보고자 localhost:5000을 실행해보았는데 실행이 안 되었다. (다음엔 에러 내용 꼭 남기기)

해결방법은 시스템 환경설정 - 공유 - AirPlay 수신 모드 << 를 해제 하니 localhost:5000이 정상적으로 실행되었다.

brew 설치 오류

발생 에러 : $ brew install node ==> Searching for similarly named formulae... Error: No similarly named formulae found. It was migrated from homebrew/cask to homebrew/core

해결 방법 : brew의 코어 디렉터리를 삭제 후, 다시 설치

rm -fr $(brew --repo homebrew/core)
출처: https://logger.one/entry/brew-install-사용시-No-similarly-named-formulae-found-에러-처리-방법 [Logger ONE:티스토리]

설치가 완료되었는지 확인 해보기

node -v

MongoDB 데이터 삽입 오류

발생 에러 : NameError : name 'db' is not defined

해결 방법 : title에 .text를 붙히지 않아서 불필요한 태그 정보들까지 db에 불필요한 값이 들어가 있어서 그런 것 같음.
title.text로 작성 후, 재실행하니 정상적으로 데이터 업로드가 되었음.

** MongoDB 네트워크 설정에 add ip address - 0.0.0.0추가 하기. 장소가 변경되거나, 와이파이가 변경되어도 접속하는데 어려움이 있을 수 있기 때문.

파이썬 문법 및 라이브러리

from pymongo import MongoClient
MongoDB와 연결

client = MongoClient('url'(* 연동시킬 DB url 기입), tlsCAFile=ca)
db = client.dbsparta (db + 연동시킬 db이름)
사용하고 있는 인터넷 환경에 따라 보안 관련 추가설정을 해준 상태. certifi가 보안 관련 패키지다.

사용하고 있는 인터넷 환경에 따라 보안 관련 추가설정을 해준 상태. 보안관련 패키지 import certifi
ca = certifi.where()

db = client.dbsparta 연동시킬 데이터베이스

저장 - 예시

doc = {'name':'bobby','age':21}
db.users.insert_one(doc)

한 개 찾기 - 예시

user = db.users.find_one({'name':'bobby'})

여러개 찾기 - 예시 ( _id 값은 제외하고 출력)

all_users = list(db.users.find({},{'_id':False}))

바꾸기 - 예시

db.users.update_one({'name':'bobby'},{'$set':{'age':19}})
 ({조건},{수정값})

지우기 - 예시

db.users.delete_one({'name':'bobby'})

BeautifulSoup 쓰는 방법

#old_content > table > tbody > tr:nth-child(15) > td.title > div > a
#old_content > table > tbody > tr:nth-child(11) > td.title > div > a

movies = soup.select('#old_content > table > tbody > tr')

리스트 형태는 반복문으로 돌려야한다.

> 반복문 for a in b:
해석 : b안에서 각각의 a를 끝까지 돌려 실행해라

> ifif a_tag is not None: (== if a_tag != None)
해석 : a_Tag가 None이 아니라면,

> for movie in movies:
    title = movie.select_one('td.title > div > a')
    if title is not None: # == if a != None
        rank = movie.select_one('td:nth-child(1) > img')['alt']
        star = movie.select_one('td.point').text
        doc = {
            'title': title.text, 
            'rank': rank,
            'star': star
        }
        db.movies.insert_one(doc)
        # print(rank,star,title.text)
        # .text를 안 붙히면 title의 불필요한 태그들 까지 들어가기 때문에, db에 들어가지 않는다. 순수 text만 db에 넣어주기 위하여 .text 붙혀주기.

# text[0:2] , .strip()이란?

text[0:2] 해석 : 앞에서 두 글자만 끊기.
.strip()이란? : 옆에 여백이 있다던가, 다른 글씨도 나온다던가 할 때 **_파이썬 내장함수인 strip()_**을 사용하면 여백과 글자를 없애줌.
![](https://velog.velcdn.com/images/hui0725/post/61a1565d-b632-41f0-98ec-3b26aec4fb1d/image.png)




Beautifulsoup 사용방법(아래)
![](https://velog.velcdn.com/images/hui0725/post/b2fdda0d-349b-4f7b-a36a-2af9cb8e8857/image.png)

API

APT는 은행 창구와 개념이 같음. 예금 창구에서도 고객이 개인이냐, 기업이냐에 따라 처리하는 방법이 다름.

클라이언트가 요청할 때도, '방식'이 존재한다.
HTTP 통신 규약을 따르는데, 클라이언트는 요청할 때 HTTP request method(요청 메소드)를 통해서 어떤 요청 종류인지 응답하는 서버 쪽에 정보를 알려줌.

GET

1. 통상적으로 데이터 조회(Read)를 요청할 때.
예시 ) 영화 목록 조회

2.데이터 전달 : URL 뒤에 물음표를 붙혀 key=value로 전달. (딕셔너리 형태) 예시 ) google.com?q=북극곰

POST

1. 통상적으로 데이터 생성(Create),변경(Update),삭제(Delete)를 요청할 때.
예시 ) 회원가입, 회원탈퇴, 비밀번호 수정

2.데이터 전달 : 바로 보이지 않는 HTML body에 key:value형태로 전달.

0개의 댓글