본문 바로가기

코딩/Python

Python 네이버 실검 크롤링

네이버 실시간 검색어를 크롤링 해보자! 하고 해보고 있는데...

 

beautifulsoup 라이브러리를 다운받은 후 bs4가 없기 때문에 터미널 창에

->pip install bs4

를 사용하여 다운 받았다.

 

이제 한번 써보자!

 

span태그에 있는 것들이 정상적으로 나왔다.

 

이제 네이버에 있는 실검을 가져와야한다.

class = keyword고 태그가 span태그 이다.

 

변경 후 실행 하였지만 아무것도 나오지 않았다.. 왜 안될까? 하고 검색을 해보던 중.

 

 

 

https://www.inflearn.com/questions/22012

 

네이버 검색 순위 크롤링 관련 - 인프런

질문 - 네이버 검색 순위 크롤링 관련 lists의 사이즈가 0입니다. 제가 혹시 간과한 부분이 있는지 여쭙습니다. 참고로 status code는 200, bs 변수에도 정상적으로 값이 할당되는듯합니다. 감사합니다.

www.inflearn.com

 

이런 글이 있었다. 즉, 2020-01-17 부로 네이버 실검이 ajax통신 방식으로 변경 되었다는거다. 해당 데이터가 html에 직접 뿌려주는걸 받아와서 쓰면 위 코드가 정상적으로 작동하지만 ajax방식으로 변경됨에 따라 위 코드로 실검이 가져와지지 않는 것 이였다. 

주소창 아래에 친절히 수정코드도 있어 참고를 해보았다.

 


 

바로 아래 방법은 

https://jaeho0613.tistory.com/112

 

[Python Crawling] - 네이버 실검 크롤링 #1

현재 네이버 실시간 검색어 크롤링 방법이 달라졌다. 유튜브, 블로그 등에 많은 예제가 있지만 현재는 네이버 실시간 검색어가 동적으로 정보를 받게 바뀌어서 기존 예제들로 실시간 검색어를 �

jaeho0613.tistory.com

이곳을 참고 하였다.

 

 

import requests
from bs4 import BeautifulSoup
from urllib.request import urlopen

headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36'}
url = 'https://datalab.naver.com/keyword/realtimeList.naver?where=main'
res = requests.get(url, headers = headers)
soup = BeautifulSoup(res.content, 'html.parser')
data = soup.select('span.item_title')
for item in data:
    print(item.get_text())

 

이러한 방법과

 


 

 

인프런에서 나온 방법으로는

 

저 주소로 들어가보니

 

이렇게 받아오고 있었다.

 

 

그리고 json에서 data의 항목의 값만 출력

 

 

데이터 값만 출력하고 있다.

 

 

 

 

여기서 rank 는 1, keyword 는 요요미, keyword_synonyms 는 []이렇게 되어 있다. 여기서 나는 keyword를 사용하여 값을 가져올 것이다.

 

 

keyword값만 확실히 가져왔다.

사실상 이 방법은 Beautifulsoup라이브러리를 사용하지 않고 json데이터를 직접 가져온 것 이다.

import requests

json = requests.get("https://www.naver.com/srchrank?frm=main").json()
# print(json)

ranks = json.get("data")
# print(ranks)

for r in ranks:
    keyword = r.get("keyword")
    print(keyword)

따라서 크롤링은 맨 위에 방법으로 가져오는게 맞는거 같다.

'코딩 > Python' 카테고리의 다른 글

파이썬 pickle 모듈  (0) 2020.07.09
파이썬 내장 함수 모음(python function)  (0) 2020.07.08
python에서 __init__.py의 용도  (0) 2020.07.07
파이썬 튜플 한개만 추가 할때  (0) 2020.07.04
파이썬 함수  (0) 2020.07.03