반응형
이번에 배틀그라운드 모바일을 플레이하는 유저들의 실시간 반응을 얻기 위해 공식 카페에 있는 유저들의 반응들을 한 번 셀레니움을 이용해서 모아보았습니다.
이에 대한 정보를 찾기 위해 구글에 "파이썬 셀레니움 네이버 카페 크롤링"를 검색해 나온 결과들을 종합해서 저만의 코드로 짜보았습니다.
기초적인 부분들은 어느정도 이해가 되었지만 이 내용을 가지고 이제 네이버 카페가 아닌 다른 웹사이트에서 활용을 할 수 있어야되는데 그게 현재 안되는 것 같네요..
자세한 코드 분석은 다음 포스팅에서 이야기하도록 하겠습니다.
그럼 코드를 확인해보겠습니다.
import chromedriver_autoinstaller
import time
from selenium import webdriver
from bs4 import BeautifulSoup as bs
import csv
#카페 게시글 제목,링크를 저장하는 리스트 생성
total_list = ['제목', '링크']
#데이터를 저장하는 csv파일 생성
f = open('craw.csv', 'w', encoding="euc-kr", newline='')
wr = csv.writer(f)
wr.writerow([total_list[0], total_list[1]])
f.close()
# 변수 기본값 지정
url = 'https://nid.naver.com/nidlogin.login'
id = "네이버아이디"
pw = "네이버비밀번호"
# 크롬 드라이버는 이렇게 실행해야지 편하게 작업이 가능합니다.
# 자동으로 크롬 버전을 확인하는 코드chromedriver_autoinstaller
dir_driver = chromedriver_autoinstaller.get_chrome_version().split('.')[0]
driver = webdriver.Chrome(f'./{dir_driver}/chromedriver.exe')
driver.get(url)
driver.implicitly_wait(2)
# execute_script 함수 사용하여 자바스크립트로 id,pw 넘겨주기
driver.execute_script("document.getElementsByName('id')[0].value=\'" + id + "\'")
driver.execute_script("document.getElementsByName('pw')[0].value=\'" + pw + "\'")
# 로그인 버튼 클릭하기
driver.find_element_by_xpath('//*[@id="frmNIDLogin"]/fieldset/input').click()
time.sleep(1)
# 로그인 정보 저장안함 클릭하기
# login_btn = driver.find_element_by_id('new.dontsave')
# login_btn.click()
# time.sleep(1)
# 내가 검색하려는 카페 주소 입력하기
baseurl = 'https://cafe.naver.com/battlegroundsmobile/'
driver.get(baseurl)
# &search.menuid = : 게시판 번호
# &search.page = : 데이터 수집 할 페이지 번호
# &userDisplay = 50 : 한 페이지에 보여질 게시글 수
clubid = 카페 클럽 ID 번호 입력
menuid = 메뉴 ID 번호 입력
pageNum = 1
userDisplay = 50
driver.get(
baseurl + 'ArticleList.nhn?search.clubid=' + str(clubid) + '&search.menuid=' + str(menuid) + '&search.page=' + str(
pageNum) + '&userDisplay=' + str(userDisplay))
# iframe으로 접근
driver.switch_to.frame('cafe_main')
soup = bs(driver.page_source, 'html.parser')
print(str(soup))
soup = soup.find_all(class_='article-board m-tcol-c')[1]
# 네이버 카페 구조 확인후 게시글 내용만 가저오기
# datas = soup.find_all('td', class_ = 'td_article')
datas = soup.find_all(class_='td_article')
dates = soup.find_all(class_='td_date')
for data in datas:
article_title = data.find(class_='article')
link = article_title.get('href')
article_title = article_title.get_text().strip()
print(article_title)
print(baseurl + link)
# 인코딩은 utf-8이 좋아 보임
f = open('craw.csv', 'a+', newline='',encoding='utf-8')
wr = csv.writer(f)
wr.writerow([article_title, baseurl + link])
f.close()
print('종료')
# driver.close()
실행 결과 값
반응형
'Dev DBAN > 개발 이야기' 카테고리의 다른 글
HTTP 상태 코드 모음 (0) | 2021.10.02 |
---|---|
파이썬으로 뉴스 크롤링을 해주는 라이브러리 - Newspaper (2) | 2021.10.01 |
파이썬으로 자동 요약하기 5편 - 자동 요약mk.2 (0) | 2021.06.11 |
파이썬으로 기사 요약하기 4편 - 자동 포스팅 (6) | 2021.06.07 |
파이썬으로 기사 요약하기 3편 - 메일 전송 (0) | 2021.06.04 |
댓글