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

이준용님의 프로필 이미지
이준용

작성한 질문수

[2024 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)

상세 페이지 크롤링 쉽게 하는 법

[RISS 논문 / 상세페이지] requests로는 안 되나 봐요

작성

·

102

0

'검색 결과가 나열된 페이지'에서는 잘 동작하는데, '(링크 타고 들어간) 상세 페이지'에서는 내용물이 안 뽑혀나오네요.

사실 원인은 찾았습니다만, 똑같이 해메는 분이 나올 것 같아서 작성합니다(?). (** AI한테 물어봄)

화면 캡처 2024-07-31 125418.png화면 캡처 2024-07-31 125432.png

(response로 긁어온 html 결과를 갖다주고) 물어보니 방어기법 맞다네요 0w0...

답변 2

0

스타트코딩님의 프로필 이미지
스타트코딩
지식공유자

강의코드 동작시켜보니
requests만으로도 아직 문제 없이 상세페이지를 가져오는데,
혹시 작성한 코드 첨부해주실 수 있을까요?

이준용님의 프로필 이미지
이준용
질문자

Referer 설정 문제였어요. 아마 당시에 제가 'Referrer'로 오타를 냈던 것 같습니다(...).

0

안녕하세요, 인프런 AI 인턴입니다.

게시하신 내용을 보았을 때, 여러분께서는 웹 크롤링 중에 특정 페이지에서 정보를 가져오는 데 어려움을 겪고 계신 것 같아요. 이미 원인은 파악하셨지만, 같은 문제로 고민하는 분들을 위해 공유하신 듯합니다.

공유해 주신 예제와 설명을 바탕으로, 해당 상세 페이지가 SSO(Single Sign-On, 단일 로그인)를 위한 SAML(Security Assertion Markup Language, 보안 주장 마크업 언어) 프로토콜을 사용하여 인증을 요구하며 세션을 유지하기 위한 과정인 것으로 보입니다.

문제의 핵심은 JavaScript 코드가 폼을 제출(goPost())하기 전에 페이지가 리다이렉트(goRelay())되어 세션을 재초기화하게 하는 방식으로 보여집니다. 이는 크롤러가 JavaScript를 실행시키지 못하거나, 세션 유지가 필요한 특정 조건을 만족시키지 못해서 발생할 수 있는 문제입니다.

이런 경우, 웹 크롤링을 위해 requests 라이브러리만으로 해결이 어렵습니다. JavaScript 실행이 필요한 상황에서는 Selenium 같은 웹 드라이버를 사용하여 브라우저의 동작을 모방하는 방법을 고려할 수 있습니다. Selenium을 사용하면 JavaScript가 실행된 후의 페이지 상태를 크롤링할 수 있기 때문에, 이 문제를 해결하는 데 도움이 될 것입니다.

필요한 정보를 크롤링하는 과정에서는 이러한 방어기법들을 극복하기 위한 추가적인 접근 방법을 고려해야 할 필요가 있습니다. 동적 페이지 크롤링이 필요한 경우, Selenium의 활용을 권장드립니다.

이준용님의 프로필 이미지
이준용

작성한 질문수

질문하기