inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

남박사의 파이썬 기초부터 실전 100% 활용

[삭제예정] 네이버 실시간 검색어 크롤링 하기

네이버 검색 순위 크롤링 관련

해결된 질문

845

안승호

작성한 질문수 1

4

lists의 사이즈가 0입니다.

제가 혹시 간과한 부분이 있는지 여쭙습니다.

참고로 status code는 200, bs 변수에도 정상적으로 값이 할당되는듯합니다.

감사합니다.

import requests
from bs4 import BeautifulSoup
r = requests.get('https://www.naver.com')
bs = BeautifulSoup(r.text, 'html.parser')
lists = bs.find_all('li',{'class':'ah_item'})
for li in lists:
    print(li)
    lis = li.find('span',{"class":'ah_k'})  #find만 할경우
    for sa in lis:
        print(sa)

python 웹-크롤링

답변 4

9

남박사

작성하신 코드는 아무 문제 없습니다. 다만 2020년 1월 17일 부로 네이버 실시간 검색어가 기존의 임베딩 방식에서 ajax 통신 방식으로 변경된거 같습니다. 실제 개발자도구로 확인했을때 기존과 같이 li 태그에 ah_item 클래스명으로 표기는 되나 이전에는 해당 데이터가 html 에 직접 뿌려주는 방식이였다면 현재는 해당 실시간 순위 데이터를 ajax 통신으로 가져온 뒤에 자바스크립트로 li.ah_item 클래스 형태로 만들어주고 있습니다.

따라서 기존의 코드로는 해당 데이터를 추출 할 수 없게 되었습니다. 원래 크롤링이라는게 페이지 코드가 바뀌면 크롤링 코드도 변경되야 하는 문제라서 강좌는 BeautifulSoup 을 어떻게 쓰고 어떻게 분석을 하는지에 초점을 맞춘거라 그대로 두고 ajax 형태로 가져오는 실시간 검색 결과를 확인은 해야 하기에 수정된 코드를 첨부 합니다.

import requests
from bs4 import BeautifulSoup

# 아래 주소가 메인페이지 내부에서 호출되는 실시간 검색어 데이터를 넘겨주는 주소
# requests.get("주소").json() 을 하면 데이터를 json 형태로 받아올 수 있습니다.
# 아래 주소를 직접 브라우저에서 접속해보시기 바랍니다.
json = requests.get('https://www.naver.com/srchrank?frm=main').json()

# json 데이터에서 "data" 항목의 값을 추출
ranks = json.get("data")

# 해당 값은 리스트 형태로 제공되기에 리스트만큼 반복
for r in ranks:
    # 각 데이터는 rank, keyword, keyword_synomyms
    rank = r.get("rank")
    keyword = r.get("keyword")
    print(rank, keyword)

3

Iron

저도 남박사님 강의 듣고 네이버 실시간  검색어 크롤링 중 잘 되지 않아 문의를 남기려던 찰나에 윗분이 남긴 문의글 보았습니다. 궁금한 것은 크롬 개발자 도구를 확인하고 네이버와 같이 통신 방식으로 정보를 가져오는 것인지 판단하는 방법과 만약 통신 방식이라하면 답변 달아주신 것과 같은 주소('https://www.naver.com/srchrank?frm=main')를 어떻게 찾아낼 수 있는지 입니다.

답변 부탁드립니다. 

감사합니다!!

0

남박사

승호님 덕분에 저도 네이버 페이지에 변경이 있는지 알게 되었습니다. 감사합니다. 😀

0

안승호

빠른 답변 감사합니다. 덕분에 궁금한것이 해결되었습니다. 좋은 강의 고맙습니다.

38강 = 연산자 더하고 빼기

0

59

2

주석처리

0

116

1

함수의 파라미터값 msg

0

154

1

강의자료 이미지 안나옴

0

238

3

강의자료 질문 두번째

0

164

3

강의자료 관련 질문

0

115

1

파이썬 예외 처리 try / except 파일 처리 코드가 실행이 안됩니다.

0

234

1

소수 너무 어려워요

0

244

1

imagefont 함수 사용

0

238

1

pylint

0

356

1

add 함수 문의 ㅠㅠ

0

280

1

형식 문의드립니다.

0

208

1

변수 명을 왜 src, tar로 하셨는지 궁금합니다.

0

601

1

숫자야구 코드를 짜 봤는데 뭔가 이상합니다.

0

250

1

zsh: command not found: pylint

0

268

1

텔레그램 봇 만들기 코드 실행이 안됩니다 박사님..ㅠ

0

545

1

질문드립니다.

1

373

2

list.reverse() 출력에 대해서 질문있습니다.

1

432

1

데코레이터 함수 및 동작시간 질문입니다.~

1

322

2

opencv 사용하면서 궁금한점 (해상도)

1

780

1

질문드립니다.

1

298

1

아래 오류가 뜨면서 vscode가 컴파일이 되지 않는데.. 혹시 왜이럴까요?

1

444

1

크롤링안되는 현상 문의 드립니다.

1

420

1

파이썬 크롤링 관련 문의

1

276

1