2018. 3. 29. 01:13ㆍPython-이론/python-인공지능2
phantomjs와 selenium설치하기
//selenium설치 pip3 install selenium //Beautifulsoup4 설치 pip3 install Beautifulsoup4 //PhantomJS에 필요한 라이브러리 설치 apt-get install -y wget libfontconfig //바이너리를 내려받고 설치하기 mkdir -p /home/root/src && cd $_ wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2 tar jxvf phantomjs -2.1.1-linux-x86_64.tar.bz2 cd phantomjs-2.1.1-linux-x86_64/bin/ cp phantomjs /usr/local/bin/
한줄 씩 차례대로 작성 해서 다 다운받으면된다. 이번엔 selenium을 통해 네이버의 시작화면을 스크린샷찍어와 보겠다.
from selenium import webdriver url = "https://www.naver.com" #phantomjs 불러옴 browser = webdriver.PhantomJS() #3초 대기 browser.implicitly_wait(3) browser.get(url) #Website.png로 결과를 결정하겠다. browser.save_screenshot("Website.png") browser.quit()
위의 사진과 같이 실행되면 성공된다. 그리고 Webpage.png가 생성된다. 결과물을 확인하면 아래와 같다.
로그인을 해서 selenium 사용하기
이번에는 로그인을 해서 티스토리 방문객 수를 가져와보겠습니다.
from selenium import webdriver import json id = "yourId" pw = "yourpw" browser = webdriver.PhantomJS() browser.implicitly_wait(3) url ="https://www.tistory.com/auth/login" browser.get(url) #사이트 마다 id나 pw의 form id 값이 다를 수 있습니다. e= browser.find_element_by_id("loginId") e.clear() e.send_keys(id) e = browser.find_element_by_id("loginPw") e.clear() e.send_keys(pw) #물론 로그인 버튼을 선택할 때도 사이트 마다 다릅니다. form = browser.find_element_by_css_selector("button.btn_login[type=submit]") form.submit() browser.get("http://hoony-gunputer.tistory.com/manage") results = browser.find_elements_by_tag_name("dd") for result in results: print(result.text) browser.quit()
처음에 실행하면 경고문 등이 나오는데 무시해도 좋습니다.. 그리고 find_element_by_css_selector("button.btn_login[type=submit]") 말고도 요소를 찾을 수 있는 방법이 많은데 이것은 https://selenium-python.readthedocs.io/ 해당 사이트를 확인하시거나 자동완성 되기전 키워드를 쳐보면 아래와 같이 확인할 수 있습니다.
find_element와 find_elements라는 두개의 큰 분류로 나뉘는데 elements는 다수의 요소를 가져올 수 있습니다. 하지만 다수의 요소를 가져오기 때문에 id값으로는 찾을 수 없습니다. id는 고유한 값이니깐요!!
'Python-이론 > python-인공지능2' 카테고리의 다른 글
텍스트 데이터와 바이너리 데이터 (0) | 2018.04.02 |
---|---|
web api를 사용하여 데이터 추출하기 (0) | 2018.03.30 |
로그인이 필요한 사이트 파싱해오기 (3) | 2018.03.14 |
css selector를 통해서 스크래핑해오기 (0) | 2018.03.09 |
python으로 데이터 다운받기 - BeautifulSoup로 스크레이핑하기 (0) | 2018.03.08 |