SlideShare a Scribd company logo
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

More Related Content

PPTX
Node mcu 셋업하기
PPTX
Nodejs4
PDF
OpenCV 명함 인식 - 실습 준비 설치 설명서
PPTX
2015 deploy gate 시작 가이드
PDF
실전 앱스 I_제 2회 Hello, Dev.Square 개발자 세미나
PDF
리눅스 환경에서 SonarQube 간단하게 사용해보기
PDF
Umbraco
PPTX
Drawing web app in amazon server
Node mcu 셋업하기
Nodejs4
OpenCV 명함 인식 - 실습 준비 설치 설명서
2015 deploy gate 시작 가이드
실전 앱스 I_제 2회 Hello, Dev.Square 개발자 세미나
리눅스 환경에서 SonarQube 간단하게 사용해보기
Umbraco
Drawing web app in amazon server

What's hot (8)

PPTX
Tensorflow 설치 가이드 for Windows10
PDF
우분투에서 안드로이드 개발환경 갖추기 ; 안드로이드 스튜디오
PDF
nexus helm 설치, docker/helm repo 설정과 예제
PPTX
20110806 mongodb ch8
PPTX
PFsense 방화벽 소개
PPTX
Laravel install on Windows
PPTX
600.Troubleshooting Patterns
PPTX
500.JBoss Troubleshooting Essential
Tensorflow 설치 가이드 for Windows10
우분투에서 안드로이드 개발환경 갖추기 ; 안드로이드 스튜디오
nexus helm 설치, docker/helm repo 설정과 예제
20110806 mongodb ch8
PFsense 방화벽 소개
Laravel install on Windows
600.Troubleshooting Patterns
500.JBoss Troubleshooting Essential
Ad

Similar to Python machine learning Chapter 02 (20)

PDF
10 Scrapping Javascript
PPTX
141118 최창원 웹크롤러제작
PDF
파이썬 유용한 라이브러리
PPTX
웹 크롤링 (Web scraping) 의 이해
PPTX
Selenium basics for crawling web data with Python
PPTX
Selenium을 이용한 동적 사이트 크롤러 만들기
PPTX
python으로 고양이짤 다운로드
PDF
생활 코딩 #1(Simple Web Scraping with Python #1)
PDF
생활 코딩 #2(Simple Web Scraping with Python #2)
PDF
20151219_(python_korea)_How_to_automate_webhacking.kr_with_Python_presentation
PDF
파이썬을 활용한 웹 크롤링
PPTX
The beginner’s guide to 웹 크롤링 (스크래핑)
PPTX
업무자동화를 위한 파이썬
PDF
Multi mechanize
PDF
03 Crawling with Beautiful Soup (네이버 카페 크롤링 하기)
PDF
[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼
PDF
[Week2] 데이터 스크래핑
PDF
Python MySQL을 활용한 대용량 데이터 수집
PPTX
파이썬 크롤링 모듈
PDF
검색로그시스템 with Python
10 Scrapping Javascript
141118 최창원 웹크롤러제작
파이썬 유용한 라이브러리
웹 크롤링 (Web scraping) 의 이해
Selenium basics for crawling web data with Python
Selenium을 이용한 동적 사이트 크롤러 만들기
python으로 고양이짤 다운로드
생활 코딩 #1(Simple Web Scraping with Python #1)
생활 코딩 #2(Simple Web Scraping with Python #2)
20151219_(python_korea)_How_to_automate_webhacking.kr_with_Python_presentation
파이썬을 활용한 웹 크롤링
The beginner’s guide to 웹 크롤링 (스크래핑)
업무자동화를 위한 파이썬
Multi mechanize
03 Crawling with Beautiful Soup (네이버 카페 크롤링 하기)
[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼
[Week2] 데이터 스크래핑
Python MySQL을 활용한 대용량 데이터 수집
파이썬 크롤링 모듈
검색로그시스템 with Python
Ad

More from Young Oh Jeong (16)

PDF
개혁파교의학 12장 솔하 발표본
PDF
개혁파교의학 12장 동혁 발표본
PDF
개혁파교의학 12장 다은 발표본
PDF
개혁파교의학 12장 예건 발표본
PDF
About RNN
PDF
About RNN
PDF
Python machine learning Chapter 07 - PART1
PDF
What is CNN?
PDF
Python machine learning Chapter 06 - PART1
PDF
Python machine learning Chapter 04 - PART2
PDF
07 Cleaning Your Dirty Data
PDF
푸른아카데미, PART→PARTPRIME
PDF
Day by day iPhone Programming
PDF
네델란드개혁교회역사도식
PDF
Everybody need programming skill. 프로그래밍, 현대인의 교양입니다
PDF
마이크로소프트웨어 2002년 10월호 內, 모바일 관련 서적 리뷰 및 평점
개혁파교의학 12장 솔하 발표본
개혁파교의학 12장 동혁 발표본
개혁파교의학 12장 다은 발표본
개혁파교의학 12장 예건 발표본
About RNN
About RNN
Python machine learning Chapter 07 - PART1
What is CNN?
Python machine learning Chapter 06 - PART1
Python machine learning Chapter 04 - PART2
07 Cleaning Your Dirty Data
푸른아카데미, PART→PARTPRIME
Day by day iPhone Programming
네델란드개혁교회역사도식
Everybody need programming skill. 프로그래밍, 현대인의 교양입니다
마이크로소프트웨어 2002년 10월호 內, 모바일 관련 서적 리뷰 및 평점

Python machine learning Chapter 02

  • 1. Python Machine Learning Chapter 02.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 AFTER LOGIN 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 with selenium 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 OPEN WEB 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 이렇게 하면 유로화 환율 문자열이 리턴 된다.