인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

권태혁님의 프로필 이미지

작성한 질문수

내 업무를 대신 할 파이썬(Python) 웹크롤링 & 자동화 (feat. 주식, 부동산 데이터 / 인스타그램)

6.2 주식 일별 시세 데이터

6.1 미국 주식 데이터 크롤링을 막아둔 거 같아요.

작성

·

56

0

import requests
res = requests.get("https://www.marketwatch.com/investing/stock/aapl/financials/cash-flow/quarter")
res.text

위 코드를 실행하니
<html lang="en"><head><title>marketwatch.com</title><style>#cmsg{animation: A 1.5s;}@keyframes A{0%{opacity:0;}99%{opacity:0;}100%{opacity:1;}}</style></head><body style="margin:0"><p id="cmsg">Please enable JS and disable any ad blocker</p><script data-cfasync="false">var dd={\'rt\':\'c\',\'cid\':\'AHrlqAAAAAMAh8Qu9qw4o5AAeZGKYw==\',\'hsh\':\'D428D51E28968797BC27FB9153435D\',\'t\':\'bv\',\'qp\':\'\',\'s\':47891,\'e\':\'c294f466cf1fc364ded3ee7825542c1f3981642dddce927e5f11a3c23d8562c7\',\'host\':\'geo.captcha-delivery.com\',\'cookie\':\'cKcsNHb~i3N0ubHsvh1SU41idmHgtXrG3MIr84AsSXM8dmhMHFBZ_SDJgc_fPcFDnPl66WhkZTCTtkxK4IxLoKIgEyZat25gsG5q7IDMkMwFhpZEai47m4N4I1c0WP9G\'}</script><script data-cfasync="false" src="https://ct.captcha-delivery.com/c.js"></script></body></html>

이렇게 출력이 나왔습니다.
구글링을 해보니 해당 marketwatch 사이트에서 크롤링을 막고있는 거 같더라구요.

이런 상황에서는 requests를 통해서는 해당 강의를 진행하지 못한다는 거 맞나요??

답변 2

0

DeepingSauce님의 프로필 이미지
DeepingSauce
지식공유자

headers에 대한 값도 네트워크탭 통해서 확인해서 넣어보셨나요?

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 권태혁님.

MarketWatch 사이트에서 크롤링을 시도하셨군요. 최근 많은 웹사이트들이 자동화된 접근을 막기 위해 캡차(captcha)를 사용하거나, 자바스크립트를 통해 콘텐츠를 로드하는 방식을 채택하고 있습니다. 이러한 웹사이트들은 단순한 HTTP 요청(requests 모듈)으로는 데이터를 가져오기 어렵게 만듭니다.

해당 상황에서는 두 가지 방법을 고려해 볼 수 있습니다:

  1. 자바스크립트 렌더링 사용: 자바스크립트로 로드되는 웹페이지의 데이터를 수집하려면 Selenium 같은 브라우저 자동화 도구를 사용할 수 있습니다. 이 도구는 실제 브라우저를 구동하여 자바스크립트가 실행되도록 합니다.

  2. 진입 방법 변경: API 엔드포인트가 존재하는 경우, API를 통해 더욱 효율적이고 안정적으로 데이터를 가져오는 방법도 있습니다. MarketWatch 자체 API가 있는지 확인해보는 것도 좋습니다.

비슷한 문제로 고민하시는 분들에게 도움이 될 수 있는 게시물이 있어서 공유드립니다.

위 게시물들은 크롤링 시 맞닥뜨릴 수 있는 다양한 문제와 해결책에 대한 정보를 제공하고 있습니다. 이를 참고하여 보다 나은 방법을 찾을 수 있을 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.