[네이버 블로그 자동화 - 1] 기본설정과 블로그 읽기
첫 번째로는 기본 설정과 블로그 읽기에 대해 작성해보겠습니다.
좋아요 자동화나 댓글 자동화 전에 꼭 해야 할 일입니다.
python Interpreter을 세팅하고, 그에 맞는 라이브러리까지 설정해야 합니다.
그리고 특정 키워드를 가진 블로그를 읽어오는 것 까지를 진행하겠습니다.
python 3.9 버전을 사용했고, 먼저 아래 라이브러리를 사용했습니다.
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
import time
기본적으로 웹 페이지를 띄우고 행동하기 위한 selenium 과 중간중간 사람처럼 보이기 위한 sleep을 위해 time을 import 했습니다.
다음으로 기본적은 selenium 설정은 다음과 같습니다.
options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
options.add_experimental_option("detach", True)
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
- --headlss 옵션은 크롬 브라우저 창을 열지 않고 실행하기 위한 명령어입니다.
- 혹시나 크롬 브라우저를 띄우고 진행하는 내용을 보고 싶으시다면 해당 옵션은 제거해주세요
- --no-sandbox 옵션은 샌드박스기능을 끄는 명령어입니다.
- 샌드박스 기능은 브라우저의 각 탭이 별도 프로세스로 돌게하는 기능인데, 이를 끄는 것이죠.(각 탭이 별도 브라우저 처럼 동작)
- --disable-dev-shm-usage 옵션은 공유 메모리 관련 기능을 끄는 명령어입니다.
이 설정들이 selenium을 사용해 크롬 브라우저를 동작시킬때 원활하게 하기 위한 몇 가지 기본 설정이라 봐주시면 됩니다.
이제 기본 설정이 끝났으니, 실제 블로그를 긁어보겠습니다. get_blog_links라는 함수를 만듭니다.
def get_blog_links():
search_url = "https://section.blog.naver.com/Search/Post.naver?pageNo=1&rangeType=ALL&orderBy=sim&keyword=%EB%8F%99%EB%AC%BC%EC%9B%90"
driver.get(search_url)
time.sleep(3)
return [element.get_attribute('href') for element in driver.find_elements(By.CSS_SELECTOR, 'a.desc_inner') if
element.get_attribute('href')]
search_url은 블로그에서 '동물원' 이라는 키워드를 검색한 페이지 링크입니다.
다음과 같은 화면의 페이지 입니다. 이를 가져와서 각 리스트의 링크를 추출하는 역할을 합니다.
(현재는 1page만 가져오나, 추후 페이징되는 범위를 넓혀보겠습니다)
다음으로는 가져온 각 블로그 링크의 본문을 긁어오는 함수인 get_blog_content()를 만들어보겠습니다.
def get_blog_content(blog_url):
driver.get(blog_url)
time.sleep(2)
try:
driver.switch_to.frame('mainFrame')
content = driver.find_element(By.CSS_SELECTOR, '.se-main-container').text
driver.switch_to.default_content()
return content
except Exception as e:
print(f" Fail : {e}")
driver.switch_to.default_content()
return None
이 때도 중간에 역시 일부 sleep을 주었습니다.
중간에 메인프레임으로 전환하는 코드가 있는데요. 이는 우리가 본문을 가져 올 때 메인프레임에서 해당 데이터를 가져와야 하기 때문입니다. content를 잘 가져 왔으면 해당 content값을 반환하는 아주 간단한 코드입니다.
마지막으로는 위 코드들을 실행해보고, 결과를 살펴보겠습니다
blog_links = get_blog_links()
for link in blog_links:
blog_content = get_blog_content(link)
print(blog_content)
driver.quit()
처음 넣은 키워드의 링크들을 가져오고, 각 링크별로 본문을 가져옵니다.
그리고 이를 출력합니다.
예시) 더운 날씨가 풀리고 외출의 계절이 왔습니다....
모든 프로세스가 끝나면 크롬 드라이버를 종료시킵니다.
이렇게 오늘 간단하게 코드를 작성해보았습니다.
이 과정까지가 끝나면 다음 결과를 얻을 수 있습니다.
- 내가 원하는 키워드의 상위 블로그 링크
- 각 블로그의 본문
본문은 얻어서 무엇을 하느냐 하실 수 있는데, 이는 추후 맞춤형 댓글들을 위해 필요할 것 같아 우선 수집했습니다.
그럼 오늘의 글은 여기서 마치겠습니다.
피드백 주실 부분이 있다면 부탁드립니다. 감사합니다.
'Automation' 카테고리의 다른 글
[네이버 블로그 자동화 - 2] 좋아요 누르기 자동화 (3) | 2024.10.26 |
---|---|
[네이버 블로그 자동화 - 0] 계획 세우기 (5) | 2024.10.23 |