CloudScraper로 크롤링 우회하기

최근 사이트 중에서는 단순히 requests만으로 크롤링이 안되는 사이트가 있는데요.

 

CloudScraper

cloudscraper는 Cloudflare와 같은 보안 서비스로 보호된 웹사이트를 우회하여 요청을 처리할 수 있는 Python 라이브러리라고 합니다. 사이트에서 단순한 request로 크롤링이 안될때 사용할 수 ㅣㅇㅆ습니다.

 

Cloudflare 보호를 우회하는 데 효과적입니다. 이 코드를 실행하면 OpenAI와 같은 사이트에서 필요한 데이터를 크롤링할 수 있습니다

 

CloudScraper 사용방법

먼저 cloudscraper를 설치해줍니다.

pip install cloudscraper

 

기본적인 소스코드 형태는 아래와 같은데요.

 

import cloudscraper
from bs4 import BeautifulSoup

def scrape_openai_news():
    # cloudscraper 객체 생성
    scraper = cloudscraper.create_scraper()

    # OpenAI 뉴스 페이지 URL
    url = "https://openai.com/news/research"

    # 요청 보내기
    response = scraper.get(url)

    # 상태 코드 확인
    if response.status_code == 200:
        print("요청 성공!")
        # BeautifulSoup으로 HTML 파싱
        soup = BeautifulSoup(response.text, 'html.parser')

        # 페이지 제목 출력
        print("페이지 제목:", soup.title.string)

        # 예: 뉴스 타이틀 추출
        news_titles = soup.find_all('h2')  # h2 태그 사용
        for idx, title in enumerate(news_titles, 1):
            print(f"뉴스 {idx}: {title.text.strip()}")
    else:
        print(f"요청 실패! 상태 코드: {response.status_code}")

# 함수 실행
if __name__ == "__main__":
    scrape_openai_news()

 

그리고 여기에서 헤더를 입력해줘야 합니다.

 

scraper = cloudscraper.create_scraper(
    browser={'browser': 'chrome', 'platform': 'windows', 'mobile': False}
)


headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)...",
    "Accept-Language": "en-US,en;q=0.9",
}
response = scraper.get(url, headers=headers)

 

이렇게 설정하면 크롤링이 가능한데요. 이외에는 크롤링 기본 코드는 유사하니 나머지로 사용해주시면 됩니다.

 

2024.03.11 - [Programming/Python] - 네이버 뉴스 API로 한번에 크롤링하기

 

네이버 뉴스 API로 한번에 크롤링하기

네이버의 뉴스를 API로 크롤링하는 방법을 알아보겠습니다. 먼제 네이버 디벨로퍼에 들어가서 API를 신청해야 합니다. 네이버 API 신청하기 https://developers.naver.com/main/ NAVER Developers 네이버 오픈 API

remake.tistory.com

 

그럼 잘 사용하세요.