패키지란?

모듈을 모아 놓은 단위로, 패키지의 모음은 라이브러리로 볼 수 있다.

이런 패키지를 돌리는 하나의 격리된 실행 환경을 가상 환경이라고 한다.

 

request 패키지

일종의 Ajax 역할을 하는 패키지로, API 데이터를 추출할 때 사용되며

대개 크롤링/스크래핑을 할 때 많이 사용한다.

사용 예

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

r = requests.get('http://spartacodingclub.shop/sparta_api/seoulair')
rjson = r.json()

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

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

1. request 패키지의 get 함수를 사용해서 api 정보를 받아온다.

2. 받아온 api 정보를 json형식으로 파싱한다.

3. 파싱된 정보에서 내가 원하는 값을 추출하고 돌린다.

 

beautifulsoup 패키지

html 파싱을 통해 필요한 부분이 어디에 있는지를 파이썬 콘솔에서 찾고,

브라우저의 콘솔창에서 카피셀렉터를 통해 정확한 위치를 찾은 뒤, split으로 잘라서

soup.select 등으로 필요한 부분만 가져오면 된다.

사용 예

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

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

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

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

그래서 결국 어떻게 원하는걸 가져오느냐?

카피셀렉터를 통해 만약 찾아낸 title의 주소가 old_content>table>tbody>tr:~~~ > td.title>div>a일때

import requests
from bs4 import BeautifulSoup

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)

soup = BeautifulSoup(data.text, 'html.parser')

movies = soup.select('#old_content > table > tbody > tr')

for movie in movies:
    a_tag = movie.select_one('td.title > div > a')
    if a_tag is not None:
        print (a_tag.text)

이렇게 영화 제목만을 딸 수 있다.

+ Recent posts