4. 미리 설치할 package들.
1. requests 2. selenium 3. PhantomJS
sudo npm install -g phantomjs-prebuilt[엔터]
터미널 창에 아래와 같이 명령어를 입력하고 엔터를 치시면 알아서 자동으로 설치 됩니다.
OSX에서 설치하기
5. 미리 설치할 package들.
1. requests 2. selenium 3. PhantomJS
PhantomJS를 다운로드 받은 후, 원하는 위치에 압축을 풀어서 저장 합니다.
그리고 나서 그 위치 절대경로/bin 을 환경변수 PATH 에 추가해 주시면 됩니다.
저는 c:/phantomjs 위치에 저장했기 때문에,
PATH를 c:/phantomjs/bin 으로 추가 했습니다.
윈도우 에서 설치하기
7. 연습 1단계 : 로그인 하기 연습 (한빛미디어 사이트로 연습)
로그인 후, 가져오고자 하는 정보의 위치 html 소스 부분로그인 폼 페이지의 html 소스 부분
로그인 후…
8. 연습 1단계 : 로그인 연습
결과출력소스
접속한 URL에서 로그인 정보를 post로 넘기기 위해
import requests
이렇게 import 합니다.
그리고 나서,
아래와 같이 세션을 만들고,
session = requests.session()
post로 전달할 로그인 정보 데이터를 만들고,
login_info = {
"m_id": USER, # 아이디 지정
"m_passwd": PASS # 비밀번호 지정
}
로그인 정보를 로그인 proc페이지에 post로 넘깁니다.
url_login = "http://www.hanbit.co.kr/member/login_proc.php"
res = session.post(url_login, data=login_info)
res.raise_for_status() # 오류가 발생하면 예외가 발생합니다.
로그인을 하고 나면,
이제 BeautifulSoup을 사용하여 파싱 후,
원하는 정보를 가져오면 됩니다.
soup = BeautifulSoup(res.text, "html.parser")
mileage = soup.select_one(".mileage_section1 span").get_text()
ecoin = soup.select_one(".mileage_section2 span").get_text()
* 테스트 사이트는 ‘한빛미디어’
9. TIP
requests 패키지를 사용할 때,
post로 데이터를 넘기는 것 뿐만 아니라,
get으로 데이터를 넘길 수도 있고,
put 이나 delete 를 사용하여, 데이터를 넣거나 지울 수도 있습니다.
request.get(“http://test.com”)
request.put(“http://test.com/put”)
request.delete(“http://test.com/delete”)
10. 연습 2단계 : REQUEST GET 연습
결과출력소스
결과출력소스
requests 패키지의 get 을 사용하여,
특정사이트에서 시간을 가져와 화면에 출력해 보았다.
requests 패키지의 get 을 사용하여,
특정사이트에서 이미지를 가져와,
파일로 test.png 라는 이름으로 저장해 보았다.
12. 연습 3단계 : 웹사이트 스크린샷 연습
결과출력소스
* 테스트 사이트는 ‘파트프라임’
Selenium 패키지로 PhantomJS 드라이버를 먼저 추출합니다.
browser = webdriver.PhantomJS()
그리고 스크린샷 할 가상 사이즈를 지정합니다.
browser.set_window_size(1024, 768)
이렇게 안할 경우 웹브라우저 지원 최소 사이즈로 스샷됩니다.
time.sleep(3)
이렇게 하는 이유는, PhantomJS 브라우저가
그 페이지를 로딩할 시간을 기다려 주기 위함 입니다.
13. 연습 4단계 : 좀 더 복잡한 로그인 연습
소스
* 테스트 사이트는 ‘네이버 쇼핑’
14. 연습 4단계 : 좀 더 복잡한 로그인 연습
결과출력
* 테스트 사이트는 ‘네이버 쇼핑’
스크린샷 1 스크린샷 2
15. TIP
selenium 은 BeautifulSoup처럼,
DOM 요소에 접근 / 조작 할 수 있는 함수들이 제공됨.
뿐만아니라 selenium 의 webdriver 로
PhantomJS와 같은 전용 웹브라우져 드라이버 객체와 연결이 되면,
아주 유용한 많은 기능들이 추가적으로 제공됨.
자세한 설명은 아래 사이트를 참고하면 많은 정보를 얻을 수 있음.
http://selenium-python.readthedocs.io/
16. 연습 5단계 : JAVASCRIPT 실행하기
결과출력소스
실행 결과 값을 리턴 받을게 있으면,
r = browser.execute_script("return 100 + 50”)
실행 결과 값을 리턴 받을게 없으면,
browser.execute_script("document.getElementsByClassName('classname')[0].style.display='block';")
이런 식으로 사용하면 된다.