강의

멘토링

로드맵

Inflearn brand logo image

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

ottplus님의 프로필 이미지
ottplus

작성한 질문수

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

1단계 - class 선택자 고급 테크닉, 특수문자 처리 방법

지식인 크롤링 하기에서 질문

작성

·

39

·

수정됨

0

  • 분명히 nclicks:kin.txt searchListTitleAnchor
    육안으로도, html 상에서도 제일 위에 있는 건데, 왜 크롤링을 하면 두번째 지식인 글이 크롤링 되는걸까요 ㅠ

 

아래 코드로 보니, 화면에 보이는 지식인 글 순서와 내용이 다르긴 하네요....이건 왜 이런걸까요ㅠ

 

soup = BeautifulSoup(html, 'html.parser')
soup 

답변 2

0

ottplus님의 프로필 이미지
ottplus
질문자

정적인 페이지가 아니라서 그런걸로 결론 내렸습니다 감사합니다 제미나이, 클로드님, chatgpt님

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

네이버 지식인은 정적인 페이지입니다~!

분명히 화면에 첫번째 지식인글이 보이는데, 수집되는건 두번째 지식인 글이라면
사용자 인증(성인)이 필요한 지식인 글이라서 그럴 수 있습니다 🙂

0

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

지식인 크롤링 중 페이지의 HTML 구조와 실제 화면에 표시되는 데이터 간 차이가 발생할 수 있는 이유에 대해 설명드리겠습니다.

주요 원인 및 해결 방안

  1. 동적 로딩:

    • 웹 페이지가 JavaScript를 사용해 데이터를 동적으로 로드하는 경우, requests 라이브러리로 가져온 HTML에는 표시되지 않은 콘텐츠가 포함됩니다. 크롤링을 통해 HTML만 가져오는 과정에서 이러한 비동기적으로 로드되는 부분은 무시됩니다.
    • 이 경우, JavaScript 렌더링을 지원하는 Selenium과 같은 라이브러리를 활용하여 데이터를 가져오는 방법을 고려해보세요.
  2. HTML 변경:

    • 크롤링 목적의 웹 페이지가 변경되면서 HTML 구조가 달라질 수 있습니다. 따라서 처음 선택한 CSS 선택자나 경로가 정확하지 않을 수 있습니다.
    • 개발자 도구에서 HTML 구성요소(CSS 선택자)가 변화했는지 지속적으로 확인해야 합니다.
  3. 데이터 로딩 순서:

    • 지식인 서비스에서는 데이터를 비동기 requests 통해 가져오는 과정에서 각 부분의 로딩 타이밍이 달라질 수 있습니다. 따라서 크롤링 시의 순서와 브라우저에서의 시각적인 순서가 차이가 날 수 있습니다.

해결 방법

  • Selenium 적용: JavaScript로 로드된 데이터를 포함한 전체적인 페이지를 크롤링하고 싶을 때, Selenium을 사용하는 것이 유용합니다.
  • 정확한 선택자 확인: 개발자 도구 (F12)를 사용해 원하는 데이터가 있는 HTML 요소의 CSS 선택자를 정확히 확인하세요.
  • time.sleep()의 활용: 페이지가 완전히 로드되기 전 충분한 지연 시간을 주어 준다면 조금 더 일관된 데이터를 가져올 확률을 높일 수 있습니다.

아래의 질문을 통해 비슷한 주제에 대한 다른 해결 방법도 참고하실 수 있습니다:
- 뉴스 본문 크롤링: 동적 웹 페이지에서 데이터를 안전하게 크롤링하기.

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

ottplus님의 프로필 이미지
ottplus

작성한 질문수

질문하기