스파르타코딩클럽 [웹개발] 3주차 (2)

Cho2andy·2022년 4월 2일
1

항해99

목록 보기
6/9
post-thumbnail
  1. 파이썬 기초 문법을 안다.

2. 원하는 페이지를 크롤링 할 수 있다.

  1. pymongo를 통해 mongoDB를 제어할 수 있다.

파이썬 패키지 설치
-> 파이썬에서 패키지 == 모듈을 모아 놓은 단위
-> 패키지의 묶음 =? 라이브러리

※venv??

-> virtual environment(가상 환경)
-> 같은 시스템에서 실행되는 다른 파이썬 응용 프로그램들의 동작에 영향을 주지 않기 위해, 파이썬 배포 패키지들을 설치하거나 업그레이드하는 것을 가능하게 하는 격리된 실행 환경.
-> 새 프로젝트를 실행할 때 위치탭에 venv파일이 잘 인식되어 있는지 확인해야 하는 이유

<requests 패키지 설치>

제대로 크롤링을 하기위해 pycharm 환경에서 pip(project interpreter)에 접근하여 패키지 설치
(출처: 스파르타코딩클럽)

<request 라이브러리 사용해보기>

<공공데이터 API로 써보기>

<임포트>

import requests 					# requests 라이브러리 설치 필요

r = requests.get('서울시 공기 데이터 API값 이었던 것')
rjson = r.json()

<API JSON에서 배열 추출 후 구 이름과 미세먼지량 추출>

gus = rjson['RealtimeCityAir']['row']

for gu in gus:
	print(gu['MSRSTE_NM'], gu['IDEX_MVL'])

<실제 웹페이지로 써보기>

https://movie.naver.com/movie/sdb/rank/rmovie.naver?sel=pnt&date=20210829

위 페이지에서 영화 순위 / 제목 / 평점 을 크롤링해보자.

bs4(beautifulsoup4) 패키지 추가 설치 후 임포트

<크롤링 기본 세팅>

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에서 select, select_one>

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

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

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

항상 정확하지는 않으나, 크롬 개발자도구를 참고할 수도 있습니다.

 1. 원하는 부분에서 마우스 오른쪽 클릭 → 검사
 2. 원하는 태그에서 마우스 오른쪽 클릭
 3. Copy → Copy selector로 선택자를 복사할 수 있음

(이미지 출처: 스파르타코딩클럽)

<결과>

profile
먹고 배우는 것엔 아끼지 말자구 ( ̄︶ ̄)↗

0개의 댓글