웹개발 3주차

웹개발 3주차

페이지크롤링과 mongoDB를 제어

파이썬 패키지 Requests 크롤링 패키지 bs4(beautifulsoup4) mongoDB 패키지 Pymongo,Dnspython,Certifi


크롤링 기본세팅

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')


//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)


beautifulsoup 내 select에 미리 정의된 다른 방법

//선택자를 사용하는 방법 (copy selector) soup.select('태그명') soup.select('.클래스명') soup.select('#아이디명')

soup.select('상위태그명 > 하위태그명 > 하위태그명') soup.select('상위태그명.클래스명 > 하위태그명.클래스명')

//태그와 속성값으로 찾는 방법 soup.select('태그명[속성="값"]')

//한 개만 가져오고 싶은 경우 soup.select_one('위와 동일')


pymongo를 이용한 mongoDB 사용

from pymongo import MongoClient import certifi

ca = certifi.where()

client = MongoClient('mongodb+srv://test:sparta@cluster0.20e3m.mongodb.net/?retryWrites=true&w=majority', tlsCAFile=ca) 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'})

JP
이중표Frontend Engineer

3년차 프론트엔드 개발자. Next.js, React, TypeScript 기반 웹 애플리케이션 개발 전문. 대규모 트래픽 환경에서 SSR·ISR 렌더링 전략 설계 경험.

이력서 보기