본문 바로가기
파이썬 업무자동화

파이썬 업무 자동화: 페이지네이션 마스터하기!

by yourpick 2024. 10. 16.

웹 페이지를 긁어서 원하는 데이터를 뽑아내는 웹 크롤링, 꽤 매력적인 작업이죠? 특히, 반복적인 업무를 자동화해서 시간을 벌고 싶을 때 정말 유용하게 쓸 수 있어요. 근데 웹 페이지가 엄청나게 길거나, 데이터가 엄청 많아서 한 페이지에 다 담을 수 없을 때가 있잖아요? 바로 그때 등장하는 핵심 기술이 바로 페이지네이션(Pagination)이에요.

 

오늘은 파이썬을 활용해서 이 페이지네이션을 어떻게 처리하는지, 그리고 웹 크롤링을 더욱 효율적으로 만들 수 있는 방법을 알아볼 거예요. 웹 크롤링 초보자도 이해하기 쉽도록 풀어서 설명해드릴 테니, 걱정 말고 따라와 보세요!

 


파이썬과 페이지네이션: 웹 크롤링 자동화의 핵심

페이지네이션이 뭔지 감이 안 오시는 분들을 위해 간단하게 설명해 드릴게요. 페이지네이션은 웹사이트에서 데이터를 여러 페이지로 나눠서 보여주는 걸 말해요. 예를 들어, 쇼핑몰에서 상품을 검색하면 결과가 100개가 넘어갈 수도 있잖아요? 그럴 때 한 페이지에 10개씩, 10페이지로 나눠서 보여주는 게 바로 페이지네이션인 거죠.

 

크롤링을 할 때도 마찬가지에요. 만약 한 페이지에 모든 데이터가 다 있는 게 아니라, 여러 페이지에 걸쳐서 데이터가 분산되어 있다면, 각 페이지를 차례대로 방문해서 데이터를 수집해야 해요. 파이썬으로 웹 크롤링을 자동화할 때, 이 페이지네이션 처리를 어떻게 해야 할지 막막하셨을 텐데, 걱정 마세요! 파이썬에는 웹 크롤링을 쉽게 할 수 있는 멋진 도구들이 많이 있거든요.

 


페이지네이션 처리를 위한 파이썬 라이브러리: requests와 BeautifulSoup

웹 페이지를 가져오고, 원하는 데이터를 추출하는 데 꼭 필요한 친구들이 바로 requests와 BeautifulSoup이에요. requests는 웹 페이지의 HTML 소스 코드를 가져오는 역할을 하고, BeautifulSoup은 가져온 HTML 코드를 파싱해서 원하는 정보를 뽑아내는 역할을 해요.

 

requests를 사용해서 웹 페이지를 가져오는 건 정말 쉬워요. 마치 웹 브라우저에서 주소를 입력하고 엔터를 치는 것처럼, requests.get() 함수를 사용하면 원하는 페이지의 HTML 소스 코드를 가져올 수 있어요.

 

BeautifulSoup은 이렇게 가져온 HTML 코드를 파싱해서 우리가 원하는 데이터만 쏙쏙 뽑아낼 수 있도록 도와주는 똑똑한 도구에요. CSS 선택자를 사용해서 원하는 태그를 찾아서 텍스트를 추출하거나, 속성 값을 가져올 수 있어요.

 


예시 코드: requests와 BeautifulSoup 활용하기

import requestsfrom bs4 import BeautifulSoup# 웹 페이지 URLurl = "https://example.com/page/1"# requests를 이용하여 웹 페이지 가져오기response = requests.get(url)# BeautifulSoup으로 HTML 파싱soup = BeautifulSoup(response.text, 'html.parser')# 원하는 데이터 추출 (예시: 제목 태그 추출)titles = soup.select("h2.title")for title in titles:    print(title.text)

 코드에서는 requests를 이용해서 example.com 페이지의 HTML 소스 코드를 가져오고, BeautifulSoup을 이용해서 h2 태그 중에서 class가 title인 태그를 찾아서 텍스트를 출력하는 예시를 보여주고 있어요. 물론, 실제 웹 크롤링에서는 각 웹사이트의 HTML 구조에 따라 CSS 선택자를 적절히 수정해야 해요.

 


동적 페이지네이션 처리를 위한 Selenium

일반적인 웹 페이지는 HTML 소스 코드가 처음부터 다 로드되어 있어요. 하지만, JavaScript를 사용해서 동적으로 콘텐츠를 로드하는 웹 페이지도 많아요. 이런 웹 페이지에서는 BeautifulSoup만으로는 데이터를 제대로 가져올 수 없을 때가 있어요.

 

Selenium은 웹 브라우저를 자동으로 제어해서 JavaScript를 실행하고, 동적으로 로드된 콘텐츠를 가져올 수 있도록 도와주는 강력한 도구에요. 웹 브라우저를 자동으로 조작한다고 생각하면 쉬워요. 마치 사람이 직접 브라우저를 조작해서 페이지를 이동하고, 데이터를 추출하는 것과 같은 방식이에요.

 


예시 코드: Selenium으로 동적 페이지네이션 처리

from selenium import webdriverfrom selenium.webdriver.common.by import Bydriver = webdriver.Chrome()  # ChromeDriver 경로 설정 필요base_url = "https://example.com/page/"# 총 페이지 수total_pages = 5for page in range(1, total_pages + 1):    url = f"{base_url}{page}"    driver.get(url)    # 데이터 추출 (예시: class가 item인 태그의 텍스트 추출)    items = driver.find_elements(By.CLASS_NAME, 'item')    for item in items:        print(item.text)driver.quit()

 코드에서는 Selenium을 이용해서 example.com 페이지의 각 페이지를 방문하고, class가 item인 태그의 텍스트를 추출하는 예시를 보여주고 있어요. Selenium은 웹 페이지의 JavaScript를 실행해서 동적으로 로드된 콘텐츠도 가져올 수 있기 때문에, 동적 페이지네이션 처리에 유용해요.

 


파이썬 페이지네이션 처리: 실제 활용 사례

자, 그럼 이제 페이지네이션 처리를 어떻게 실제로 활용할 수 있는지 몇 가지 예시를 살펴볼까요?

 


1. 뉴스 기사 크롤링

뉴스 웹사이트는 대부분 기사를 페이지별로 나눠서 보여주는 페이지네이션을 사용해요. 파이썬을 이용해서 뉴스 기사를 크롤링하려면, 각 페이지의 URL을 파악하고, 페이지네이션 처리를 해야 해요.

 

예를 들어, 네이버 뉴스를 크롤링한다고 생각해 보세요. 네이버 뉴스는 페이지 번호를 URL에 포함시켜서 페이지를 구분해요. 따라서, 파이썬으로 각 페이지의 URL을 만들고, requests나 Selenium을 이용해서 페이지를 가져온 후, BeautifulSoup으로 기사 제목, 내용, 작성 날짜 등을 추출하면 돼요.

 


2. 상품 정보 크롤링

온라인 쇼핑몰에서 상품 정보를 수집하는 것도 페이지네이션 처리가 필요한 대표적인 예시에요. 쇼핑몰마다 다르지만, 대부분 상품 목록을 페이지별로 나눠서 보여주는 페이지네이션을 사용하거든요.

 

파이썬으로 상품 정보를 크롤링하려면, 각 페이지의 URL을 파악하고, 페이지네이션 처리를 해야 해요. 각 페이지에서 상품 이름, 가격, 이미지 URL, 상품 설명 등을 추출해서 CSV 파일이나 엑셀 파일로 저장하면 쇼핑몰 상품 정보를 손쉽게 수집할 수 있어요.

 


3. 부동산 정보 크롤링

부동산 정보 사이트에서 매물 정보를 수집하는 것도 페이지네이션 처리가 필요해요. 각 페이지에 매물 정보가 나열되어 있고, 페이지네이션을 통해 다음 페이지로 이동할 수 있도록 되어 있죠.

 

파이썬으로 부동산 매물 정보를 크롤링하려면, 각 페이지의 URL을 파악하고, 페이지네이션 처리를 해야 해요. 각 페이지에서 매물 주소, 가격, 면적, 사진, 연락처 등을 추출해서 데이터베이스에 저장하거나 엑셀 파일로 만들 수 있어요.

 


파이썬 페이지네이션 처리 시 주의사항

파이썬으로 웹 크롤링을 할 때 페이지네이션 처리를 하면서 주의해야 할 점이 몇 가지 있어요.

 


1. 웹사이트 로봇 규칙 준수

웹사이트마다 로봇 규칙(robots.txt)이라는 것이 있는데, 크롤링을 허용하는 범위를 정의해 놓은 파일이에요. 크롤링을 하기 전에 robots.txt를 확인해서 웹사이트의 규칙을 준수하는 것이 중요해요. 무분별한 크롤링은 웹사이트에 부담을 줄 수 있고, 심지어 법적인 문제로 이어질 수도 있으니 주의해야 해요.

 


2. 잦은 요청 방지

웹사이트에 너무 짧은 시간 안에 잦은 요청을 보내면, 웹사이트 서버에 부담을 줄 수 있어요. 웹사이트 서버가 과부하가 걸리면 크롤링이 중단되거나, IP 차단을 당할 수도 있으니, 적절한 시간 간격을 두고 요청을 보내는 것이 좋겠죠?

 


3. 에러 처리

웹 크롤링 과정에서 예상치 못한 에러가 발생할 수 있어요. 예를 들어, 웹 페이지가 없거나, 네트워크 연결이 끊어지거나, 웹 페이지의 구조가 바뀌는 경우 등이에요. 이런 에러들을 처리하지 않으면 크롤링이 중단될 수 있으니, try-except 블록을 사용해서 에러를 처리하는 것이 좋답니다.

 


파이썬 페이지네이션 처리: 더 효율적인 크롤링을 위한 팁


마지막으로 파이썬 페이지네이션 처리를 더 효율적으로 하기 위한 몇 가지 팁을 알려드릴게요.

 


1. 페이지네이션 정보 파악

각 웹사이트마다 페이지네이션을 구현하는 방식이 다르기 때문에, 크롤링을 시작하기 전에 페이지네이션 정보를 정확히 파악하는 것이 중요해요.

 

페이지네이션 정보는 주로 HTML 소스 코드에 담겨 있어요. 개발자 도구를 이용해서 HTML 소스 코드를 확인하면, 페이지네이션 관련 태그나 속성을 찾을 수 있을 거예요.

 


2. URL 패턴 분석

페이지네이션 처리를 하려면, 각 페이지의 URL 패턴을 분석해야 해요. 대부분의 웹사이트에서는 페이지 번호를 URL에 포함시켜서 페이지를 구분해요. 예를 들어, , ,  와 같은 식으로 URL이 구성되어 있죠. 이런 URL 패턴을 분석하면, 파이썬으로 각 페이지의 URL을 자동으로 생성할 수 있어요.

 


3. 데이터 저장 방식 고려

크롤링한 데이터를 어떻게 저장할지 미리 계획하는 것도 중요해요. CSV 파일이나 엑셀 파일, 데이터베이스 등 다양한 방식으로 데이터를 저장할 수 있어요. 데이터의 양과 크롤링 목적에 따라 적절한 저장 방식을 선택하는 것이 좋아요.

 


4.  파이썬 스크립트 최적화

웹 크롤링 스크립트는 가능한 한 간결하고 효율적으로 작성하는 것이 좋아요. 불필요한 코드를 제거하고, 최적화된 라이브러리를 사용하면 크롤링 속도를 높일 수 있고, 서버 부하도 줄일 수 있답니다.

 


파이썬 페이지네이션 처리: 마무리

오늘은 파이썬을 이용해서 웹 크롤링의 핵심 기술인 페이지네이션을 어떻게 처리하는지 알아봤어요. requests, BeautifulSoup, Selenium과 같은 파이썬 라이브러리를 활용하면, 웹 페이지의 페이지네이션을 효율적으로 처리하고, 원하는 데이터를 자동으로 수집할 수 있어요.

 

하지만 웹 크롤링을 할 때는 웹사이트의 로봇 규칙을 준수하고, 잦은 요청을 피하고, 에러 처리를 하는 등 주의해야 할 점도 있으니 꼭 기억해두세요!

 

흔히 묻는 질문 (FAQ)

Q1. 페이지네이션 처리를 안 하면 어떤 문제가 생겨요?

A1. 페이지네이션 처리를 안 하면, 웹 페이지의 첫 번째 페이지만 크롤링하고, 나머지 페이지의 데이터는 수집하지 못하게 돼요. 즉, 원하는 모든 데이터를 가져오지 못하는 거죠.

 

Q2. requests와 Selenium 중 어떤 라이브러리를 사용해야 하나요?

A2. 웹 페이지가 일반적인 HTML 소스 코드로 구성되어 있으면 requests와 BeautifulSoup을 사용하면 돼요. 하지만 JavaScript를 사용해서 동적으로 콘텐츠를 로드하는 웹 페이지라면 Selenium을 사용해야 해요.

 

Q3. 웹 크롤링을 할 때 주의해야 할 사항이 뭐가 있어요?

A3. 웹 크롤링을 할 때는 꼭 웹사이트의 로봇 규칙을 확인하고 준수해야 해요. 또한, 잦은 요청으로 인해 웹사이트 서버에 부담을 주지 않도록 적절한 시간 간격을 두고 요청을 보내는 것이 좋고, 예상치 못한 에러를 처리할 수 있도록 try-except 블록을 사용하는 게 좋답니다.

 

참고 자료:

 

자료설명

'커리어 스킬업 파이썬 업무 자동화' 파이썬 기초부터 웹 크롤링, 엑셀 자동화까지 단계별 학습 가능
다양한 파이썬 자동화 온라인 강의 실습과 이론 병행 학습 가능

 

키워드:파이썬,Python,업무자동화,웹크롤링,WebCrawling,페이지네이션,Pagination,requests,BeautifulSoup,Selenium,자동화,Automation,데이터수집,DataCollection,크롤링,Crawling,스크래핑,Scraping,효율성,Efficiency,시간절약,Timesaving,팁,Tips,주의사항,Precautions,robots.txt,로봇규칙,에러처리,ErrorHandling,URL패턴,DataStorage,데이터저장,스크립트최적화,ScriptOptimization,뉴스크롤링,상품크롤링,부동산크롤링,웹개발,WebDevelopment

 

 

 

관련 포스트 더 보기

2024.10.09 - [파이썬 업무자동화] - 파이썬 업무자동화: 데이터 저장/처리 끝판왕!

 

파이썬 업무자동화: 데이터 저장/처리 끝판왕!

파이썬으로 일상 업무를 자동화하고 싶은데, 어디서부터 시작해야 할지 막막하신가요? 특히 데이터 저장과 처리가 복잡하게 느껴지시나요? 걱정 마세요! 오늘은 파이썬이라는 강력한 도구를 활

yourpick.tistory.com