2022.12.20. 다음 카페 웹 스크래핑
해야 하는 작업
엑셀 파일 생성하고 주소 입력, 아이디 입력, 패스워드 입력, 게시판 뒤 숫자 입력, 게시판 주소 입력
참고 자료
파이썬 코딩 무료 강의 (활용편3) - 웹 크롤링? 웹 스크래핑! 제가 가진 모든 비법을 알려드리겠습니다. [나도코딩]
[Selenium+bs4] 네이버 카페 검색창, iframe 크롤링 방법, 네이버 로그인 방법
[Selenium+bs4] 네이버 카페 검색창, iframe 크롤링 방법, 네이버 로그인 방법
이 글은 네이버 카페내의 결과에서 게시글 제목을 리스트로 출력하고, 게시글을 순서대로 클릭해서 들어갔다가 나가는 코드 설명입니다. # 1. iframe이란? 네이버 카페 내에서 카페내 검색 결과를
gorokke.tistory.com
# 다음 카페 제목 글쓴이 링크 가져오기
from selenium import webdriver
import time
from selenium.webdriver.common.by import By
import requests
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
import openpyxl
# 엑셀 저장
# 미리 엑셀 파일 생성하고 주소 입력
fpath = (r'D:\coding\python\daumcafe1.xlsx')
wb = openpyxl.load_workbook(fpath)
ws = wb.active
# 셀레늄 크롬드라이버 연동
chrome_options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=chrome_options)
# 다음 로그인 싸이트 이동
driver.get("https://accounts.kakao.com/login/?continue=https%3A%2F%2Flogins.daum.net%2Faccounts%2Fksso.do%3Frescue%3Dtrue%26url%3Dhttps%253A%252F%252Fwww.daum.net")
# 아이디 패스워드 입력
driver.find_element(By.NAME,"loginKey").send_keys(" 아이디 입력 ")
driver.find_element(By.NAME,"password").send_keys(" 패스워드 입력 ")
driver.find_element(By.XPATH, r'//*[@id="mainContent"]/div/div/form/div[4]/button[1]').click()
time.sleep(1)
# 다음카페 이동
row = 2
# 게시판 맨 뒤 숫자 입력
for i in range(게시판 맨 뒤 숫자 예시: 1, 2000):
#print("페이지 :", i)
# 게시판 주소 입력
driver.get("게시판 주소 예시:https://cafe.daum.net/sedu22/IDO/{}".format(i))
driver.implicitly_wait(3)
# iframe으로 이동, 뷰트풀숩으로 타이틀, 이름 추출
driver.switch_to.frame("down")
soup = BeautifulSoup(driver.page_source, "lxml")
title = soup.title.get_text()
title1 = title[16:-10]
print(title1)
ws[f'C{row}'] = title1
name = soup.find(attrs={"class":"link_item"})
if name:
name = name.get_text()
print(name)
ws[f'D{row}'] = name
else:
continue
link = driver.current_url
print(link)
ws[f'B{row}'] = link
row = row + 1
wb.save(fpath)
# 끄기
driver.close()
'coding' 카테고리의 다른 글
[Baekjoon] 백준 Python 2단계 조건문(1330, 9498, 2753, 14681, 2884, 2525, 2480) (0) | 2022.08.02 |
---|---|
[Baekjoon] 백준 Python 1단계 입출력과 사칙연산(2557, 10718, 1000, 1001, 10998, 1008, 10869, 10430, 2588) (0) | 2022.07.30 |