안 쓰던 블로그
[파이썬] beautifulsoup로 2020년 네이버 실시간 검색어 크롤링 하기 본문
파이썬 크롤링 시리즈
네이버 웹툰 이미지 크롤링, 저장하기: foxtrotin.tistory.com/173
셀레니움으로 웹 게임 자동 매크로 만들기: foxtrotin.tistory.com/179
네이버 실시간 검색어 가져오기: 현재글
네이버 웹툰 요일별 크롤링: foxtrotin.tistory.com/328
2020년 1월부터 네이버 실시간 검색어가 ajax통신 방식을 이용한 동적으로 바뀌면서 많은 블로그에서 했던 방식인 span.ah_k으로는 아무 값도 받아지지 않는다
현재 네이버 실시간 검색어를 크롤링하는 방법은 두 개가 있다
1. 데이터랩에서 크롤링
2. 데이터를 json형태로 받아와서 크롤링
이 글에서 두 가지를 다 다뤄볼 것이다
아래 크롤링 코드를 실행하기 위해서는 크롬 드라이버가 필요하다
foxtrotin.tistory.com/179
여기에서 설치 방법을 확인할 수 있다
1. 데이터랩에서 크롤링
datalab.naver.com/keyword/realtimeList.naver?where=main
네이버 데이터랩에 접속해서 태그를 확인한다
메타 태그 span class는 item_title
from bs4 import BeautifulSoup
from selenium import webdriver
import urllib.request
driver = webdriver.Chrome('chromedriver_win32\\chromedriver.exe')
driver.get("https://datalab.naver.com/keyword/realtimeList.naver?where=main")
html=driver.page_source
soup = BeautifulSoup(html, "html.parser")
index=0
def getkeyword():
keywords=soup.select("span.item_title")
print(keywords)
getkeyword()
일단 select로 데이터를 가져와서 print해 본다
아래처럼 나오면 정상이다
이제 이 값을 get_text를 써서 이쁘게 나눠주기만 하면 된다
전체 코드
from bs4 import BeautifulSoup
from selenium import webdriver
import urllib.request
driver = webdriver.Chrome('chromedriver_win32\\chromedriver.exe')
driver.get("https://datalab.naver.com/keyword/realtimeList.naver?where=main")
html=driver.page_source
soup = BeautifulSoup(html, "html.parser")
def getkeyword():
keywords=soup.select("span.item_title")
#print(keywords)
index=1
for key in keywords:
data = str(index)+". "+key.get_text()
print(data)
index+=1
getkeyword()
2. 데이터를 json형태로 받아와서 크롤링
이곳을 참고했다 www.inflearn.com/questions/22012
from bs4 import BeautifulSoup
import requests
json = requests.get('https://www.naver.com/srchrank?frm=main').json()
ranks = json.get("data")
print(ranks)
www.naver.com/srchrank?frm=main 이 주소가 메인페이지 내부에서 호출되는 실시간 검색어 데이터를 넘겨주는 주소다
그래서 이 주소를 가지고 .json()을 하면 데이터가 json형태로 넘어온다
json데이터에서 data 항목 값을 전부 가져와서 출력한다
이제 리스트를 돌면서 이쁘게 출력한다
전체코드
from bs4 import BeautifulSoup
import requests
json = requests.get('https://www.naver.com/srchrank?frm=main').json()
ranks = json.get("data")
#print(ranks)
for key in ranks:
rank = key.get("rank")
keyword = key.get("keyword")
print(rank, keyword)
위에랑 같은 결과가 나옴을 볼 수 있다
'언어 > 파이썬' 카테고리의 다른 글
[파이썬 Flask] 회원가입 웹 시스템 만들기 (0) | 2020.09.03 |
---|---|
[Flask] Flask-SQLAlchemy (0) | 2020.09.03 |
파이썬-selenium으로 웹 매크로 만들기 (0) | 2020.06.07 |
파이썬 beautifulsoup로 웹툰 크롤링, 다운로드 하기 (2) | 2020.05.30 |
VS 파이썬 unresolved import warning 해결 방법 - Visual Studio에서 Python 모듈 설치하기 (0) | 2020.05.30 |