Crawling & 자동화 (블로그 작성)

XTHK·2025년 5월 14일

Anaysis

목록 보기
15/23
post-thumbnail

1. 네이버 금융에서 금일 급상승한 주식 종목 크롤링

from selenium import webdriver
from selenium.webdriver.common.by import By

import requests
from bs4 import BeautifulSoup

import pandas as pd
import numpy as np

from tqdm import tqdm
import time
import random

import pyautogui
import pyperclip

import datetime


# Requests
# 네이버 금융 페이지 (상승 종목 확인)
url_get = requests.get('https://finance.naver.com/sise/sise_rise.naver')
# 페이지가 등락률 순으로 정렬되어있음
df2 = pd.read_html(url_get.text)[1]

driver.switch_to.window(driver.window_handles[-1])
# 기존의 탭 종료했을 시
# 혹은 여러 탭 중 맨 마지막 탭을 사용

# 네이버 금융 페이지 (상승 종목 확인)
url_get = requests.get('https://finance.naver.com/sise/sise_rise.naver')
# 페이지가 등락률 순으로 정렬되어있음
df2 = pd.read_html(url_get.text)[1]

cond1 = (df2['종목명'].isna())
df3 = df2.loc[~cond1]

2. 블로그 포스팅 준비

# 현재 날짜와 시간 가져오기
today = datetime.datetime.now()
str(today.date())

# 제목
title_text = "[금융하나로] 금일 급상승 주가 (" + str(today.date()) + ')' 

# 내용 
context_text = '''
안녕하세요. 
금융하나로입니다
금일 급증한 종목들에 대해 알아보겠습니다. 
''' + '''
급상승한 상위 5개 종목은 아래와 같습니다.

''' + str(df3.head(5)[['종목명','현재가','등락률']])

3. 블로그 자동 포스팅

이미지 내 아이콘을 인식하여 웹 이동 자동화

# 네이버 로그인 접근
driver.get('https://nid.naver.com/nidlogin.login?mode=form&url=https://www.naver.com/')
driver.implicitly_wait(10)

# 로그인 정보 입력
# 자신의 id를 id에 입력할 것
driver.find_element(By.XPATH, '//*[@id="id"]').send_keys('id')
time.sleep(0.3)

# 자신의 암호를 pw에 입력할 것
driver.find_element(By.XPATH, '//*[@id="pw"]').send_keys('pw')

# 로그인 버튼 클릭
driver.find_element(By.XPATH, '//*[@id="log.login"]').click()


# 로그인 완료 후, 네이버 메인 페이지로 이동
driver.get('https://www.naver.com/')
driver.implicitly_wait(10)
time.sleep(2)


# 블로그 아이콘 클릭
a = pyautogui.locateOnScreen("blog0.png", confidence = 0.5)
a = pyautogui.center(a)

pyautogui.moveTo(a)
time.sleep(2)

pyautogui.click()
time.sleep(2)

# 글쓰기 선택
a = pyautogui.locateOnScreen("blog1.png", confidence = 0.9)
a = pyautogui.center(a)

pyautogui.moveTo(a)
time.sleep(5)

pyautogui.click()
time.sleep(3)

# (필요 시) 도움말 닫기
try:
    driver.find_element(By.XPATH, '//*[@id="SE-dee7ced8-c054-48d9-91a8-8d18254d3154"]/div[1]/div/div[1]/article/div/header/button').click()

except:
    pass
블로그 아이콘글쓰기 버튼

내용 첨부

# 제목
a = pyautogui.locateOnScreen("blog2.png", confidence = 0.6)
a = pyautogui.center(a)

pyautogui.moveTo(a)
time.sleep(3)

pyautogui.click()
time.sleep(3)

# 위에서 정한 제목을 복사한 후
pyperclip.copy(title_text)
# 붙여넣기
pyautogui.hotkey("ctrl", 'v')

time.sleep(3)


# 본문

# confidence = 이미지를 찾을 때의 정확도를 설정
# 0.9로 = 90% 이상 일치하는 이미지만 찾음
a = pyautogui.locateOnScreen("blog3.png", confidence = 0.9)

# 찾은 이미지의 중심 좌표
a = pyautogui.center(a)

# 계산된 중심 좌표로 마우스 포인터를 이동
pyautogui.moveTo(a)

# 이동 후 3초간 대기
time.sleep(3)

# 마우스 클릭
pyautogui.click()
time.sleep(3)

# context_text를 클립보드에 복사
pyperclip.copy(context_text)

# 'ctrl'과 'v'를 누름
pyautogui.hotkey("ctrl", 'v')
time.sleep(3)


# 발행
a = pyautogui.locateOnScreen("blog4.png", confidence = 0.7)
a = pyautogui.center(a)
pyautogui.moveTo(a)
time.sleep(3)
pyautogui.click()
time.sleep(3)

# 발행2
a = pyautogui.locateOnScreen("blog5.png", confidence = 0.9)
a = pyautogui.center(a)
pyautogui.moveTo(a)
time.sleep(3)
pyautogui.click()
time.sleep(3)
제목본문발행 1발행 2

블로그 작성 일련의 과정 통합

# 한꺼번에 실행

# 블로그 주소로 이동한 후 글쓰기 페이지로 이동
driver.get('https://blog.naver.com/GoBlogWrite.naver')
# 도움말 닫기
try:
    driver.find_element(By.XPATH, '//*[@id="SE-dee7ced8-c054-48d9-91a8-8d18254d3154"]/div[1]/div/div[1]/article/div/header/button').click()

except:
    pass


# 제목
a = pyautogui.locateOnScreen("blog2.png", confidence = 0.6)
a = pyautogui.center(a)
pyautogui.moveTo(a)
time.sleep(3)
pyautogui.click()
time.sleep(3)
pyperclip.copy(title_text)
pyautogui.hotkey("ctrl", 'v')
time.sleep(3)


# 본문
a = pyautogui.locateOnScreen("blog3.png", confidence = 0.9)
a = pyautogui.center(a)
pyautogui.moveTo(a)
time.sleep(3)
pyautogui.click()
time.sleep(3)
pyperclip.copy(context_text)
pyautogui.hotkey("ctrl", 'v')
time.sleep(3)


# 발행
a = pyautogui.locateOnScreen("blog4.png", confidence = 0.7)
a = pyautogui.center(a)
pyautogui.moveTo(a)
time.sleep(3)
pyautogui.click()
time.sleep(3)


# 발행2
a = pyautogui.locateOnScreen("blog5.png", confidence = 0.9)
a = pyautogui.center(a)
pyautogui.moveTo(a)
time.sleep(3)
pyautogui.click()
time.sleep(3)

profile
Analyse the world

0개의 댓글