BeautifulSoup로 웹 크롤링 할 때 모든 html 코드가 다운되지 않는 현상이 발생합니다

조회수 838회

ebsi 에서 기출문제를 자동으로 다운 받을 수 있는 코드를 python으로 짜던 중 beautifulsoup로 웹 페이지를 다운 받아보니 사이트의 html코드보다 축약된 코드가 다운 받아졌습니다.

BeautifulSoup로 웹 크롤링 할 때 모든 html 코드가 다운되지 않는 현상이 발생합니다.

    import requests
    from bs4 import BeautifulSoup as bs

    login_info = {
        'userid': '00000000',
        'passwd': '00000000'
    }


    with requests.session() as s:

        login_req = s.post('https://www.ebsi.co.kr/ebs/pot/potl/SSOLoginSubmit.ebs', data = login_info)

        print(login_req.status_code)

        page_req = s.get('http://www.ebsi.co.kr/ebs/xip/xipc/previousPaperList.ebs')

        html = page_req.text

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

이렇게 코드를 짜서 나온 soup 값을 보니까

이미지

이렇게 나와야 하는 부분이

    (생략)
    </select>
    </span>
    </em>
    </h4>
    <div id="div_contentList"></div>
    </div>
    </div>
    </form>
    </div>
    (생략)

이렇게 나와 버립니다.

(전체 결과를 올리기엔 5000줄이나 되서 이렇게 캡처로 올렸습니다.)

어떻게 하면 이렇게 짤려서 나오는 현상을 해결할 수 있을까요?

  • ajax로 데이터를 별도로 받아올 듯 합니다. 성능이나 리소스에 여유가 된다면 셀레니움을 이용하세요. 정영훈 2019.8.24 23:35

1 답변

  • 아마 클라이언트 단의 스크립트가 페이지를 추가로 렌더 할 가능성이 있을 것 같습니다.

    이럴 경우에는 단순히 HTML 크롤링이 아니라 셀레니움을 이용해 브라우저로 렌더해서 크롤링 해야 할 것 같습니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)