BeautifulSoup
67
2020-01-17 10:53:13
7
1109

파이썬으로 html 크롤링 시 전체를 가져오지 못합니다.


import urllib.request
from bs4 import BeautifulSoup

url = "https://www.naver.com"
html = urllib.request.urlopen(url)
soup = BeautifulSoup(html, 'html.parser')
print(soup)
파이썬으로 네이버의 html 요청해서 출력하면 아래처럼 일부만 가져와집니다.

저는 네이버 html의 전문을 다루고 싶은데 아래 NM_RTK_VIEW처럼 일부만 가져와지고 더 아래의 정보는 가져오지 못하고 있습니다.

이게 어떤 문제인가요...

감사합니다.


<div class="area_hotkeyword">
<div aria-hidden="false" class="ah_roll">
<h3 class="blind">급상승 검색어</h3>
<div class="ah_roll_area" id="NM_RTK_ROLLING_WRAP"></div>
</div>
<span class="ah_ico_open"></span>
<div id="NM_RTK_VIEW"></div>
</div>
</div>
</div>

(아래는 제가 직접 네이버 html를 캡쳐한 사진이고 위는 크롤링하여 바로 출력한 NM_RTK_VIEW입니다.)

0
  • 답변 7

  • twinmoon
    1k
    2020-01-17 10:59:39

    SPA 방식으로 개발된 페이지를 크롤링해서 랜더링 되기 전의 HTML 코드만 얻어오는거 아닐까 싶은데요.

    아래 화면은 랜더링이 끝난 페이지를 브라우저의 개발자 도구로 보셨을꺼 같구요.

  • 협군
    6k
    2020-01-17 11:01:24

    네이버 급상승 검색어는 16일 어제부터 변경되어 AJAX 로 읽어옵니다.

    메인 페이지 리퀘스트에서는 당연히 안 나옵니다.

  • BeautifulSoup
    67
    2020-01-17 11:07:04

    twinmoon : 감사합니다. SPA에 대해서도 공부해 오겠습니다. 

    협군 : 아하... 어쩐지 어제부터 해본건데 안나와서 당황했습니다. 구글에 검색했을때 크롤링 후기가 많아서 더 이상하게 여겼습니다. 


    동적 크롤링이라는 키워드로 더 공부해오겠습니다. 두분 다 감사합니다.

  • 니르바나
    2k
    2020-01-17 15:51:24 작성 2020-01-17 15:51:43 수정됨

    동적 데이터는 selenium쓰면 해결할 수 있습니다.

    고속으로 처리할 필요가있는거 아니면 selenium도 고려해보세요ㅎ


    iframe에 들어있는거 크롤링하는데 어려움 있어서 selenium으로 해결했었습니다.

  • BeautifulSoup
    67
    2020-01-17 17:47:02

    보보8

    감사합니다 :)

  • 니르바나
    2k
    2020-01-17 20:52:33

    혹시나 삽질하실까봐 이야기드리면

    Iframe에 있는거 가져오려면 selenium에서도 프레임 바꿔주는 함수 호출해줘야 프레임 안에있는 태그 접근이 가능합니다.

  • BeautifulSoup
    67
    2020-01-17 22:01:41

    보보8

    키워드 감사합니다. ^^

  • 로그인을 하시면 답변을 등록할 수 있습니다.