학습 내용 요약
- 크롤링 기초
- 데이터베이스 기초
1) 크롤링(crawling)이란?
웹스크래핑이라고도 하는데, 웹 페이지를 그대로 가져와서 거기서 데이터를 추출하는 행위이다. 웹상의 데이터를 긁어와서 여러 중간 작업을 거쳐 필요한 부분만 뽑아쓰는 일련의 과정이다.
2) 사용법
(1) 패키지 설치
작업을 수행하려면 관련 패키지 즉, 외부 라이브러리를 설치해야 한다. 크롤링 관련 패키지 중 대표적인 것은 requests와 BeautifulSoup이다.
(2) 사용법
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('url',headers=headers)
# HTML을 BeautifulSoup 라이브러리로 검색하기 용이한 상태로 만듦
# soup이라는 변수에 "파싱 용이해진 html"이 담긴 상태가 됨
soup = BeautifulSoup(data.text, 'html.parser')
# 선택자를 사용하는 방법
soup.select('tag명')
soup.select('.class명')
soup.select('#id명')
soup.select('상위tag명 > 하위tag명 > 하위tag명')
soup.select('상위tag.class명 > 하위tag명.class명')
# 태그와 속성값으로 찾는 방법
soup.select('tag명[속성=값]')
# 하나만 가져오고 싶은 경우
soup.select_one('tag명[속성=값]')
# 해당 태그가 있는 부분의 텍스트만 가져오고 싶은 경우
soup.select('tag or class명 등').text
항상 이 작업을 할 때는 웹페이지에서 '검사'와 같은 개발자도구를 통해 태그들을 살펴보는 것이 중요하다. 그래야 가져오고 싶은 데이터가 있는 부분을 명확하게 파악하고 그 부분을 추출할 수 있기 때문이다.
선택자는 다음과 같이 쉽게 복사해와서 쓸 수 있다.
① 원하는 부분에서 마우스 우클릭 > 검사
② 원하는 태그에서 마우스 우클릭
③ Copy → Copy selector로 선택자 복사
1) 데이터베이스(DB)란?
(1) 정의
여러 데이터를 정한 공간에 규칙에 따라 저장하는 공간이다. 데이터베이스를 쓰는 이유는 데이터를 잘 정리하기 위해서보다 나중에 잘 찾아서 쓸 수 있도록 저장하는 것이다.
(2) 유형
RDBMS
NoSQL
2) 사용법
(1) 기본 세팅
지금 공부 중인 과정에서 파이참과 mongoDB 클라우드(Atlas)를 쓰고 있어서 이를 예로 설명해보자.
(2) DB 연결
from pymongo import MongoClient
client = MongoClient('mongodb+srv://username:password@cluster0.arwbv.mongodb.net/Databasename?retryWrites=true&w=majority')
db = client.dbsparta
- username: DB의 Username
- password: DB에서 설정한 비밀번호
- Databasename: DB 이름
(3) DB 조작
# 저장 - 예시
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'})
어렵거나 완전히 이해 못한 내용
크롤링 기초 작업과 데이터베이스 연결하는 과정, 데이터 CRUD는 이해하고 수행할 수 있다. 하지만, 크롤링 할 때 원하는 데이터를 가져올 태그를 적절히 끊어서 넣는 것이 아직은 어려운 편이다. 크롤링을 여러번 하면서 html 코드가 눈에 익혀지도록 더 들여다보는 연습이 필요하다.