오늘은 파이썬으로 웹 크롤링하는 방법에 대해 알아보고 간단하게 제목을 크롤링해보도록 하겠습니다.
웹 크롤링에 대해 간단히 설명하자면, html 코드를 분석하여 자동으로 데이터를 얻어내는 과정입니다.
여러 가지 언어와 라이브러리가 있지만, 여기에서는 파이썬과 BeautifulSoup를 사용하여 크롤링을 진행해보도록 하겠습니다.
기본 설정
BeautifulSoup 설치하기
콘솔창에 다음 명령어를 입력하여 라이브러리를 설치해줍니다.
pip install beautifulsoup4
라이브러리 import하기
기본적인 크롤링 작업을 하기 위해서는 requests와 BeautifulSoup가 필요하므로, 아래와 같이 import해줍니다.
import requests
from bs4 import BeautifulSoup
제목 크롤링하기
requests 다루기
requests.get() 메소드를 활용하여 해당 주소로 request를 보내고 response를 받습니다. 그리고 그 response를 출력해줍니다.
inputURL = "https://homubee.tistory.com"
response = requests.get(inputURL)
print(response)
다음과 같이 <Response [200]> 이라는 결과를 얻었습니다. 이는 HTTP 응답 코드로 200일 경우, 요청이 성공했음을 의미합니다. 만약 여기에서 300이나 400 등의 결과를 얻게 된다면 뭔가 문제가 있는 것입니다.
response.headers를 확인하여 header에 포함된 정보를 알아볼 수 있습니다. 날짜, 컨텐츠 타입, 길이 등의 정보가 포함되어 있습니다.
실제 웹 사이트 정보는 response.content에 포함되어 있으며, 그 내용을 출력해보면 다음과 같은 결과를 얻을 수 있습니다.
보시다시피 가독성도 좋지 않아 이게 무슨 내용인가 싶은데, 잘 보면 html 코드임을 알 수 있습니다.
BeautifulSoup 객체 생성하기
이제 이 content를 이용하여 BeautifulSoup 객체를 생성해줍니다. html 파일을 분석해줄 것이므로 파서는 html.parser를 사용합니다.
beautifulSoup = BeautifulSoup(response.content, "html.parser")
print(beautifulSoup)
내용을 출력해보면 다음과 같이 아까와 같은 내용이 출력됩니다. 대신 태그별로 정리되어 출력되는 것을 확인할 수 있습니다.
BeautifulSoup 객체가 html을 분석하여 트리 구조로 구성되었기 때문입니다. 이제 이를 활용하여 다양한 크롤링 작업을 수행할 수 있습니다.
간단하게 사이트의 제목 데이터를 구해보도록 하겠습니다. 제목은 html의 title 태그 내용을 의미합니다.
[BeautifulSoup 객체].[태그 이름]으로 접근하면 해당 태그와 그 하위에 포함되는 태그 데이터를 가져올 수 있습니다.
우리는 제목 정보를 가져올 것이므로 beautifulSoup.title로 해당 데이터를 가져올 수 있습니다. 그러나, 이 상태로 가져오면 title 태그가 포함된 상태이므로, 실제 문자열 데이터만 가져오도록 해야 합니다. beautifulSoup.title.string에 접근하면 문자열을 가져올 수 있습니다.
다음은 실제 출력 내용입니다. (위가 title이고, 아래가 title.string입니다.)
전체 코드
위의 내용을 정리하여 주소를 입력하면 해당 사이트의 제목을 출력해주는 간단한 코드를 작성해보았습니다.
import requests
from bs4 import BeautifulSoup
# main
if __name__ == "__main__":
inputURL = input("크롤링할 주소를 입력 : ")
response = requests.get(inputURL)
beautifulSoup = BeautifulSoup(response.content, "html.parser")
print(beautifulSoup.title.string)
다음과 같이 각 웹사이트의 제목을 잘 출력해주는 것을 확인할 수 있습니다.
오늘은 파이썬으로 웹 크롤링할 수 있도록 라이브러리를 설치하고 간단하게 제목을 크롤링하는 기능을 구현해보았습니다. 웹 크롤링을 잘 활용하면 반복적인 작업을 크게 줄일 수 있어서, 코딩에 대해 잘 모르더라도 조금 시간 내어 공부해보시면 좋을 것 같습니다.
직접 조사해서 작성하는 글이다 보니 일부 정확하지 않은 정보가 포함되어 있을 수 있습니다.
궁금한 사항이나 잘못된 내용이 있으면 댓글로 알려주세요~
'웹 > 크롤링' 카테고리의 다른 글
[BeautifulSoup] #4 네이버 뉴스 크롤링하기 (0) | 2022.02.23 |
---|---|
[BeautifulSoup] #3 find 함수 사용법 (0) | 2022.02.16 |
[BeautifulSoup] #2 파이썬 웹 크롤링 네이버 오류 해결 방법 (0) | 2022.02.12 |