본문 바로가기

코린이_탈출/크롤링

[모각코_크롤링] 동적 크롤링 4

[공부 내용]

"""
[동적 크롤링을 이용하여 네이버 로그인 후 카페 게시글 가져오기]
자동입력방지 기능을 막기 위해 send_keys() 함수가 아닌  execute_script() 함수 사용.
로그인 버튼 태그와 선택자 > id : log.login
신규회원게시판 버튼 태그와 선택자 > id : menuLink90
첫 번째 게시물의 XPath > //*[@id="main-area"]/div[4]/table/tbody/tr[1]/td[1]/div[2]/div/a
게시물 내용의 태그와 선택자 > 태그 : div > class : se-module.se-module-text
"""
from selenium import webdriver
import time

"""네이버 로그인 페이지 접속"""
driver = webdriver.Chrome('./chromedriver')  #자동화된 크롬창 실행

login_url = 'https://nid.naver.com/nidlogin.login?mode=form&url=https%3A%2F%2Fwww.naver.com'
driver.get(login_url)

time.sleep(2)

"""아이디 비밀번호 입력"""
#본인의 아이디, 비밀번호를 각각 변수에 저장
my_id = '아이디'
my_pw = '비밀번호'

#아이디와 비밀번호 입력 > 'execute_script()' 함수를 사용하여 자바스크립트로 아이디와 비밀번호를 넘기기
driver.execute_script("document.getElementsByName('id')[0].value = \'" + my_id + "\'")
driver.execute_script("document.getElementsByName('pw')[0].value = \'" + my_pw + "\'")

"""로그인 버튼 클릭"""
driver.find_element_by_id('log.login').click()

time.sleep(1)

"""코뮤니티 접속"""
comu_url = 'https://cafe.naver.com/codeuniv'
driver.get(comu_url)

time.sleep(1)

"""신규회원게시판 클릭"""
driver.find_element_by_id('menuLink90').click()

time.sleep(1)

"""프레임 전환
[프레임]은 웹 페이지의 HTML 안에 또 다른 HTML을 넣어둔 것 > iframe 을 검색
게시판 프레임 태그 확인 
: <iframe name="cafe_main" id="cafe_main" title="카페 메인" src="//cafe.naver.com/MyCafeIntro.nhn?clubid=30026525" width="860" height="100%" frameborder="0" scrolling="no" marginwidth="0" marginheight="0" allowtransparency="true" allowfullscreen="" style="height: 1720px;"></iframe>
여러 선택자 중 'name'을 사용하여 크롤링 할 때 프레임을 전환
cf)기본 코드
driver.switch_to.frame('프레임의 name')
"""
driver.switch_to.frame('cafe_main')

time.sleep(1)

"""첫번쨰 게시물 클릭"""
driver.find_element_by_xpath('//*[@id="main-area"]/div[4]/table/tbody/tr[1]/td[1]/div[2]/div/a').click()

time.sleep(1)

"""글 내용 출력"""
content = driver.find_element_by_css_selector('div.se-component-content').text
print(content)

# 크롬 창 닫기
driver.close()