최근 사이트 중에서는 단순히 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로 한번에 크롤링하기
그럼 잘 사용하세요.
'Programming > Python' 카테고리의 다른 글
ChatGPT 활용 코딩하기 팁 (0) | 2024.06.25 |
---|---|
랭체인을 통해서 엑셀의 유사도 판단하기 (0) | 2024.06.23 |
파이썬 엑셀 저장 후 내용에 문제가 있습니다. 이 통합 문서의 내용을 최대한 복구하시겠습니까? 에러 해결하기 (0) | 2024.04.02 |
파이썬 *로 트리 만들기 - Print 활용하기 (0) | 2024.03.21 |
파이썬 엑셀 저장시 여러 시트 저장 및 열 넓이 조정하기 (0) | 2024.03.18 |