셀레니움을 이용한 파이썬 크롤링이 궁금합니다.


셀레니움을 이용해 네이버 뉴스의 댓글을 불러오고자 합니다. 현재 파이썬 3.4를 사용중이며 윈도우 8.1 64bit 입니다.

이미지 현재 네이버 뉴스의 댓글은 "더보기"라는 창을 눌러야만 댓글들을 더 볼수 있으며 그 전에는 그냥 20개만을 보여줄뿐입니다. 저는 셀레니움을 이용해서 "더보기"를 5번 실행 후에 총 댓글들을 불러오고자 합니다.

from bs4 import BeautifulSoup from

selenium import webdriver

driver=webdriver.Chrome("C:\Users\kimty\Desktop\chromedriver.exe")

driver.get('http://news.naver.com/main/ranking/read.nhn?mid=etc&sid1=111&rankingType=popular_day&oid=214&aid=0000661050&date=20160820&type=2&rankingSectionId=101&rankingSeq=1&m_view=1')

html=driver.page_source

soup=BeautifulSoup(html,"html.parser")

typing=soup.find_all("span",{"class":"u_cbox_contents"})

print(typing)

driver.execute_script("u_cbox_page_more")

sleep(5)

제가 짠 코드는 이렇습니다. 에러가 생겨서 하나하나 실행해보니

driver.execute_script("u_cbox_page_more")

이 부분에서

Traceback (most recent call last):
File "", line 1, in driver.execute_script("u_cbox_page_more") File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 465, in execute_script 'args': converted_args})['value'] File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 236, in execute self.error_handler.check_response(response) File "C:\Python34\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 192, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: unknown error: u_cbox_page_more is not defined
(Session info: chrome=52.0.2743.116)
(Driver info: chromedriver=2.23.409699 (49b0fa931cda1caad0ae15b7d1b68004acd05129),platform=Windows NT 6.3.9600 x86_64)

이런 에러가 뜨더군요

그래서 요소 검사를 다시 해보니 이미지

이런 형태인데 자바 스크립트 형태가 아닌 경우 어떻게 해야 제가 원하는 대로 가능할까요??

  • 2016년 08월 21일에 작성됨
    데이터 사이언티스트를 꿈꾸는 빅데이터학과 석사생

조회수 403


1 답변


JavaScript로 HTML 속성을 이용하여 어떻게 해당 태그를 검색하는가에 대한 질문같은데요, 해당 경우에는 JavaScript의 DOM 기능을 활용하여 기능을 수행할 수 있습니다.

// 해당 class를 가진 태그는 아래의 함수로 얻어올 수 있습니다.
// 유의할 점은, "Elements"라는 이름에 걸맞게 배열을 리턴합니다.
var btns = document.getElementsByClassName('u_cbox_page_more');
// 함수 이름대로 같은 class를 가진 HTML 태그들이 많음을 가정합니다.
// 그 중 첫 번째 태그를 가져옵니다.
var btn = btns[0];
// 해당 버튼에 click 이벤트를 호출합니다.
btn.click();

이런 느낌의 스크립트를 실행하면 되실 것 같습니다.

  • 2016년 09월 17일에 작성됨
    해킹 대회와 웹 프로그래밍을 좋아함

  • 자바스크립트가 아니라 파이썬으로 하려고해서요..    이규남   2016.10.14 10:16     

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close