파이썬 패키지 설치
-> 파이썬에서 패키지 == 모듈을 모아 놓은 단위
-> 패키지의 묶음 =? 라이브러리
-> virtual environment(가상 환경)
-> 같은 시스템에서 실행되는 다른 파이썬 응용 프로그램들의 동작에 영향을 주지 않기 위해, 파이썬 배포 패키지들을 설치하거나 업그레이드하는 것을 가능하게 하는 격리된 실행 환경.
-> 새 프로젝트를 실행할 때 위치탭에 venv파일이 잘 인식되어 있는지 확인해야 하는 이유
제대로 크롤링을 하기위해 pycharm 환경에서 pip(project interpreter)에 접근하여 패키지 설치
(출처: 스파르타코딩클럽)
<임포트>
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로 선택자를 복사할 수 있음
(이미지 출처: 스파르타코딩클럽)
<결과>