SlideShare a Scribd company logo
1 of 20
Download to read offline
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

What's hot

Tensorflow 설치 가이드 for Windows10
Tensorflow 설치 가이드 for Windows10Tensorflow 설치 가이드 for Windows10
Tensorflow 설치 가이드 for Windows10Hwanhee Kim
 
우분투에서 안드로이드 개발환경 갖추기 ; 안드로이드 스튜디오
우분투에서 안드로이드 개발환경 갖추기 ; 안드로이드 스튜디오우분투에서 안드로이드 개발환경 갖추기 ; 안드로이드 스튜디오
우분투에서 안드로이드 개발환경 갖추기 ; 안드로이드 스튜디오Booseol Shin
 
nexus helm 설치, docker/helm repo 설정과 예제
nexus helm 설치, docker/helm repo 설정과 예제nexus helm 설치, docker/helm repo 설정과 예제
nexus helm 설치, docker/helm repo 설정과 예제choi sungwook
 
20110806 mongodb ch8
20110806 mongodb ch820110806 mongodb ch8
20110806 mongodb ch8Seongahn Kim
 
PFsense 방화벽 소개
PFsense 방화벽 소개PFsense 방화벽 소개
PFsense 방화벽 소개ajj007
 
Laravel install on Windows
Laravel install on WindowsLaravel install on Windows
Laravel install on Windowshojin lee
 
600.Troubleshooting Patterns
600.Troubleshooting Patterns600.Troubleshooting Patterns
600.Troubleshooting PatternsOpennaru, inc.
 
500.JBoss Troubleshooting Essential
500.JBoss Troubleshooting Essential500.JBoss Troubleshooting Essential
500.JBoss Troubleshooting EssentialOpennaru, inc.
 

What's hot (8)

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

Similar to Python machine learning_chap02

PCF Installation Guide
PCF Installation GuidePCF Installation Guide
PCF Installation Guideseungdon Choi
 
Internship backend
Internship backendInternship backend
Internship backendYein Sim
 
Web assembly 맛보기
Web assembly 맛보기Web assembly 맛보기
Web assembly 맛보기GyeongSeok Seo
 
Virtual Development Environment Setting
Virtual Development Environment SettingVirtual Development Environment Setting
Virtual Development Environment SettingKwangyoun Jung
 
Node.js Cloud Service Publish
Node.js Cloud Service PublishNode.js Cloud Service Publish
Node.js Cloud Service PublishHyun Jin Moon
 
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템Park JoongSoo
 
Project anarchy로 3d 게임 만들기 part_2_vforge피하기
Project anarchy로 3d 게임 만들기 part_2_vforge피하기Project anarchy로 3d 게임 만들기 part_2_vforge피하기
Project anarchy로 3d 게임 만들기 part_2_vforge피하기Dong Chan Shin
 
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows TerminalOnGameServer
 
[Osx dev] server essential lesson 10. configuring os x server to provide de...
[Osx dev] server essential   lesson 10. configuring os x server to provide de...[Osx dev] server essential   lesson 10. configuring os x server to provide de...
[Osx dev] server essential lesson 10. configuring os x server to provide de...EungShik (Henry) Kim
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기Chanwoong Kim
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: YeomanJae Sung Park
 
uEngineBPM 개발자교육 1 개발환경
uEngineBPM 개발자교육 1 개발환경 uEngineBPM 개발자교육 1 개발환경
uEngineBPM 개발자교육 1 개발환경 flowcontrol
 
도커없이 컨테이너 만들기 1편
도커없이 컨테이너 만들기 1편도커없이 컨테이너 만들기 1편
도커없이 컨테이너 만들기 1편Sam Kim
 
Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Steve Shim
 
Ubuntu에서 Flask개발 맛보기 - 1
Ubuntu에서  Flask개발 맛보기 - 1Ubuntu에서  Flask개발 맛보기 - 1
Ubuntu에서 Flask개발 맛보기 - 1Booseol Shin
 
Vue.js 기초 실습.pptx
Vue.js 기초 실습.pptxVue.js 기초 실습.pptx
Vue.js 기초 실습.pptxwonyong hwang
 
[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)NAVER CLOUD PLATFORMㅣ네이버 클라우드 플랫폼
 
[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211
[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211
[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211Ji-Woong Choi
 

Similar to Python machine learning_chap02 (20)

PCF Installation Guide
PCF Installation GuidePCF Installation Guide
PCF Installation Guide
 
Internship backend
Internship backendInternship backend
Internship backend
 
Web assembly 맛보기
Web assembly 맛보기Web assembly 맛보기
Web assembly 맛보기
 
Virtual Development Environment Setting
Virtual Development Environment SettingVirtual Development Environment Setting
Virtual Development Environment Setting
 
Node.js Cloud Service Publish
Node.js Cloud Service PublishNode.js Cloud Service Publish
Node.js Cloud Service Publish
 
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
 
Project anarchy로 3d 게임 만들기 part_2_vforge피하기
Project anarchy로 3d 게임 만들기 part_2_vforge피하기Project anarchy로 3d 게임 만들기 part_2_vforge피하기
Project anarchy로 3d 게임 만들기 part_2_vforge피하기
 
Spring boot
Spring bootSpring boot
Spring boot
 
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
 
[Osx dev] server essential lesson 10. configuring os x server to provide de...
[Osx dev] server essential   lesson 10. configuring os x server to provide de...[Osx dev] server essential   lesson 10. configuring os x server to provide de...
[Osx dev] server essential lesson 10. configuring os x server to provide de...
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman
 
uEngineBPM 개발자교육 1 개발환경
uEngineBPM 개발자교육 1 개발환경 uEngineBPM 개발자교육 1 개발환경
uEngineBPM 개발자교육 1 개발환경
 
도커없이 컨테이너 만들기 1편
도커없이 컨테이너 만들기 1편도커없이 컨테이너 만들기 1편
도커없이 컨테이너 만들기 1편
 
Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1
 
Ubuntu에서 Flask개발 맛보기 - 1
Ubuntu에서  Flask개발 맛보기 - 1Ubuntu에서  Flask개발 맛보기 - 1
Ubuntu에서 Flask개발 맛보기 - 1
 
Vue.js 기초 실습.pptx
Vue.js 기초 실습.pptxVue.js 기초 실습.pptx
Vue.js 기초 실습.pptx
 
Php
PhpPhp
Php
 
[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)
 
[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211
[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211
[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211
 

More from PartPrime

Deep learningwithkeras ch3_1
Deep learningwithkeras ch3_1Deep learningwithkeras ch3_1
Deep learningwithkeras ch3_1PartPrime
 
Python machine learning_chap07_1
Python machine learning_chap07_1Python machine learning_chap07_1
Python machine learning_chap07_1PartPrime
 
Python machine learning_chap06_1
Python machine learning_chap06_1Python machine learning_chap06_1
Python machine learning_chap06_1PartPrime
 
Image and deep learning 07-2
 Image and deep learning 07-2 Image and deep learning 07-2
Image and deep learning 07-2PartPrime
 
what is deep learning?
what is deep learning? what is deep learning?
what is deep learning? PartPrime
 
Deep Learning with Python 2-1
Deep Learning with Python 2-1Deep Learning with Python 2-1
Deep Learning with Python 2-1PartPrime
 
Python machine learning_chap05_8
Python machine learning_chap05_8Python machine learning_chap05_8
Python machine learning_chap05_8PartPrime
 
Python machine learning_chap05_7
Python machine learning_chap05_7Python machine learning_chap05_7
Python machine learning_chap05_7PartPrime
 
Ch.5 Deep Learning
Ch.5 Deep LearningCh.5 Deep Learning
Ch.5 Deep LearningPartPrime
 
Python machine learning_chap04_2
Python machine learning_chap04_2 Python machine learning_chap04_2
Python machine learning_chap04_2 PartPrime
 
Ch.3 데이터 소스의 서식과 가공
Ch.3 데이터 소스의 서식과 가공Ch.3 데이터 소스의 서식과 가공
Ch.3 데이터 소스의 서식과 가공PartPrime
 
Python machine learning Ch.4
Python machine learning Ch.4Python machine learning Ch.4
Python machine learning Ch.4PartPrime
 

More from PartPrime (12)

Deep learningwithkeras ch3_1
Deep learningwithkeras ch3_1Deep learningwithkeras ch3_1
Deep learningwithkeras ch3_1
 
Python machine learning_chap07_1
Python machine learning_chap07_1Python machine learning_chap07_1
Python machine learning_chap07_1
 
Python machine learning_chap06_1
Python machine learning_chap06_1Python machine learning_chap06_1
Python machine learning_chap06_1
 
Image and deep learning 07-2
 Image and deep learning 07-2 Image and deep learning 07-2
Image and deep learning 07-2
 
what is deep learning?
what is deep learning? what is deep learning?
what is deep learning?
 
Deep Learning with Python 2-1
Deep Learning with Python 2-1Deep Learning with Python 2-1
Deep Learning with Python 2-1
 
Python machine learning_chap05_8
Python machine learning_chap05_8Python machine learning_chap05_8
Python machine learning_chap05_8
 
Python machine learning_chap05_7
Python machine learning_chap05_7Python machine learning_chap05_7
Python machine learning_chap05_7
 
Ch.5 Deep Learning
Ch.5 Deep LearningCh.5 Deep Learning
Ch.5 Deep Learning
 
Python machine learning_chap04_2
Python machine learning_chap04_2 Python machine learning_chap04_2
Python machine learning_chap04_2
 
Ch.3 데이터 소스의 서식과 가공
Ch.3 데이터 소스의 서식과 가공Ch.3 데이터 소스의 서식과 가공
Ch.3 데이터 소스의 서식과 가공
 
Python machine learning Ch.4
Python machine learning Ch.4Python machine learning Ch.4
Python machine learning Ch.4
 

Recently uploaded

Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 

Recently uploaded (6)

Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 

Python machine learning_chap02

  • 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 이렇게 하면 유로화 환율 문자열이 리턴 된다.