- 본 강의 영상 학습 관련 문의에 대해 답변을 드립니다. (어떤 챕터 몇분 몇초를 꼭 기재부탁드립니다)
- 이외의 문의등은 평생강의이므로 양해를 부탁드립니다
- 현업과 병행하는 관계로 주말/휴가 제외 최대한 3일내로 답변을 드리려 노력하고 있습니다
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
안녕하세요, 우선 다른 강의에 질문을 드리는 점 죄송스럽게 생각합니다.
현재 듣고 있는 중급 selenium&scrapy는 질문창이 닫혀있더라구요..
크롤링 고급 강좌도 결제해두고 중급 부터 듣고 있는 상황입니다.
고민도, 검색도, 질문도 여러 군데 해보았지만 답변을 찾지 못해 부득이 질문 올립니다.
강좌는 이미 펼쳐져있는 댓글 창에서 '더보기'를 누르고 추가적으로 크롤링을 하는 코드를 알려주었는데요,
기존 강좌 제작 시점과 달리 댓글은 기본적으로 닫혀 있고 on/off 버튼을 눌러야 댓글이 보이게 됩니다.
강의 활용해서 on_button 변수를 만들고, 이를 클릭할 수 있도록 한 번 꾸며 봤는데요,
태그도 바꿔보고, 함수도 바꿔보고, 다양한 방법으로 시도를 해봤는데, On/Off 버튼을 누르는 것을 못합니다 ㅠ
태그도 div.cmt_count_box까지만 해보고, button까지도 해보고, span까지도 해보고, 다양한 방법으로 시도 해봤습니다.
on_button = driver.find_element_by_css_selector('alex-area > div > div > div > div.cmt_count_box > button') webdriver.ActionChains(driver).click(on_button).perform()
아무래도 눈으로 보고 직접 체득해야 실력이 Up되지 않을까 해서 강의만 보고 넘어가기 보다는, 한 번 직접 구현해보고 싶어 문의 드리고자 합니다. 기초 강의 때에는 조금씩 페이지가 바뀌는 부분도 고민해서 넣다보면 어느순간 해결이 되었는데, 나름 중급이라 조금 어렵네요 ㅎㅎ
도움 부탁 드려 보겠습니다!
[작성코드]
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.common.exceptions import TimeoutException import time chromedriver = '/usr/local/chromedriver' driver = webdriver.Chrome(chromedriver) driver.get('https://news.v.daum.net/v/20190709165157301?d=y') #댓글창 On/Off 버튼 누르기 - 게속 안됨 ㅠ element = WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.CSS_SELECTOR, 'alex-area > div > div > div > div.cmt_count_box > button'))) on_button = driver.find_element_by_css_selector('alex-area > div > div > div > div.cmt_count_box > button') webdriver.ActionChains(driver).click(on_button).perform() #더보기 누르기 로직 만들기 loop, count = True, 0 while loop and count < 10: try: element = WebDriverWait(driver, 5).until( EC.presence_of_element_located((By.CSS_SELECTOR, 'alex-area > div > div > div > div.cmt_box > div.alex_more > button')) ) more_button = driver.find_element_by_css_selector('alex-area > div > div > div > div.cmt_box > div.alex_more > button') webdriver.ActionChains(driver).click(more_button).perform() count = count + 1 #count += 1로도 가능 time.sleep(2.0) except TimeoutException : loop = False #크롤링하기 comment_box = driver.find_element_by_css_selector('alex-area > div > div > div > div.cmt_box > ul.list_comment') comment_list = comment_box.find_elements_by_tag_name('li') #각각 댓글은 li가 감싸고 있음 for num, comment_item in enumerate(comment_list) : print("[",+str(num+1),+"]", comment_item.find_element_by_css_selector('div p').text) driver.quit() #alex-area > div > div > div > div.cmt_count_box > button > span <- on/off #alex-area > div > div > div > div.cmt_box > div.alex_more > button > span:nth-child(1) <- 더보기버튼 #alex-area > div > div > div > div.cmt_box > ul.list_comment <- 댓글리스트
저는 작년에SQL 파다가, 올해 다시 크롤링을 배우러 왔는데 할인 기간을 완전히 놓치고 정가로 구입했네요 ㅎㅎ..
안그래도 수정사항이나 다른 안내들이 있을까봐 질문을 올리기 전, 크롤링 중급 - selenium&scrapy 공지사항들을 살펴봤는데, 아래 써주신 내용은 여기 고급 강좌에 있다고 보면 될까요?
[강사님이 작년 11월에 작성하신 글]
그래서, 다양한 사이트를 보여드리기는 부분은 아쉽지만, 포기하고, 가능한 제가 개인적으로 테스트 차원에서 만든 일종의 블로그 사이트를 기반으로, selenium 부분을 테스트할 수 있도록, 코드를 작성하고, 강의를 새로 업데이트할 예정입니다.
제가 현업에 있다보니, 급하게 이 부분만 진행하기는 무리가 있지만, 가능한 11월 내에는 업데이트를 하도록 하고, 다시 공지드리겠습니다.
이미 잔재미코딩 관련 여러 강의를 듣고 계신 분들께서는, 어떻게 보면 추가 강의를 얻으시는 것이라고 긍정적으로 생각해주시면 좋을 것 같습니다. 항상 제 강의를 선택해주신 분들은, 최소한 기대를 저버리지 않게, 좋은 경험을 할 수 있도록 노력하겠습니다.