[파이썬] 파이썬 프로젝트 - 2

Park Sunjoo·2022년 8월 30일
0

파이썬_스터디

목록 보기
5/5

계속 이어서...

  1. selenium, chromeDriver을 사용한 부분을 이어서...
    굉장히 시행착오가 많았다.

1. chromeDriver 다운

chromeDriver를 깔려면 웹사이트에 직접들어가야한다.
(구)chromeDriver
(신)chromeDriver <= 일로 들어가요

크롬버전에 맞게 다운받아야한다.

chrome버전확인

chrome 우측상단 (땡땡땡)버튼 - 도움말 - chrome정보

각자 크롬버전, 운영체제에 맞게 다운받으면 된다.
window는 32비트밖에 없어서 그걸로 다운받았다.


다운받은 폴더 압축을 풀었다면, 안에 있는 exe파일을 프로젝트 파일에 넣으면 된다.
혹은 다른 폴더에 넣고 경로 지정을 해주면 된다.

2. 코드 짜기

2-0. import

from selenium import webdriver 
from time import sleep # 대기타는 메서트
from selenium.webdriver.common.by import By
from bs4 import BeautifulSoup # 웹스크래핑할 때 필수 패키지!

파이썬 패키지 다운받는 방법

  1. 터미널 열기
  2. pip install <다운받을 패키지 이름> 입력하고 엔터
    (pip list 입력하면 지금까지 다운받은 패키지 목록들을 다 볼 수 잇음)

2-1. 웹 드라이버 경로 설정

driver = webdriver.Chrome("chromedriver.exe")

2-2. 사이트 접속

driver.get('https://contacts.google.com/?hl=ko') #구글로그인 접속 사이트

2-3. 자동화할 부분 만들기

여러 동영상, 사이트를 참고하여, 현재 작동하는 코드이다.

# id입력
driver.find_element(By.ID, "identifierId").send_keys("<구글이메일>")
sleep(3)

driver.find_element(By.ID, "identifierNext").click()
driver.find_element(By.ID, "identifierNext").is_displayed
sleep(5)
# 비밀번호 입력
driver.find_element(By.CSS_SELECTOR, ".whsOnd").send_keys("<비밀번호>")
sleep(2)
driver.find_element(By.ID, "passwordNext").click()

번외


예전정보들이 많아서 코드 짜는데 더 오래걸렸다.

chromeDriver 웹사이트 주소 옮김

" 어..? 왜 최신버전이 94까지 밖에 없지 난 104버전인데... "

" 아 등잔밑이 어둡다... "

사이트를 옮겼는데, 강의에서보면 다 구사이트에서 다운받길래 ^^... 여기서 조금 헤맸다.
제대로 영어를 읽어봐야겠다

1. chromeDriver 문법이 바뀜

요소들을 찾는 문법인 find_element_by_name에서 자꾸 sytax오류가 났다ㅠㅠ 알고보니
find_element_by_name("a") => find_element("name","a")
로 변한 문법이엇던 것!!
> 관련 스택오버플로우 질문

2. By가 안대여

driver.find_element() 괄호 안 첫번 째 매개변수로 By.<...> 이 들어가는 것이 일반적이다.
써도 오류가 나는 경우가 있는데, 대부분 import를 하지 않았기 때문이다.

from selenium.webdriver.common.by import By

3. 뭔가 애매한... 선택자들

selenium.common.exception.NoSuchElementException:

계속해서 요소를 찾지 못했다는 메세지가 띄워졌다.
아이디를 입력한 후 다음을 눌렀을 때 나오는 비밀번호 input창을 자꾸 찾지 못했다...

driver.find_element(By.NAME, "password").send_keys("<비밀번호>")

처음에는 name을 지정하여서 이런식으로 작성하였다.

계속해서 요소를 찾지 못했다는 에러가 뜬다면 다른 요소를 이용해 찾기 바란다.

3-1. xPath로 찾는 방법


요소를 찾은 후 우클릭 - Copy - Copy xPath

driver.find_element(By.XPATH, "<xPath의 경로>").send_keys("<비밀번호>")

3-2. css 선택자로 찾는 방법

위와 같은 방법으로
요소를 찾은 후 우클릭 - Copy - Copy selector

driver.find_element(By.CSS_SELECTOR, ".whsOnd").send_keys("<비밀번호>")

3-3. ID로 찾는 방법


요소의 id 부분을 찾는다.

driver.find_element(By.ID, "identifierId").send_keys("<구글아이디>")


프로젝트를 하는 이유

역시... 문법 공부보다는 직접 프로젝트를 만드는 것이 도움이 많이된다.
하나하나 오류를 고치다보면, 뿌듯하기도하고 다른 오류를 고치기 더 쉬워지는 것같다.
많은 에러를 고치면서 자신감도 생겼다!

다음에는 Beautifulsoup 패키지를 이용하여 정말 웹페이지를 크롤링 해볼 것이다.

profile
개발, 디자인에 관심있는 문어발

0개의 댓글