과거 네이버 실시간 검색어 크롤링은 아래 사진의 창을 통해 크롤링을 했다. 그러나 이제는 이보다 더 편하게 크롤링 해 올 수 있다. 그러나 이제는 이 코드는 작동하지 않는다. 그래도 한번 설명하고 가는 편이 좋을듯하다.
from bs4 import BeautifulSoup
import requests
def hot_keywords():
url = "https://www.naver.com/"
res = requests.get(url).text
soup = BeautifulSoup(res, "html.parser")
Keys = soup.select("span.ah_k").text
index = 1
for key in Keys:
index += 1
print(str(index) + ". " + key)
if index >= 20:
break
hot_keywords()
1. source = requests.get("http://www.naver.com/").text
위 코드의 source = requests.get().text 함수는 파라미터의 url 혹은 ip 주소를 통해 요청하여 웹페이지를 받아오고 그것을 text의 형식으로 source에 넣는다.
2. soup = BeautifulSoup(source, "html.parser")
soup = BeautifulSoup(source, "html.parser")는 source를 "html.parser"를 통해 다듬는다(?)는 코드이다. 이럴 경우 html 문서를 BeautifulSoup이 프로세싱 하기 편하게 들여 쓰기나 여백인 줄을 지우는 프리 프로세싱을 한다.
3. Keys = soup.select("span.ah_k").text
Keys = soup.select("span.ah_k").text는 span 태그 중 ah_k라는 class 이름을 가진 모든 태그를 찾아가 내용을 리스트에 넣는다.
4. for
Keys 리스트의 요소들을 하나씩 출력한다.
그럼 현재 작동하는 코드는 아래 페이지를 크롤링 해 실시간 검색어를 크롤링 해온다.
그리고 윈도우의 경운 f12, 맥의 경우 option + commend + i 또는 fn + f12를 누르면 html 소스를 볼 수 있으며 우측 창의 좌측 상단의 아이콘을 클릭하면 다음과 같은 화면이 나오고 커서를 올려놓으면 해당 내용의 html tag를 찾아 보여준다.
그러면 위 코드를 그대로 응용하여 적용하면 된다. 그러나 이제는 몇 가지 더 필요한 것이 있다. 우선 header를 추가해 주어야 한다. header은 아래 것을 그래로 가져다 써도 무관하지만 자신의 header에 넣을 user agent를 보고 싶다면 이 링크를 가서 보면 된다. 그리고 나머지는 이전 코드와 변수 이름과 표현법만 조금 다를 뿐이다.
import requests
from bs4 import BeautifulSoup
def hot_keywords():
headers = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_16_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Whale/2.8.105.22 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 i in range(20):
print(str("%02d. " % (i + 1)) + data[i].get_text())
return(hot_keywords)
hot_keywords()
만약 자신의 코드가 작동하지 않는다면 에러 코드를 구글에 그래도 ctrl + c, ctrl + v를 해보면 많은 사람들이 똑같은 에러를 만났을 것이고 커뮤니티에 질문하고 답변을 받았을 것이다. 그걸 보고 해결하고 안된다면 stackoverflow 같은 커뮤니티에 질문한다면 많은 사람들이 친절하게 답변해 줄 것이다. 영어가 안된다며 facebook 생활코딩 같은 커뮤니티에 질문하는 것을 추천한다.
그리고 크롤링은 상업적이든 비상업적이든 이용이 불가능하다. 크롤링 정보를 서비스에 이용 시에는 네이버를 웹페이지가 아닌 법정에서 볼 수 있으니 조심해야 한다.
'Python' 카테고리의 다른 글
[Python]Python 개발 환경 Pycharm 설치 (0) | 2020.11.23 |
---|