파이썬 기초문법, 웹사이트 크롤링, mongoDB 에 대해서 공부했다
타 사이트의 실시간 데이터 수집(크롤링)을 통해 데이터를 수집하고 수집된 데이터를 mongoDB에 저장하는 등 활용할 수 있을것같다.
기존 mySQL DB 보다 훨씬 가볍고 변형이 자유로운것 같은 느낌이다..
파이썬의 for문은 신기하게 생겼다.
기존 자바스크립트와는 다르게 별도로 for문의 형태를 정의해 주지 않아도 fruits의 크기만큼 i값을 1개씩 상승시키며 리스트 내의 모든 데이터를 print 해준다..
fruits = ['사과','배','감','귤']
for fruit in fruits:
print(fruit)
# 사과, 배, 감, 귤 하나씩 꺼내어 찍힙니다.
함수 또한 function 이 아닌 def로 작성하며 별도의 괄호 지정이 없기때문에 들여쓰기에 주의해야한다.
더불어 조건문(if)에서도 마찬가지이다.
def is_adult(age):
if age > 20:
print('성인입니다') # 조건이 참이면 성인입니다를 출력
else:
print('청소년이에요') # 조건이 거짓이면 청소년이에요를 출력
is_adult(30)
# 무엇이 출력될까요?
먼저 파이썬에서 크롤링을 하기위해서는 패키지 설치가 필수이다.
맥의 경우 파이참 상단 파이참 클릭후 preference 클릭 후 python인터프리터 에서 '+' 메뉴로 들어가 신규패키지 추가 가능..
'request' 패키지를 사용할 경우 JSON 데이터를 활용하는데 유용하다.
또한 웹페이지 크롤링을 위해서 bs4(BeautifulSoup) 패키지를 추가로 설치하여 준다.
그리고 하기 처럼 기본 셋팅을 해주면 크롤링 준비 끝
import requests
from bs4 import BeautifulSoup
# 타겟 URL을 읽어서 HTML를 받아오고,
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('<https://movie.naver.com/movie/sdb/rank/rmovie.naver?sel=pnt&date=20210829>',headers=headers)
# HTML을 BeautifulSoup이라는 라이브러리를 활용해 검색하기 용이한 상태로 만듦
# soup이라는 변수에 "파싱 용이해진 html"이 담긴 상태가 됨
# 이제 코딩을 통해 필요한 부분을 추출하면 된다.
soup = BeautifulSoup(data.text, 'html.parser')
#############################
# (입맛에 맞게 코딩)
#############################
bs4를 사용하여 크롤링을 할때 내가 원하는 값을 가져오기 위하여 하기 순서대로 작성이 필요하다.
1. 해당값에 우클릭 '검사' 로 들어간뒤 copy->copy selector 로 tr값 확인 !
2. 다음 순번 값과 비교
3. 변하지 않는 부분을 soup.select() 로 지정 및 정의
4. for 문 내에 3.select_one 을 사용하여 3번에서 추려진 데이터 내에 다시한번 원하는 데이터 찾아내기
5. 활용
import requests
from bs4 import BeautifulSoup
# URL을 읽어서 HTML를 받아오고,
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('<https://movie.naver.com/movie/sdb/rank/rmovie.naver?sel=pnt&date=20210829>',headers=headers)
# HTML을 BeautifulSoup이라는 라이브러리를 활용해 검색하기 용이한 상태로 만듦
soup = BeautifulSoup(data.text, 'html.parser')
# select를 이용해서, tr들을 불러오기
movies = soup.select('#old_content > table > tbody > tr')
# movies (tr들) 의 반복문을 돌리기
for movie in movies:
# movie 안에 a 가 있으면,
a_tag = movie.select_one('td.title > div > a')
if a_tag is not None:
# a의 text를 찍어본다.
print (a_tag.text)
데이터 베이스
mongoDB
강의에서는 클라우드 환경의 mongoDB를 활용했다.
하기는 mongoDB 내 기본 조작 함수들
# 저장 - 예시
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'})
'개발일지' 카테고리의 다른 글
안드로이드 프로그래밍 - 화면전환(가로,세로) (0) | 2022.11.07 |
---|---|
안드로이드 프로그래밍 - TouchEvent, KeyEvent (0) | 2022.11.06 |
자바 문법 뽀개기 1-1~15강 (0) | 2022.10.02 |
웹개발 왕초보 4주차 개발일지 (0) | 2022.09.27 |
웹개발 종합반 -2주차 (0) | 2022.09.08 |