웹개발 3주차 개발일지

Python>

파이썬 문법은 익숙하므로 앞 기초 공부는 생략!
Java와는 다르게 파이썬은 문법의 {} 대신에 :를 쓴다는 것과 for i in range 꼴을 상기해두자.

파이썬의 라이브러리(패키지)는 매우 방대하다.
즉, 패키지 설치 = 외부 라이브러리 설치
가상환경(Virtual Environment)은 같은 시스템에서 실행되는 다른 파이썬 응용프로그램의 동작에 영향을 주지 않기 위해서, 파이썬 패키지를 설치하거나 업데이트 하는 것을 가능하게 하는 격리 환경이다.

pycharm에서 다른 사람이 만든 패키지를 쉽게 다운받을 수 있다.

import requests

r = requests.get('api')
rjson = r.json()

이렇게 requests 라이브러리를 호출한 다음 ajax를 매우 간단하게 사용할 수 있다.

크롤링(스크래핑)>

웹페이지를 크롤링하기 위해서는 bs4라는 라이브러리가 필요하다.
인터넷에서 전송받아 가져온 데이터를 컴퓨터가 솎아내는 방식이다.

import requests
from bs4 import BeautifulSoup

headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
data = requests.get('URL',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')

headers는 페이지가 거부한 파이썬 크롤링을 브라우저에서 실행한 것처럼 속인다.
하나의 select 영역을 가져오는 방법은 다음과 같다.

Chrome에서 가져올 부분을 우클릭하여 Inspect에서 html을 선택한다. 해당 html 부분을 우클릭하여 Copy > Copy Selector를 클릭한다. 그리고 다음의 코드를 작성한다.

soup.select_one('#old_content > table > tbody > tr:nth-child(2) > td.title > div > a')

코드의 맨 뒤에 .text를 붙이면 text를 뽑아온다. ['href']를 붙이면 코드를 뽑아온다.

여러 select 영역을 가져올 때는, 중복되는 부분을 지우고 작성한다.

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

여러 select 영역에서 하나씩 찾을 때는 다음과 같이 쓴다.

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

for tr in trs:
    a_tag = tr.select_one('td.title > div > a')
    print(a_tag)

select 영역에 None 데이터가 있을 수도 있다. 그럴 경우 if문을 사용하여 제거한다.

for tr in trs:
    a_tag = tr.select_one('td.title > div > a')
    if a_tag is not None:
        print(a_tag)

내부 요소를 꺼내기 위해 ['']을 사용할 있다.

DB>

DataBase는 Data를 잘 사용하기 위해 이용하는 저장고와 같다.
SQL(ex: MySQL)과 NotOnlySQL(ex: MongoDB)의 두 가지 종류가 있다.
SQL은 EXCEL과 유사하다. Data 저장 방식이 정형화되어 있어 갑자기 중간에 하나를 더하기는 어렵지만 Data의 일관성이나 분석에 용이하다.
NOSQL은 DICTIONARY와 유사하다. 자유로운 형태의 Data 저장에 유리하지만 일관성이 부족할 수 있다.

MongoDB>

파이썬에서 사용하기 위해 pymongo 라이브러리를 설치한다.

from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta

위 코드는 localhost에서 dbsparta라는 DB에 접속한다.

.insert : 데이터 삽입, .find : 데이터 찾기, .update : 데이터 업데이트, .delete : 데이터 삭제

아래는 DB 안의 users라는 collection에 doc를 insert 하는 코드다.

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

아래는 id를 무시하고 age가 21인 dictionary를 find 하는 코드다.

same_ages = list(db.users.find({'age':21},{'_id':False}))

전체가 필요한 경우 {} 내부를 공백으로 두면 된다.
하나만이 필요한 경우 다음과 같이 쓴다.

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

아래는 name을 찾아서 age를 19로 update 하는 코드다.

db.users.update_one({'name':'bobby'},{'$set':{'age':19}})

name이 bobby인 Data를 전체 업데이트할 때는 update_many를 사용한다.

아래는 name을 찾아서 delete 하는 코드다.

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

이것 또한 name이 bobby인 Data를 전체 삭제할 때는 delete_many를 사용한다.

DB에서 #은 수, ""는 문자열을 나타낸다.

좋은 웹페이지 즐겨찾기