Python Machine Learning Chapter 02.Advanced Scrapping PartPrime Ryan Jeong
미리 설치할 package들. 1. requests 2. selenium 3. PhantomJS
미리 설치할 package들. 1. requests 2. selenium 3. PhantomJS
미리 설치할 package들. 1. requests 2. selenium 3. PhantomJS sudo npm install -g phantomjs-prebuilt[엔터] 터미널 창에 아래와 같이 명령어를 입력하고 엔터를 치시면 알아서 자동으로 설치 됩니다. OSX에서 설치하기
미리 설치할 package들. 1. requests 2. selenium 3. PhantomJS PhantomJS를 다운로드 받은 후, 원하는 위치에 압축을 풀어서 저장 합니다. 그리고 나서 그 위치 절대경로/bin 을 환경변수 PATH 에 추가해 주시면 됩니다. 저는 c:/phantomjs 위치에 저장했기 때문에, PATH를 c:/phantomjs/bin 으로 추가 했습니다. 윈도우 에서 설치하기
2-1 CRAWL AFTER LOGIN with requests package
연습 1단계 : 로그인 하기 연습 (한빛미디어 사이트로 연습) 로그인 후, 가져오고자 하는 정보의 위치 html 소스 부분로그인 폼 페이지의 html 소스 부분 로그인 후…
연습 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() * 테스트 사이트는 ‘한빛미디어’
TIP requests 패키지를 사용할 때, post로 데이터를 넘기는 것 뿐만 아니라, get으로 데이터를 넘길 수도 있고, put 이나 delete 를 사용하여, 데이터를 넣거나 지울 수도 있습니다. request.get(“http://test.com”) request.put(“http://test.com/put”) request.delete(“http://test.com/delete”)
연습 2단계 : REQUEST GET 연습 결과출력소스 결과출력소스 requests 패키지의 get 을 사용하여, 특정사이트에서 시간을 가져와 화면에 출력해 보았다. requests 패키지의 get 을 사용하여, 특정사이트에서 이미지를 가져와, 파일로 test.png 라는 이름으로 저장해 보았다.
2-2 JAVASCRIPT LOGIN with selenium package, PhantomJS
연습 3단계 : 웹사이트 스크린샷 연습 결과출력소스 * 테스트 사이트는 ‘파트프라임’ Selenium 패키지로 PhantomJS 드라이버를 먼저 추출합니다. browser = webdriver.PhantomJS() 그리고 스크린샷 할 가상 사이즈를 지정합니다. browser.set_window_size(1024, 768) 이렇게 안할 경우 웹브라우저 지원 최소 사이즈로 스샷됩니다. time.sleep(3) 이렇게 하는 이유는, PhantomJS 브라우저가 그 페이지를 로딩할 시간을 기다려 주기 위함 입니다.
연습 4단계 : 좀 더 복잡한 로그인 연습 소스 * 테스트 사이트는 ‘네이버 쇼핑’
연습 4단계 : 좀 더 복잡한 로그인 연습 결과출력 * 테스트 사이트는 ‘네이버 쇼핑’ 스크린샷 1 스크린샷 2
TIP selenium 은 BeautifulSoup처럼, DOM 요소에 접근 / 조작 할 수 있는 함수들이 제공됨. 뿐만아니라 selenium 의 webdriver 로 PhantomJS와 같은 전용 웹브라우져 드라이버 객체와 연결이 되면, 아주 유용한 많은 기능들이 추가적으로 제공됨. 자세한 설명은 아래 사이트를 참고하면 많은 정보를 얻을 수 있음. http://selenium-python.readthedocs.io/
연습 5단계 : JAVASCRIPT 실행하기 결과출력소스 실행 결과 값을 리턴 받을게 있으면, r = browser.execute_script("return 100 + 50”) 실행 결과 값을 리턴 받을게 없으면, browser.execute_script("document.getElementsByClassName('classname')[0].style.display='block';") 이런 식으로 사용하면 된다.
2-3 CALL OPEN WEB API with request, json
연습 6단계 : 오픈API 에서 받은 JSON 데이터 처리하기 결과출력소스
연습 7단계 : 환율정보 가져오기 결과출력소스 * 테스트 사이트는 ‘네이버 금융’ 결과출력소스 실행하면 원/달러 환율을 출력한다. price = soup.select_one(“div.head_info > span.value") 했으므로, price 변수에는 첫번째 값만 저장된다. 달러 환율이 첫번째에 있으므로, price.string 이렇게 하면 달러 환율 문자열이 리턴 된다. 실행하면 원/유로 환율을 출력한다. price = soup.select("div.head_info > span.value") 했으므로, price 변수에는 배열이 저장된다. 유로화 환율이 3번째에 있으므로, price[2].string 이렇게 하면 유로화 환율 문자열이 리턴 된다.
Thank youhttp://www.partprime.com

Python machine learning_chap02

  • 1.
    Python Machine Learning Chapter02.Advanced Scrapping PartPrime Ryan Jeong
  • 2.
    미리 설치할 package들. 1.requests 2. selenium 3. PhantomJS
  • 3.
    미리 설치할 package들. 1.requests 2. selenium 3. PhantomJS
  • 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 으로 추가 했습니다. 윈도우 에서 설치하기
  • 6.
    2-1 CRAWL AFTERLOGIN with requests package
  • 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 라는 이름으로 저장해 보았다.
  • 11.
    2-2 JAVASCRIPT LOGIN withselenium package, PhantomJS
  • 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';") 이런 식으로 사용하면 된다.
  • 17.
    2-3 CALL OPENWEB API with request, json
  • 18.
    연습 6단계 :오픈API 에서 받은 JSON 데이터 처리하기 결과출력소스
  • 19.
    연습 7단계 :환율정보 가져오기 결과출력소스 * 테스트 사이트는 ‘네이버 금융’ 결과출력소스 실행하면 원/달러 환율을 출력한다. price = soup.select_one(“div.head_info > span.value") 했으므로, price 변수에는 첫번째 값만 저장된다. 달러 환율이 첫번째에 있으므로, price.string 이렇게 하면 달러 환율 문자열이 리턴 된다. 실행하면 원/유로 환율을 출력한다. price = soup.select("div.head_info > span.value") 했으므로, price 변수에는 배열이 저장된다. 유로화 환율이 3번째에 있으므로, price[2].string 이렇게 하면 유로화 환율 문자열이 리턴 된다.
  • 20.