코드들은 github에 업로드되어있습니다.
https://github.com/JaeYeongSong/Blog/tree/main/Crawling
오늘은 새로운 분야에 들어가 보도록 하겠습니다.
오늘은 크롤링(Crawling)을 알아보도록 합시다.
먼저 크롤링이란 무엇일까요? 크롤링이란? '데이터를 수집하고 분류하는 것'입니다.
많은 사람들이 크롤링이랑 스크래핑이란 헷갈려합니다.
스크래핑은 '인터넷에서 존재하는 데이터를 컴퓨터 프로그램을 통하여 자동화된 방법으로 웹에서 데이터를 수집하는 작업'이라는 뜻이기 때문에 스크래핑은 데이터를 수집한다는 뜻이고, 크롤링은 더 나아가 데이터를 분류한다는 것에 가장 큰 차이점이 있는 것 같습니다.
자 그럼 본론으로 들어와서 우리는 오늘 스크래핑과 비슷한 것처럼 데이터를 수집해보겠습니다.
그럼 코드를 들고 오도록 하겠습니다.
from bs4 import BeautifulSoup
import requests
# 홈페이지 주소 가져오기
url = "https://search.naver.com/search.naver?where=news&sm=tab_jum&query=뉴스"
html = requests.get(url)
bs_html = BeautifulSoup(html.content, "html.parser")
print(bs_html) # 웹 페이지 출력
▲ Crawling.py
이 코드는 가장 기본적인 크롤링 코드입니다.
from bs4 import BeautifulSoup
import requests
bs4와 requests를 import 해줍니다.
그다음 크롤링할 웹 사이트를 가지고 옵니다.
url = ""
url 함수에 자신이 크롤링할 웹 사이트 주소를 붙여 넣어주시면 됩니다.
html = requests.get(url)
bs_html = BeautifulSoup(html.content, "html.parser")
그다음 html 함수에 requests.get(url)을 이용해서 리소스나 정보를 요청합니다.
그 다음 bs_html 함수로 html 콘텐츠를 받습니다.
print(bs_html) # 웹 페이지 출력
print(bs_html)로 웹 페이지의 코드를 출력합니다.
저는 현재 네이버 뉴스에 '뉴스' 라고 검색하면 생기는 웹 페이지를 크롤링해보도록 하겠습니다.
한 번 작동시켜 보도록 하겠습니다.
Crawling.py를 실행시켜 보시면 터미널 창에 이렇게 크롤링 한 내용이 보입니다.
근데 터미널 창에 내용이 나오면 터미널을 종료시켜 버리면 크롤링 한 내용이 보이지 않게 되죠.
그럼 웹 페이지를 크롤링하는 걸 응용시킬 때 크롤링 내용을 저장시키려면 어떻게 해야 할까요?
웹 페이지를 크롤링 한 결과값을 저장하는 방법에 대해 같이 알아봅시다.
from bs4 import BeautifulSoup
import requests
import sys
# 홈페이지 주소 가져오기
url = "https://search.naver.com/search.naver?where=news&sm=tab_jum&query=뉴스"
html = requests.get(url)
bs_html = BeautifulSoup(html.content, "html.parser")
sys.stdout = open('Save_Crawling.txt', 'w', encoding='UTF-8')
print(bs_html) # 웹 페이지 txt 파일로 출력
▲ Save_Crawling.py
위 코드에 대해 설명을 드려야겠죠?
이 코드는 웹 페이지를 크롤링 한 결과값을 txt 파일로 저장할 수 있는 코드입니다.
여기서 아까 전에 알려드린 Crawling.py 코드와 다른점이 무엇인지 아시나요?
아까전에 했던 설명을 또 할 필요가 없다고 느끼기 때문에 Crawling.py와 다른 부분을 들고 와 보도록 하겠습니다.
import sys
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sys.stdout = open('Save_Crawling.txt', 'w', encoding='UTF-8')
▲ Save_Crawling.py 중 Crawling.py와 다른 부분
처음에 sys를 import 해주겠습니다.
왜냐하면 파일을 저장하려면 sys 라이브러리가 필요하기 때문이죠.
그다음에 아래로 내려오면 sys.stdout 라는 함수를 정의해줬는데 여기서 총 3개의 인자를 받습니다.
open('', '', )
여기서 첫 번째로 저장할 파일명과 이름을 받습니다.
만약에 Test라는 이름을 가진 txt 파일로 만들려면 'Test.txt' 라고 적어주시면 됩니다.
그다음 두 번째로 파일 열기 모드에 대해 받습니다.
r | 읽기모드 - 파일을 읽을 때 사용 |
w | 쓰기모드 - 파일에 내용을 쓸 때 사용 |
a | 추가모드 - 파일에 새로운 내용을 추가 시킬 때 사용 |
▲ sys 파일 열기모드
파일 열기 모드는 총 3가지로 이루어져 있습니다.
위에 표에 대한 설명을 참조하시기 바랍니다.
일단 저희는 웹 페이지를 크롤링한 결과값을 파일에 내용을 써야 하기 때문에 'w' 즉 쓰기 모드를 사용하겠습니다.
그다음 마지막으로 어떻게 인코딩을 할 것인가에 적어주시면 됩니다.
일반적으로 많이 사용하는 UTF-8을 적어주시면 됩니다.
UTF-8 같은 경우에는 한글과 영어를 같이 사용할 수 있죠.
그럼 한 번 Save_Crawling.py를 실행시켜 볼까요?
위와 같이 txt 파일로 정상적으로 저장된 걸 확인할 수 있습니다.
내용도 웹 페이지를 크롤링 한 값도 잘 넣어졌죠.
간단하게 웹 페이지를 크롤링(스크래핑)을 해보았습니다.
다음에는 원하는 태그만 크롤링하는것에 대해 알아보도록 하겠습니다.
지금까지 읽어주셔서 감사합니다.
지금까지 웹 페이지 크롤링 하는 방법이었습니다.