들어가며
항해99 0주차 테스트를 위해 듣는 웹개발 종합반 강의를 정리하고자 한다.
Q. 그런데 왜 3주차부터 시작하는가?
1, 2주차의 강의 내용은 이미 지난 6개월간의 학원 수강기간동안 들은 내용이기도 하고 프로젝트를 진행하면서 질리도록 사용해본 것들이라 굳이 듣지 않고 빠르게 파이썬 강의로 넘어가고자 한번 훑어보는 식으로 듣고 지나갔다. 간단한 html/css와 Javascript/JQuery는 구글링으로 충분히 익힐 수 있는 내용이기도 하니 시간을 아끼기로 했다!
JAVA만 사용하다가 파이썬을 사용하려니 사용법이 조금씩 달라서 헷갈린다. 중괄호 ( {}
)를 쓰지 않는 대신 콜론( :
)을 쓰며, 탭을 엄격히 지켜야한다거나 세미콜론( ;
)은 사용하지 않는다는 점 때문에 자꾸 빨간줄이 뜬다. 이건 갈 수록 익숙해지겠지!
Python 기초 문법
if문이든 for문이든 들여쓰기를 잊지 말자. 파이썬은 들여쓰기가 중요한 문법이다
if문 - elif문 - else문
if 조건문:
실행문
elif 조건문:
실행문
else:
실행문
for문
for 변수 in 리스트:
return
패키지(라이브러리) 사용하기 : requests
requests : ajax랑 비슷하게 동작하는 패키지
import requests # requests 라이브러리 설치 필요
r = requests.get('가져올 링크')
rjson = r.json()
웹스크래핑(크롤링) 기초
bs4(beautifulsoup4) 패키지 설치 (파이참)
(Mac) pycharm > preferences... > project:프로젝트명 > Python interpreter > + 클릭 후 원하는 패키지 검색 > 설치
크롤링 해보기
크롤링 기본 코드
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')
#############################
# (입맛에 맞게 코딩)
#############################
셀렉터 하나만 가져오기
크롤링 할 사이트에 들어가서 원하는 부분을 오른쪽 클릭 > 검사탭으로 띄운다.
→ 크롤링 할 태그 부분 클릭 후 copy > copy selector
→ 코드에 붙여넣는다.
title = soup.select_one('복사해 온 태그')
예시
title = soup.select_one('#old_content > table > tbody > tr:nth-child(2) > td.title > div > a')
print(title)
결과
<a href="/movie/bi/mi/basic.naver?code=186114" title="밥정">밥정</a>
메서드로 태그의 원하는 값만 꺼내올 수도 있다.
예시
print(title.text)
print(title['href'])
결과
밥정
/movie/bi/mi/basic.naver?code=186114
셀렉터 여러개 가져오기
예시
moives = soup.select('가져올 공통 태그')
결과
movies = soup.select('#old_content > table > tbody > tr')
print(movies)
출력을 해보면 select한 태그가 붙은 모든 태그가 출력되는 걸 확인할 수 있다.
여기서 원하는 값을 가져오려면 for문에 돌려서 위에서 쓴 select_one() 메서드를 사용하여 뽑아내면 된다.
예시
movies = soup.select('#old_content > table > tbody > tr')
for movie in movies:
a = movie.select_one('td.title > div > a')
if a is not None:
print(a.text)
결과
밥정
그린 북
가버나움
디지몬 어드벤처 라스트 에볼루션 : 인연
원더
베일리 어게인
...(생략)
마치며
파이썬도 역시나 가벼운 호흡으로 지나갈 수 있었다.
java를 공부하다가 파이썬을 보니 되게 직관적인 언어구나 하는걸 체감할 수 있었다.
다음에는 파이썬도 더 깊게 공부해봐야겠다.
참고
https://hanamon.kr/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-sql-vs-nosql/
'Study > TIL' 카테고리의 다른 글
[TIL] 5/11 항해99 3일 차 - 미니프로젝트 (0) | 2022.05.12 |
---|---|
[TIL] 05/10 항해99 2일 차 - 미니프로젝트 (0) | 2022.05.10 |
[TIL] 05/09 항해99 1일 차 - 미니프로젝트 (0) | 2022.05.10 |
[TIL] 04/10 항해99 웹개발 종합반 0주 차 : 사전준비 - Flask (0) | 2022.04.10 |
[TIL] 04/08 항해99 웹개발 종합반 0주 차 : 사전준비 (2) - DB (0) | 2022.04.08 |