데이터 분석가 몽구리

[Python] 웹 크롤링 템플릿 본문

Python

[Python] 웹 크롤링 템플릿

데분몽굴 2025. 1. 15. 16:26

데이터 분석에 있어 가장 중요한 단계 중 하나는 데이터 수집 단계일 것이다.
오늘은 python 웹 크롤링을 통해 웹에서 데이터를 수집하는 코드를 작성해보도록 하겠다.

 import requests  
from bs4 import BeautifulSoup
res = requests.get('http://')  // 접근하고자 하는 url 입력 
soup = BeautifulSoup(res.content,'html.parser')
mydata = soup.find('title')  // 'title' 태그를 통해 값을 가져온다
print(mydata.get_text())

위 코드는 requests 라이브러리를 통해 웹 사이트에 접근하고 BeautifulSoup를 통해 크롤링을 진행하게 된다. soup.find를 통해 태그나 속성을 통해 값에 접근할 수 있으며, 가져온 값은 mydata 변수에 담아주게 된다. mydata에 담겨진 변수를 출력할 때에는 .get_text() 를 사용하거나 .string을 통해서도 데이터를 출력할 수 있다.

data = soup.find('p', class_='cssstyle')
data = soup.find('p', 'cssstyle')
data = soup.find('p', attrs = {'align': 'center'})
data = soup.find(id='body')

태그나 속성을 통해 값을 가져오고자 할 때, 같은 태그나 속성이 있다면 원하는 값을 가져오기 힘든 경우가 발생할 것이다. 그런 경우에는 위 코드와 같이 태그와 속성을 같이 달아주는 다양한 코드를 사용해서 내가 원하는 데이터를 가져올 수 있다. 주의하실 점은 class_='cssstyle'에서 class뒤에 (언더바) 가 포함되어 있다는 것입니다. python에서는 class가 예약어이기 때문에 class 로 사용한다고 이해하시면 됩니다.

그렇다면 같은 아래 사진과 같이 여러 개의 데이터를 한번에 가져오기 위해서는 어떻게 해야할까요?

 data = soup.find_all('p')
for item in data:
    print(item.string)

여러 개의 데이터를 한번에 가져오기 위해서는 find_all 메서드를 사용해주시면 됩니다. find_all 메서드의 경우에는 반환 값이 리스트이기 때문에 출력할 때에는 반복문을 통해 출력을 하시면 됩니다.

크롤링을 할 때에는 기본적인 HTML 및 CSS 에 대한 내용을 알고 있다면 데이터를 어렵지 않게 수집할 수 있습니다. 기본적인 데이터 수집을 위한 크롤링 방법에 대해 학습을 진행하였습니다. 해당 코드를 외우기 보다는 필요할 때에는 검색해서 사용할 수 있는 능력을 기르는 것이 더 중요할 거 같습니다~

다음 시간에는 좀 더 크롤링의 다양한 방법에 대해 정리해보도록 하겠습니다! 감사합니다

'Python' 카테고리의 다른 글

[Pandas] 결측값을 찾는 방법  (0) 2024.08.17
[5일차] 비밀번호 생성기 만들기  (1) 2023.05.30
[Numpy] ndarray의 데이터 타입  (0) 2023.04.17
[Python] TypeError: 'NoneType' object is not subscriptable  (0) 2023.01.08
함수  (0) 2022.12.21