강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của ottplus5364
ottplus5364

câu hỏi đã được viết

[Phiên bản sửa đổi mới] Đây mới là Crawling thực thụ - Phần thực chiến (Kiếm tiền từ trí tuệ nhân tạo)

Bước 1 - Kỹ thuật nâng cao về bộ chọn class, cách xử lý ký tự đặc biệt

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

Viết

·

66

·

Đã chỉnh sửa

0

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

 

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

 

soup = BeautifulSoup(html, 'html.parser')
soup 
python웹-크롤링

Câu trả lời 2

0

ottplus님의 프로필 이미지
ottplus
Người đặt câu hỏi

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

startcoding님의 프로필 이미지
startcoding
Người chia sẻ kiến thức

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

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

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()의 활용: 페이지가 완전히 로드되기 전 충분한 지연 시간을 주어 준다면 조금 더 일관된 데이터를 가져올 확률을 높일 수 있습니다.

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

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

Hình ảnh hồ sơ của ottplus5364
ottplus5364

câu hỏi đã được viết

Đặt câu hỏi