2021/01/02 - [프로그래밍/Python] - [파이썬 크롤링] #1. 크롤링이란 무엇일까요?
2021/01/02 - [프로그래밍/Python] - [파이썬 크롤링] #2. 개발 환경 설치와 파이썬 기초
3번째 urllib을 알아보기 이전에
HTML에 대해서 알아보도록 하겠습니다.
HTML은 우리가 웹브라우저에 나타나는 화면을 말합니다.
아래와 같이 NAVER에 접속을 하면 우리 웹 브라우저에 화면이 나타죠?
웹 페이지 추출
urllib을 활용해서 웹 페이지 추출하기
이번에는 파이썬에서 표준 라이브러리 urllib를 사용해서 웹 페이지를 추출해보도록 하겠습니다.
표준 라이브러라고 하는 것은 파이썬에서 기본적으로 제공해주는 라이브러리 입니다. 별도의 설치가 필요 없기 때문에
바로 사용하시면 됩니다.
우선 urllib.request에서 urlopen함수를 사용해보도록 하겠습니다.
from urllib.request import urlopen
#urlopen 함수는 HTTPResponse 자료형의 객체를 반환
f = urlopen("https://www.naver.com")
print(type(f))
<class 'http.client.HTTPResponse'>
f를 프린트 해보면 urlopen 함수를 사용하면 HTTPResponse자료형 객체를 반환한 것을 확인 할 수 있죠.
이 클래스에서 read()라는 함수를 사용하면 실제 어떤 데이터들이 나올까요?
from urllib.request import urlopen
#urlopen 함수는 HTTPResponse 자료형의 객체를 반환
f = urlopen("https://www.naver.com")
data = f.read()
print(data)
... ><a href="https://help.naver.com/" data-clk="helpcenter">\xea\xb3\xa0\xea\xb0\x9d\xec\x84\xbc\xed\x84\xb0</a></li> </ul> <address class="addr"><a href="https://www.navercorp.com" target="_blank" data-clk="nhn">\xe2\x93\x92 NAVER Corp.</a></address> </div> </div> </div> </div> <div id="adscript" style="display:none"></div> </body> </html>\n'
출력해보면 urlopen 우리 화면에 나온 페이지의 HTML 코드가 리턴 된 것을 확인 할 수 있습니다.
그런데 HTTP 프로토콜은 urlopen하였을 때, 200이라는 상태값이 나와야만 정상적으로 출력이 됩니다.
혹시, 나타나지 않는 사람들은 f.status라고 값을 출력해보고 200이 잘 나오는지 확인을 해주세요. 200이 나오지 않는다면, 주소 값에 오류가 났을 경우가 있습니다.
from urllib.request import urlopen
#urlopen 함수는 HTTPResponse 자료형의 객체를 반환
f = urlopen("https://www.naver.com")
print(f.status)
PS C:\Users\PC\Desktop\Crawling> python .\3_urllib.py
200
그런데, f.read()를 해보면, 자료형이 bytes 자로형이므로 이를 HTML파일에 맞는 형태로 변환(디코딩)을 해줘야 합니다.
요즘에는 UTF-8로 나오기 때문에 값이 안나온다 싶으면 utf-8로 변환해 줍니다.
이번에는 네이버 영화에서 랭킹 내용들을 한번 가져와 보도록 하겠습니다.
from urllib.request import urlopen
#urlopen 함수는 HTTPResponse 자료형의 객체를 반환
f = urlopen("https://movie.naver.com/movie/sdb/rank/rmovie.nhn")
encoding = f.info().get_content_charset(failobj="utf-8")
print('encoding:', encoding)
text = f.read().decode(encoding)
print(text)
최종적으로 내가 가져온 데이터는 html 파일이기 때문에
html으로 저장을 해주면 페이지 전체를 크롤링 하는게 끝이 납니다.
PS C:\Users\PC\Desktop\Crawling> python .\3_urllib.py > movies.html
그러면 movies.html 파일이 생성 된것을 확인 할 수 있죠?!
데이터 추출하기
추출한 웹페이지에서 원하는 데이터 추출하기
그럼 여기서 데이터를 추출해보도록 하겠습니다.
'프로그래밍 > Python' 카테고리의 다른 글
[파이썬 크롤링] #4. 정규표현식 데이터 추출 (0) | 2021.01.14 |
---|---|
[파이썬 크롤링] #2. 개발 환경 설치와 파이썬 기초 (0) | 2021.01.02 |
[파이썬 크롤링] #1. 크롤링이란 무엇일까요? (0) | 2021.01.02 |
VS Code 단축키 전체 (0) | 2020.08.29 |
파이썬 언더바, 언더스코어가 이렇게 쓰인다? (0) | 2020.08.14 |