작성
·
513
0
loop, count=True, 0
#loop=0
#count=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'))
)
more_button=driver.find_element_by_css_selector('#alex-area > div > div > div > div.cmt_box > div.alex_more')
webdriver.ActionChains(driver).click(more_button).perform()
count +=1 # count += count+1
time.sleep(2)
#except:
except TimeoutException:
loop=False
선생님, 안녕하세요.
크롤링 강의도 잘 듣고 있습니다.
그런데 다음 덧글 가져오는 부분에서 코드를 실행하니까 저는 20개밖에는 출력이 안되는데 혹시 제가 코드를 잘못 입력한 부분이 있나요? 덧글이 20개는 나오는 것으로 보아 다른 곳은 이상이 없고 위 부분에서 제가 뭔가 잘못한 건가 싶어서요.
(혹은 중국 인터넷이 느린 게 원인이 될 수 있을까요? 그런데 여러 번 시행해 봐도 항상 20개씩만 불러져 오는 것으로 보아 코드의 문제 같은데요.)
죄송하지만 확인 좀 부탁드릴게요. 감사합니다.
답변 5
2
저도 댓글이 20개만 나오는데 추천댓글 시스템 때문에 그런 것 같아서, xpath로 해결했어요
latest = driver.find_element_by_xpath('''//*[@id="alex-area"]/div/div/div/div[3]/ul[1]/li[3]/button''')
latest.send_keys(Keys.ENTER)
time.sleep(5)
loop, count 전에 요 구문 넣었더니 나오더라고요. 바로 다음 강의가 xpath니까 듣고 나서 다시 시도해보시는 것도 좋을 것 같아요.
2
저도 비슷한 경우였는데요. 아마도 현재 코드는 기사를 열자마자 댓글을 추출하는데, 이 때 기본적으로 추천댓글이 열려 있기 때문에 댓글 개수가 소수만 추출되는 것 같습니다. 추천댓글은 다음 내부 알고리즘에 따라 댓글 중 일부만 골라서 보여주는 것들이기 때문입니다.
저는 추천댓글, 찬반순, 최신순, 과거순 중에 최신순을 클릭하는 코드를 추가해서 해결했습니다. 최신순으로 댓글을 부르면 100개 이하인 경우가 드물기 때문에 여러 개가 추출됩니다.
0
0
0
안녕하세요. 수업 잘 듣고 계시다니, 다행이네요.
중국? ㅎㅎ 중국은 어휴 저도 인터넷 자체가 검열이 되서, 검열이 되는 서버로 주소가 변환이 되서, 매우 특이한 환경이예요. 그래서 다음에 접속하는 것도 다른 방식으로 하기 때문에, 안될 수도 있어요.
느리기도 느리기 때문에, time.sleep() 을 바꿔줘야할 수도 있습니다.
중간에 time.sleep(10) 과 같이 이렇게 쓰면 다음 버튼이 나올 때까지 10초 기다리는 것입니다. 10초 60초 이런식으로 바꿔서 한번 크롤링해보시면 좋을 것 같습니다.
감사합니다.