반응형
반응형
반응형

[셀레니움 응용] 네이버 메일 보내기

파이썬 셀레니움을 사용하여 네이버 메일을 자동으로 보내는 방법을 소개합니다.




셀레니움 기초 네이버 로그인하기에 이어 메일보내는 방법입니다. 로그인 후 click, send_keys만으로 쉽게 메일을 보낼 수 있습니다.

  • 코드 설명이 필요하신 분들은 여기를 클릭해주세요.
# selenium Ver : 3.14.1
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import clipboard
import time

# 웹드라이버 열기 (네이버 메인 화면)
driver = webdriver.Chrome()
driver.get("https://www.naver.com/")

# 네이버 메인화면에서 로그인 버튼 클릭
driver.find_element_by_xpath('//*[@id="account"]/a').click()
time.sleep(1)   # 1초 시간 지연

# 로그인 창에 아이디/비밀번호 입력
loginID = "로그인 ID"
clipboard.copy(loginID)
driver.find_element_by_xpath('//*[@id="id"]').send_keys(Keys.CONTROL, 'v')

loginPW = "로그인 PW"
clipboard.copy(loginPW)
driver.find_element_by_xpath('//*[@id="pw"]').send_keys(Keys.CONTROL, 'v')
time.sleep(1)

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

# 네이버 메일 클릭
driver.find_element_by_xpath('//*[@id="NM_FAVORITE"]/div[1]/ul[1]/li[1]/a').click()
# 메일 쓰기 클릭
driver.find_element_by_xpath('//*[@id="nav_snb"]/div[1]/a[1]/strong').click()

time.sleep(1)

# 받는 사람
mail_to = '받는 사람 주소'
# 제목
mail_title = '제목'
# 내용
mail_cont = '내용'

driver.find_element_by_xpath('//*[@id="toInput"]').send_keys(mail_to)
driver.find_element_by_xpath('//*[@id="subject"]').send_keys(mail_title)
driver.find_element_by_xpath('//*[@id="subject"]').send_keys(Keys.TAB, mail_cont)

# 메일 보내기 버튼 클릭
driver.find_element_by_xpath('//*[@id="sendBtn"]').click()


python3.9 | camp-lee@naver.com

반응형
반응형

[셀레니움 기초 4편] html 데이터 읽기 bs4

파이썬, 셀레니움을 사용하여 인터넷에 원하는 정보를 자동으로 스크랩하는 방법을 소개합니다.




목차:




1. BeautifulSoup 소개

html 정보를 파싱하는 도구

  • BeautifulSoup의 bs4 패키지를 사용하여 html을 분석하여 원하는 데이터를 얻을 수 있습니다.
  • 셀레니움, requests 패키지 등과 사용할 수 있습니다.
  • bs4 패키지 설치 pip install beautifulsoup4



2. 네이버 현재 상영작 정보 개발자 도구로 분석

네이버 현재상영작 검색 바로가기

  1. 네이버에서 현재상영작을 검색합니다.
  2. [F12] 또는 [우클릭 > 검사]개발자 도구 를 열어줍니다.
  3. 개발자 도구 를 사용해서 해당 영역의 html을 분석합니다.
    • ※ 어느 영역을 선택하느냐에 따라 결과가 달라질 수 있습니다.
    • ※ 중복되는 class name이 있을 수 있습니다.


  1. 해당 영역이 'data_box' 라는 class 로 묶여 있는 것을 확인할 수 있습니다.
  2. class name의 데이터를 텍스트형식으로 얻어보겠습니다.



3. 셀레니움 + html 파싱

class : data_box 의 텍스트 데이터를 추출해보겠습니다.

# selenium Ver : 3.14.1
from selenium import webdriver
# pip install beautifulsoup4
from bs4 import BeautifulSoup as bs

# 웹드라이버 열기 (네이버에 현재상영작 검색 URL)
url = "https://search.naver.com/search.naver?sm=tab_hty.top&query=현재상영작"
driver = webdriver.Chrome()
driver.get(url)

# 크롬드라이버의 현재 페이지의 url 얻기
page_url = driver.page_source
# 현재 url 주소의 html 데이터를 파싱
soup = bs(page_url, "html.parser")
movie_list = soup.find_all(class_='data_box')

# 8개의 영화 정보가 리스트로 저장되어 있습니다.
for movie_info in movie_list:
    print(movie_info.text)

결과 (날짜에 따라 결과가 다를 수 있습니다.)

   듄     개요 모험 155분   개봉 2021.10.20. 평점 8.33   출연  티모시 샬라메, 레베카 퍼거슨, 오스카 아이삭, 조슈 브롤린, 제이슨 모모아, 하비에르 바르뎀    
   베놈 2: 렛 데어 비 카니지     개요 액션 97분   개봉 2021.10.13. 평점 6.28   출연  톰 하디, 미셸 윌리엄스, 나오미 해리스, 레이드 스콧, 스테판 그레이엄, 우디 해럴슨    
   보이스     개요 범죄 109분   개봉 2021.09.15. 평점 8.43   출연  변요한, 김무열, 김희원, 박명훈, 이주영, 조재윤    
   007 노 타임 투 다이     개요 액션 163분   개봉 2021.09.29. 평점 7.09   출연  다니엘 크레이그, 라미 말렉, 라샤나 린치, 레아 세이두, 벤 위쇼, 아나 디 아르마스    
   라스트 듀얼: 최후의 결투     개요 액션 152분   개봉 2021.10.20. 평점 9.80   출연  맷 데이먼, 아담 드라이버, 조디 코머, 벤 애플렉, 해리엇 월터, 나다니엘 파커    
   기적     개요 드라마 117분   개봉 2021.09.15. 평점 9.11   출연  박정민, 이성민, 윤아, 이수경, 김강훈, 정문성    
   노회찬6411     개요 다큐멘터리 127분   개봉 2021.10.14. 평점 9.30   출연  노회찬    
   한창나이 선녀님     개요 다큐멘터리 83분   개봉 2021.10.20. 평점 10.00   출연  임선녀  



4. requests + html 파싱

pip install requests

# selenium Ver : 3.14.1
# pip install beautifulsoup4
from bs4 import BeautifulSoup as bs
# pip install request
import requests

# 네이버에 현재상영작 검색 바로가기 URL
url = "https://search.naver.com/search.naver?sm=tab_hty.top&query=현재상영작"
response = requests.get(url)

# 상태체크 "200" : "정상", 정상일 경우 파싱
if response.status_code == 200:
    html = response.text
    soup = bs(html, "html.parser")
    movie_list = soup.find_all(class_='data_box')

    # 8개의 영화 정보가 리스트로 저장되어 있습니다.
    for movie_info in movie_list:
        print(movie_info.text)

결과 (날짜에 따라 결과가 다를 수 있습니다.)

   듄     개요 모험 155분   개봉 2021.10.20. 평점 8.33   출연  티모시 샬라메, 레베카 퍼거슨, 오스카 아이삭, 조슈 브롤린, 제이슨 모모아, 하비에르 바르뎀    
   베놈 2: 렛 데어 비 카니지     개요 액션 97분   개봉 2021.10.13. 평점 6.28   출연  톰 하디, 미셸 윌리엄스, 나오미 해리스, 레이드 스콧, 스테판 그레이엄, 우디 해럴슨    
   보이스     개요 범죄 109분   개봉 2021.09.15. 평점 8.43   출연  변요한, 김무열, 김희원, 박명훈, 이주영, 조재윤    
   007 노 타임 투 다이     개요 액션 163분   개봉 2021.09.29. 평점 7.09   출연  다니엘 크레이그, 라미 말렉, 라샤나 린치, 레아 세이두, 벤 위쇼, 아나 디 아르마스    
   라스트 듀얼: 최후의 결투     개요 액션 152분   개봉 2021.10.20. 평점 9.80   출연  맷 데이먼, 아담 드라이버, 조디 코머, 벤 애플렉, 해리엇 월터, 나다니엘 파커    
   기적     개요 드라마 117분   개봉 2021.09.15. 평점 9.11   출연  박정민, 이성민, 윤아, 이수경, 김강훈, 정문성    
   노회찬6411     개요 다큐멘터리 127분   개봉 2021.10.14. 평점 9.30   출연  노회찬    
   한창나이 선녀님     개요 다큐멘터리 83분   개봉 2021.10.20. 평점 10.00   출연  임선녀  




[셀레니움 기초 1편] 패키지 설치 및 웹페이지 열기
[셀레니움 기초 2편] 텍스트 입력 | 버튼 클릭 | 페이지 이동
[셀레니움 기초 3-1편] 네이버 자동 로그인
[셀레니움 기초 3-2편] 쿠팡 자동 로그인
[셀레니움 기초 4편] html 데이터 읽기 bs4


python3.9 | camp-lee@naver.com

반응형
반응형

[셀레니움 기초 3-2편] 쿠팡 자동 로그인

파이썬, 셀레니움을 사용하여 인터넷에 원하는 정보를 자동으로 스크랩하는 방법을 소개합니다.




목차:




1. 셀레니움 패키지 설치

이 번 포스팅에서는 selenium 3.14.1 버전을 사용합니다.




2. 예제

쿠팡 로그인

  • 아래의 코드를 붙여넣고 아이디, 비밀번호를 수정합니다.
# selenium Ver : 3.14.1
from selenium import webdriver
import time

# 웹드라이버 열기 (쿠팡)
driver = webdriver.Chrome()
#
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument",
                       { "source": """ Object.defineProperty(navigator, 'webdriver', { get: () => undefined }) """ })
driver.get("https://www.coupang.com/")
time.sleep(1)
# 쿠팡 로그인 버튼 클릭
driver.find_element_by_xpath('//*[@id="login"]/a').click()
time.sleep(1)

# 로그인 창에 아이디/비밀번호 입력
driver.find_element_by_xpath('//*[@id="login-email-input"]').send_keys("아이디")
time.sleep(1)
driver.find_element_by_xpath('//*[@id="login-password-input"]').send_keys("비밀번호")
time.sleep(1)

# 로그인 버튼 클릭
driver.find_element_by_xpath('/html/body/div[1]/div/div/form/div[5]/button').click()



  • 1. 크롬 검사도구를 사용해 xpath, id 등 elements를 얻을 수 있고 element에 맞게 수정해서 사용할 수 있습니다.
    • 이 예제에선 Xpath를 사용했습니다.
      #다양한 find_element_by_ 들을 사용할 수 있습니다.
      driver.find_element_by_xpath(self, xpath)
      driver.find_element_by_css_selector(self, css_selector)
      driver.find_element_by_class_name(self, name)
      driver.find_element_by_link_text(self, link_text)
      driver.find_element_by_name(self, name)
      driver.find_element_by_id(self, id_)
      driver.find_element_by_tag_name(self, id_)
      driver.find_element_by_partial_link_text(self, link_text)



[셀레니움 기초 1편] 패키지 설치 및 웹페이지 열기
[셀레니움 기초 2편] 텍스트 입력 | 버튼 클릭 | 페이지 이동
[셀레니움 기초 3-1편] 네이버 자동 로그인
[셀레니움 기초 3-2편] 쿠팡 자동 로그인
[셀레니움 기초 4편] html 데이터 읽기 bs4


python3.9 | camp-lee@naver.com

반응형
반응형

[셀레니움 기초 3-1편] 네이버 자동 로그인

파이썬, 셀레니움을 사용하여 인터넷에 원하는 정보를 자동으로 스크랩하는 방법을 소개합니다.




목차:




1. 셀레니움 패키지 설치

이 번 포스팅에서는 selenium 3.14.1 버전을 사용합니다.




2. 클립보드 패키지 설치

네이버는 로그인 시 로봇 입력 방지 'captcha' 때문에 클립보드(복사)를 거쳐 ID PW를 입력해야하므로 필요합니다.




3. 예제

네이버 로그인

  • 아래의 코드를 붙여넣고 아이디, 비밀번호를 수정합니다.
# selenium Ver : 3.14.1
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import clipboard
import time

# 웹드라이버 열기 (네이버 메인 화면)
driver = webdriver.Chrome()
driver.get("https://www.naver.com/")

# 네이버 메인화면에서 로그인 버튼 클릭
driver.find_element_by_xpath('//*[@id="account"]/a').click()
time.sleep(1)   # 1초 시간 지연

# 로그인 창에 아이디/비밀번호 입력
loginID = "아이디"
clipboard.copy(loginID)
driver.find_element_by_xpath('//*[@id="id"]').send_keys(Keys.CONTROL, 'v')

loginPW = "비밀번호"
clipboard.copy(loginPW)
driver.find_element_by_xpath('//*[@id="pw"]').send_keys(Keys.CONTROL, 'v')
time.sleep(1)

# 로그인 버튼 클릭
driver.find_element_by_xpath('//*[@id="log.login"]').click()
  • 네이버 로그인의 경우 로봇 입력 방지 captcha를 우회하기 위해 클립보드에 복사, 입력 칸에 붙여넣기 방식을 사용하였습니다. 다른 사이트의 경우, xpath.send_key("ID/PW") 적용할 수 있습니다.

  • 1. 크롬 검사도구를 사용해 xpath, id 등 elements를 얻을 수 있고 element에 맞게 수정해서 사용할 수 있습니다.

    • 이 예제에선 Xpath를 사용했습니다.
      #다양한 find_element_by_ 들을 사용할 수 있습니다.
      driver.find_element_by_xpath(self, xpath)
      driver.find_element_by_css_selector(self, css_selector)
      driver.find_element_by_class_name(self, name)
      driver.find_element_by_link_text(self, link_text)
      driver.find_element_by_name(self, name)
      driver.find_element_by_id(self, id_)
      driver.find_element_by_tag_name(self, id_)
      driver.find_element_by_partial_link_text(self, link_text)



[셀레니움 기초 1편] 패키지 설치 및 웹페이지 열기
[셀레니움 기초 2편] 텍스트 입력 | 버튼 클릭 | 페이지 이동
[셀레니움 기초 3-1편] 네이버 자동 로그인
[셀레니움 기초 3-2편] 쿠팡 자동 로그인
[셀레니움 기초 4편] html 데이터 읽기 bs4


python3.9 | camp-lee@naver.com

반응형
반응형

[셀레니움 기초 2편] 텍스트 입력 | 버튼 클릭 | 페이지 이동

파이썬, 셀레니움을 사용하여 인터넷에 원하는 정보를 자동으로 스크랩하는 방법을 소개합니다.



목차:




1 크롬 검사도구 사용법

  1. 텍스트 입력, 버튼 클릭을 하고자하는 위치에 우클릭을 합니다.
  2. 우클릭 메뉴 중 검사를 클릭합니다.
  3. 검사도구의 항목을 찾아 우클릭 합니다.
  4. Xpath를 복사합니다. (Copy ▶ Copy Xpath)

  1. 마우스 커서 버튼을 사용하여 각 지점의 HTML 정보를 쉽게 확인할 수 있습니다.



2 텍스트 입력 버튼 클릭

Naver셀레니움 웹크롤링를 검색을 해보겠습니다.

네이버검색창의 Xpath와 검색 버튼의 Xpath를 저장하여 검색창에 텍스트 입력, 검색 버튼 클릭을 해보겠습니다.

# selenium Ver : 3.14.1
from selenium import webdriver

# 네이버 URL
url = "https:naver.com"
# 네이버 검색창 Xpath
xpath_text = '//*[@id="query"]'
# 검색하기 버튼
xpath_button = '//*[@id="search_btn"]'
# 검색할 내용
keyword = "셀레니움 웹크롤링"


# 웹드라이버 열기
driver = webdriver.Chrome()
driver.get(url)

# 검색 창에 keyword 입력
driver.find_element_by_xpath(xpath_text).send_keys(keyword)
# 검색 버튼 클릭하기기
driver.find_element_by_xpath(xpath_button).click()

이 방법을 사용해서 웹드라이버에서 텍스트 입력, 버튼 클릭을 할 수 있습니다.
같은 방법으로 find_element_by_xpath 이 외에 다른 것을 사용할 수 있습니다.




3 페이지 이동

셀레니움 웹크롤링을 검색하기 위해 텍스트를 입력하고 버튼을 클릭하였습니다. 이 방법 이 외에 URL을 분석하여 처음에 사용하였던 driver.get(url) 함수를 사용하여 페이지를 이동할 수 있습니다.

# selenium Ver : 3.14.1
from selenium import webdriver

# 네이버 "셀레니움 웹크롤링" 검색 결과 URL
url = "https://search.naver.com/search.naver?where=nexearch&query="
keyword = "셀레니움+웹크롤링"

# 웹드라이버 열기
driver = webdriver.Chrome()
driver.get(url+keyword)




[셀레니움 기초 1편] 패키지 설치 및 웹페이지 열기
[셀레니움 기초 2편] 텍스트 입력 | 버튼 클릭 | 페이지 이동
[셀레니움 기초 3-1편] 네이버 자동 로그인
[셀레니움 기초 3-2편] 쿠팡 자동 로그인
[셀레니움 기초 4편] html 데이터 읽기 bs4


python3.9 | camp-lee@naver.com

반응형
반응형

[셀레니움 기초 1편] 패키지 설치 및 웹페이지 열기

파이썬, 셀레니움을 사용하여 인터넷에 원하는 정보를 자동으로 스크랩하는 방법을 소개합니다.



목차:




1. Chrome Webdriver 다운로드 받기

  1. 사용자의 Chrome 주소창에 Chrome://version을 입력한 뒤 이동합니다.
  2. 크롬 버전을 확인합니다.(9x.x.xxxx.xx)
  3. 다운로드 링크에서 버전에 맞는 웹드라이버를 사용자의 OS에 맞게 다운로드 합니다.
  4. 크롬 웹드라이버를 프로젝트 main.py가 있는 폴더로 이동합니다.



2. 웹페이지 열기

  1. 파이썬 셀레니움 모듈을 설치합니다.

  2. 파이썬에 페이지를 띄우는 코드를 입력합니다.

from selenium import webdriver
# 열고자 하는 url 입력
url = "https://camplee.tistory.com/"
# chromedriver.exe 가 main.py와 같은 폴더에 있을 시, path 생략 가능
path = "chromedriver.exe"

browser = webdriver.Chrome(path)
browser.get(url)
  • 크롬드라이버가 홈페이지가 정상적으로 띄운 것을 확인합니다.
    만약 홈페이지가 뜨지 않는다면 여기 단계를 다시 시도해보세요.




[셀레니움 기초 1편] 패키지 설치 및 웹페이지 열기
[셀레니움 기초 2편] 텍스트 입력 | 버튼 클릭 | 페이지 이동
[셀레니움 기초 3-1편] 네이버 자동 로그인
[셀레니움 기초 3-2편] 쿠팡 자동 로그인
[셀레니움 기초 4편] html 데이터 읽기 bs4


python3.9 | camp-lee@naver.com

반응형

+ Recent posts