인프런 커뮤니티 질문&답변

권윤경님의 프로필 이미지
권윤경

작성한 질문수

파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)

실전 크롤링과 강력한 크롤링 기술 팁2 (업데이트)

네이버 크롤링에서 결과값이 나오지 않습니다.

작성

·

430

0

import requests

from bs4 import BeautifulSoup

res = requests.get('https://www.naver.com/')

soup = BeautifulSoup(res.content,'html.parser')

mydata = soup.find_all('span',attrs={'class':'ah_k'})

for item in mydata:

    print(item.get_text())

============================

위와같이 실검키워드 크롤링하려는데 결과값이 나오지 않습니다. 어떤것 때문에 그러는지 알려주실수 있을까요?

네이버 안의 <a> 태그로 되어있는 제목은 크롤링 정상적으로 되는거 확인하였습니다.

답변 2

4

안녕하세요. 강좌에서 가능한 실제 크롤링 예제를 보여드리기 위해, 다양한 실제 사이트를 크롤링하는 코드를 설명드렸는데요. 그러다보니, 실제 사이트의 페이지가 변경이 되어, 크롤링 코드가 정상 동작하지 않는 경우가 있을 수 있습니다. 금번에 네이버 실시간 검색어 페이지가 변경되어, 관련하여 공유를 드립니다.

본 강좌의 목적은 특정 실제 사이트를 크롤링하는 것이 아니라, 파이썬 입문과 크롤링 기본 기술을 익히며, 파이썬과 데이터 수집 기술, 그리고 추가로 업무 자동화 기술도 익히시는 것이라서요. 입문자분들도 익힐 수 있는 부분에 집중한 것인데요.

네이버 사이트의 실시간 검색어 크롤링이 너무 많다보니, 네이버측에서 굉장히 크롤링을 어렵게 해놓은 것으로 보입니다. 그래서, 본래 쉬운 크롤링 예제로 낮은 난이도를 가지고 있었는데, 최상급 난이도로 올라간 상황입니다. 이 부분 이해 부탁드리며, 해당 크롤링은 크롤링 기술중 중급 이상의 기술인 selenium 기술과 bs4 기술을 혼합해서 사용해야만 해당 크롤링 연습을 해볼 수 있고 심지어 이를 위해서는 별도 프로그램을 PC에 설치해야만 해서, 참고로만 부탁드립니다.

해당 기술에 대해서는 PC에 관련 프로그램 설치 및 활용에 대해, 부득이 별도 크롤링 중급 강좌인 '현존 최강 크롤링 기술: Scrapy와 Selenium 정복'에서 설명해놓았습니다. 다음 코드는 해당 강좌를 다 수강한 후에야, 비로소 연습이 가능함을 부득이 이해를 부탁드립니다. 감사합니다.


from selenium import webdriver from selenium.common.exceptions import TimeoutException from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By from bs4 import BeautifulSoup

chromedriver = '/Users/jhleeroot/09_Libraries/chromedriver' driver = webdriver.Chrome(chromedriver) driver.get('https://www.naver.com') try: waits = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, 'ah_roll_area'))) page_source = driver.page_source soup = BeautifulSoup(page_source, "html.parser") data = soup.find_all('span', class_='ah_k') for rank, item in enumerate(data): print(str(rank + 1) + '위:', item.get_text())
except TimeoutException: print ("Loading took too much time!")

3

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

위 링크 제 코드 참조

권윤경님의 프로필 이미지
권윤경

작성한 질문수

질문하기