<TIL-11>Selenium 라이브러리 활용하며 배운 것들

김건우·2020년 7월 10일
0

1.오류 발생

pip 오류

  • pip 명령어를 통해 Selenuium 라이브러리를 다운받으려 했는데, 현재 pip 버전이 낮으니 높은 버전의 pip를 다운받으라는 노란색의 경고문이 나타났다.

you are using pip version ( ) however version () is available.
you should consider upgrading via the 'pip install --upgrade pip' command

  • 설명대로 'pip install --upgrade pip'을 하였는데, Traceback 에러와 함께 모듈을 찾을 수 없다는 에러가 발생했다.

    ModuleNotFoundError: No module named 'pip._internal'

  • pip를 다시 설치하려는데, cmd에서 python 명령어를 읽지 않기 시작했다........

해결 방법)

  • 내컴퓨터에서 고급시스템 설정 -> 환경변수 -> 시스템변수의 path에 python 경로를 다시 추가하였다. (CMD가 python 명령어를 다시 읽기 시작함!!)

  • cmd를 통한 pip 재설치 방법

    curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
    python3 get-pip.py --force-reinstall

주의 사항)

  • 재설치시 주의사항은 '기존에 설치했던 라이브러리를 다시 설치해 주어야 한다.'
    (bs4 와 requests 라이브러리를 다시 설치해야 했다...)

오류의 원인)

  • pip install --upgrade pip으로 명령을 주었을 때, 현재 설치된 pip버전을 지우고, 업데이트된 버전의 설치는 진행하지 않는 상태로 끝나는 경우가 가끔 발생한다고 한다.
  • python -m pip install -upgrade 로 pip의 버전을 올려주는 것을 권장한다.

2. selenium 라이브러리 설치

  • webdriver를 import하면, 크롬드라이브를 통해 실행된다.
  • 크롬 드라이버를 설치하여야 하는데, 주의 사항은 현재 내 크롬의 version을 확인 후 맞는 드라이버를 설치해주어야 한다.

    (크롬 주소창에 chrome://version 을 치면, 현재 내 버전이 나온다.)
    크롬드라이버 다운로드: https://sites.google.com/a/chromium.org/chromedriver/downloads

3. 크롤링할 사이트를 크롬 드라이버로 실행

예시 코드)

from selenium import webdriver
driver = webdriver.Chrome('c:/chromedriver.exe')
url = 'https://www.naver.com'
driver.get(url)

4. 셀레니움 webdriver 메서드 종류

기본

1) 페이지에서 하나의 요소 찾기

driver.find_element(By.ID, "id_name")

2) 구체적인 요소 찾기
(장점: 속도가 빨라짐, 두개의 아이디 값을 한번에 받을 수 있음)

var = driver.find_element_by_css_selector("#id_name #id_name2)

3) 여러 요소 찾기.

<예시 html>

<ol id=cheese>
 <li id=cheddar><li id=brie><li id=rochefort><li id=camembert></ul>

var = driver.find_element_by_css_selector("#cheese li")

응용

기본 코드

var = driver.find_element_by_((select))(id_name)
  • select부분은 find_element_by를 활용하여 어떤방식으로 요소를 찾아올지 선택하는 부분이다. (위의 예시는 css선택자를 쓴 것)

  • 오늘은 쉽게 사용할 수 있는 xpath를 활용하여 크롤링을 진행하였다.

  • xpath: W3C의 표준으로 XML(Extensible Markup Language)문서의 구조를 통해 경로(path)위에 지정한 구문을 사용

간단한 요약
/ : 절대경로를 나타냄
// : 문서내에서 검색
//@href : href 속성이 있는 모든 태그 선택
//a[@href='http://google.com'] : a 태그의 href 속성에 http://google.com 속성값을 가진 모든 태그 선택
(//a)[3] : 문서의 세 번째 링크 선택
(//table)[last()] : 문서의 마지막 테이블 선택
(//a)[position() < 3] : 문서의 처음 두 링크 선택
//table/tr/ 모든 테이블에서 모든 자식 tr 태그 선택
//div[@
] 속성이 하나라도 있는 div 태그 선택

엄청 나게 중요한 주의사항!

driver.find_element(s)_by element로 하면 해당하는 태그 한개만 가지고 온다. 여러개의 태그를 선택하려면 elements를 해야 된다.

5. 오늘 사용한 list 메서드 복습

word_ready.split(" ")[0] : word_ready 리스트를 띄어쓰기를 기준으로 나누고, 첫번째 요소를 반환하라.

list(set(ready_list_1)) : ready_list_1에서 중복되는 요소를 제거하고 리스트 형식으로 반환해 주세요.

word_result.sort() : 오름차순으로 정렬 하기

6. 크롤링한 리스트를 텍스트 문서로 저장하는 방법.

f=open("C:/file.txt",'w')
for i in list_obj:  
    f.write(i) 
f.close()
profile
꾸준하게 공부하기

0개의 댓글