Python & 웹스크래핑

한가연·2021년 7월 21일
0

python을 시작했다. 일년 전쯤에 python을 공부했었는데 한동안 터치를 안 했더니 다 까먹었다😅 그래도 한번 해서 그런지 쉽게 따라갔다. java랑 비교했을 때 python이 훨씬 유연하다는 것을 느꼈다. 학교로 따지면 java는 규칙이 많은 학교고 python은 학생들을 풀어놓는 학교랄까? ㅋㅋㅋㅋㅋ 둘다 장단점이 있다.

What I learned:

1. Python에서 'Package Module'은 기능을 묶은 단위이다. 즉, 라이브러리 이다.

2. 가상환경(virtual environment) 은 격리 된 실행 환경이다. 같은 시스템에서 다른 버전의 Python을 쓸 수 있게 프로젝트 별로 패키지를 담을 수 있는 공구함 같은 거다.

3. Requests Library
이 library를 사용할려면 먼저 설치를 하고 import를 해야 한다

import requests # requests 라이브러리 설치 필요
r = requests.get('URL입력')
rjson = r.json()

4. Crawling - using beautifulsoup4 package
bs4를 쓰려면 먼저 그 package를 설치하고 기번 세팅을 해야 한다.

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.nhn?sel=pnt&date=20200303',headers=headers)
# HTML을 BeautifulSoup이라는 라이브러리를 활용해 검색하기 용이한 상태로 만듦
# soup이라는 변수에 "파싱 용이해진 html"이 담긴 상태가 됨
# 이제 코딩을 통해 필요한 부분을 추출하면 된다.
soup = BeautifulSoup(data.text, 'html.parser')

이렇게 하면 준비 끝!

Crawling을 쓸 수 있는 방법 두가지가 있다; select / select_one

# select를 이용해서, tr들을 불러오기
movies = soup.select('#old_content > table > tbody > tr')
# 한 개만 가져오고 싶은 경우
soup.select_one('#old_content > table > tbody > tr')

Copy selector를 이용해 선택자를 쓸 수 있다

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

TIP 😉
태그 안의 텍스트를 찍고 싶을 땐 → 태그.text
태그 안의 속성을 찍고 싶을 땐 → 태그['속성']

profile
코딩하는 드라마러버

0개의 댓글