SlideShare una empresa de Scribd logo
1 de 50
업무자동화
이성주
seongjoo@codebasic.io
pyautomate
>pip install pyautomate … .whl
Downloading …
…
Successfully installed
2
문단 스타일
• 정렬
 없음
 왼쪽
 중앙
 오른쪽
3
문단 스타일:문단 간격
• 문단 간격
• 이전 간격
• 이후 간격
4
문단 스타일: 줄 간격
5
문단 스타일: 들여쓰기
6
엑셀 파일
7
office.Excel()
데이터프레임
데이터프레임 DataFrame
A B C
0
1
2
3
4
5
8
.index
.columns
.values
슬라이드 레이아웃
표준 레이아웃 slide_layouts
제목 0
제목과 내용 1
섹션 제목 2
2단 내용 3
2단 비교 4
제목만 5
빈 슬라이드 6
내용과 설명 7
그림과 설명 8
모양 slide.shape
설명
자동 모양 텍스트 상자, 도형, 개체 틀 등
그림 그림 파일, 클립 아트
그룹 모양 집합
그래픽 프레임 테이블, 차트, 스마트 아트 다이어그램, 미디어 클립 등을 포
함할 수 있는 틀
선/연결점 선과 선을 연결하는 연결점
모양 속성
속성 단위
fill
left
top
width
height
해상도 2
해상도 1
주요 파이썬 모듈
모듈 설명 설치
webbrowser 브라우저에서 특정 페이지 조회. 표준 라이브러리
requests 웹페이지와 파일을 요청 pip install requests
BeautifulSoup HTML 문서에서 정보 추출 pip install beautifulsoup4
인터넷과 웹
요청
응답
서버클라이언트
URL
http://www.domain.com/python/automate/url.html
/
python
automate
url.html
네트워크 호스트 경로
HTTP GET과 POST 요청
GET: 정보 요청 POST: 정보 전송
HTTP GET과 POST 비교
GET POSTURL로
가야지
URL로 데이터를 가
져가야지
DATA
웹문서
요청
응답
서버클라이언트
웹문서 = HTML x CSS
HTML 소스
<html>
<body>
<h1>웹 스크래핑</h1>
<p>인터넷 데이터</p>
</body>
</html>
웹브라우저 출력
<html>
</html>
HTML 페이지 구조
• body
• 브라우저에서 출력
• head
• 웹페이지의 제목 등
• body 내용 출력에 필요한 설정
<head>
</head>
<body>
</body>
HTML 문법 기본
HTML 태그 구조
<태그명>내용</태그명>
<태그명 속성=값, …>내용</태그명>
<태그 속성=값, …>
예시
 <h1>제목1</h1>
 <p>본문</p>
 <img src=‘image.png’>
태그
• 태그는 대부분 쌍으로 이루어진
다.
• 태그 종류
• 시작: <태그명>
• 종료: </태그명>
• 태그는 속성을 가질 수 있다.
HTML 텍스트 파일 열기
• HTML 텍스트 파일을 바로 웹
브라우저에서 볼 수 있다.
• 웹서버가 없어도 된다.
• 외부에서는 조회 불가능
• URL
• 프로토콜: file://
• 경로: 파일시스템
브라우저에서 소스 보기
• 웹브라우저 메뉴의 개발자 도
구 활용
• 브라우저마다 메뉴가 다르다.
• 특정 요소의 HTML 태그 확인
가능
웹문서 “스냅샷” 파일 저장
http://www.naver.com file:///…/naver_com.html
CSS 문법
문법
선택자 {
속성: 값;
}
예시
p {
color: blue;
font-size: 12px;
}
CSS 선택자
CSS
body {
background-color: lightblue;
}
h1 {
color: white;
text-align: center;
}
p {
font-family: verdana;
font-size: 20px;
}
출력
CSS 선택자 조합
CSS
p { … }
.content p { … }
#footer p { … }
HTML
<div class="content">
<h1>웹문서</h1>
<p>HTML과 CSS</p>
</div>
<div id="footer">
<p>이성주</p>
</div>
CSS 선택자 조합 예시
CSS 선택자 예시 선택되는 요소
h1 모든 <h1>
#content id=“content” 속성을 갖는 모든 요소
.result class=“result” 속성을 갖는 모든 요소
div h1 <div> 내 모든 <h1>
div > h1 <div>에 직접 속한 <h1>
input[name] <input> 요소 중 name 속성을 갖는 것
input[type=“email”] <input> 요소 중 type=”email” 속성을 갖는 것
참조: http://www.w3schools.com/cssref/css_selectors.asp
웹브라우저 CSS 선택자 탐색 지원
* Chrome 50.0 개발자도구 예시 화면
원하는 요소 선택: Html.select()
태그목록 = html.select(선택자)
for 태그 in 태그목록:
…
요소의 속성 선택
태그목록 = html.select(선택자)
for 태그 in 태그목록:
텍스트 = 태그.text
if 속성명 in 태그.attrs:
값 = 태그.get(속성명)
• 요소.get(속성명)
• 특정 속성의 값
• 요소.attrs
• 속성 전체 정보
주요내용
• 구글 검색에서 자동으로 링크 수집
• 네이버 검색에서 자동으로 링크 수집
• URL의 구조와 데이터 전송
• CSS 선택자를 활용해 중첩된 HTML 태그에서 요소 선택
구글 검색 결과 링크 추출
구글 검색 결과 링크 HTML*
<h3 class="r">
<a href=url>…</a>
CSS 선택자: ".r a"
*임의의 시점에서 바뀔 수 있음
URL 구조와 구글 검색
http://google.com/search?q=키워드
호스트 경로 질의프로토콜
검색
HTTP GET
네이버 검색 결과 페이지 분석
사이트
지식백과
블로그
뉴스
웹문서
…
https://search.naver.com/search.naver?query=키워드
네이버 검색 결과 링크 CSS 선택자
섹션 HTML 선택자
사이트 <div class="nsite section">
<a href=url>
.nsite.section
블로그 <div class="blog section">
<a href=url>
.blog.section
뉴스 <div class="news section">
<a href=url>
.news.section
웹문서 <div class="webdoc section">
<a href=url>
.webdoc.section
import webbrowser
import webbrowser
webbrowser.open(url)
정리
• 구글과 네이버 검색
• 검색을 수행하는 URL 형식 파악
• 각 서비스의 웹문서 구조는 서로 다르다.
• 웹브라우저 페이지 소스보기 기능을 활용해 분석 필요
• webbrowser 모듈
• webbrowser.open(url)
• 매우 제한적인 상호작용
주요내용
• 웹브라우저와 상호작용
• 웹브라우저의 페이지 요소와 상호작용
• 웹브라우저의 현재 페이지에서 요소 선택
• 동적으로 변하는 웹페이지 정보 추출
webdriver
운영체제
python code
webdriver printer driver
제한
web.parse_html(url)
OK
우회
web.parse_html(url)
OK
chromedriver
• 크롬 브라우저용 드라이버
• 코드로 크롬 브라우저 조작
• 크롬 브라우저 버전에 따라 드
라이버 파일 선택
https://sites.google.com/a/chromium.org/chromedriver/
비동기식 로드 웹문서
웹브라우저 스냅샷
정리
• webdriver
• 파이썬 코드와 브라우저 상호 작용에 필요
• 크롬, 파이어폭스 지원
• 대상 웹브라우저 설치 필요
• 웹브라우저 버전에 맞는 드라이버 파일 필요
• 요소 선택
• browser.find_element_by_css_selector(CSS선택자)
주요내용
• 뉴스 웹사이트 기사 추출
• 관심 뉴스 웹사이트 전체에서 기사 추출
• 자동 로그인 수행
뉴스 웹사이트
<div id="jtbcBody">
…
</div>
CSS 선택자 = #jtbcBody
CSS 선택자 속성값 지정
CSS 선택자 예시 선택 태그 예시
[attribute] [href] <a href="…">
<a href="…" class="article">
[attribute="value"] [href="/python"] <a href="/python">
[attribute~="value"] [value~="python"] <option value="python">
<option value="automate python">
<option value="python data">
[attribute|="value"] [class|="main] <div class="main">
<div class="main container">
<div class="main-container">
[attribute^="value"] [href^="/post"] <a href="/post/1">
<a href="/post/python/1">
[attribute$="value"] [href$="python"] <a href="/post/python">
<a href="category/python">
[attribute*="value"] [href*="py"] <a href="python">
<a href="/post/python">
<a href="automate python">
관심 뉴스 웹사이트
제목 웹사이트 CSS선택자*
JTBC http://news.jtbc.joins.com/ #jtbcBody a[href^="http://news.jtbc.joins.com/html"]
KBS http://news.kbs.co.kr/common/main.html #container a[href^="/news/view.do?ncd"]
MBC http://imnews.imbc.com/ #middle a[href^="http://imnews.imbc.com/news"]
SBS http://news.sbs.co.kr/news/newsMain.do .w_inner a[href^="/news/endPage.do?news_id"]
*2017-01-17 기준
정리
• 뉴스 웹사이트 기사 추출
• 특정 형식의 URL 선택
• CSS 속성 선택 활용
• 관심 뉴스 웹사이트 전체에서 기사 추출
• 각 웹사이트별 CSS 선택자 분석 필요
• 텍스트 또는 엑셀 파일 활용
• 자동 로그인 수행
• 계정 정보 입력 상자 요소 선택
• 입력 상자 요소 값 채우기: WebElement.send_keys()
화면
pyautogui.size()
pyautogui.position()
pyautogui.moveTo(x, y, duration)
(0,0)
(0,1079)
(1919,0)
(1919,1079)
x
y

Más contenido relacionado

La actualidad más candente

Jsp 기본요소
Jsp 기본요소Jsp 기본요소
Jsp 기본요소cooddy
 
WebStandards-Basic 3.Starting style
WebStandards-Basic 3.Starting styleWebStandards-Basic 3.Starting style
WebStandards-Basic 3.Starting styleEulsoo Jung
 
Web Standards HTML5_CSS3
Web Standards HTML5_CSS3Web Standards HTML5_CSS3
Web Standards HTML5_CSS3Eulsoo Jung
 
WebStandards-Basic 1.Introduce
WebStandards-Basic 1.IntroduceWebStandards-Basic 1.Introduce
WebStandards-Basic 1.IntroduceEulsoo Jung
 
문돌이가 가르치는 웹 프론트엔드 1차시
문돌이가 가르치는 웹 프론트엔드 1차시문돌이가 가르치는 웹 프론트엔드 1차시
문돌이가 가르치는 웹 프론트엔드 1차시동현 조
 
Django admin site 커스텀하여 적극적으로 활용하기
Django admin site 커스텀하여 적극적으로 활용하기Django admin site 커스텀하여 적극적으로 활용하기
Django admin site 커스텀하여 적극적으로 활용하기영우 박
 
간단한 블로그를 만들며 Django 이해하기
간단한 블로그를 만들며 Django 이해하기간단한 블로그를 만들며 Django 이해하기
간단한 블로그를 만들며 Django 이해하기Kyoung Up Jung
 
[2014널리세미나] 시맨틱한 HTML5 마크업 구조 설계, 어떻게 할까?
[2014널리세미나] 시맨틱한 HTML5 마크업 구조 설계, 어떻게 할까?[2014널리세미나] 시맨틱한 HTML5 마크업 구조 설계, 어떻게 할까?
[2014널리세미나] 시맨틱한 HTML5 마크업 구조 설계, 어떻게 할까?Nts Nuli
 
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?Sang-ho Choi
 
JavaSript Template Engine
JavaSript Template EngineJavaSript Template Engine
JavaSript Template EngineOhgyun Ahn
 
Polymer, lego같이 만드는 웹어플리케이션
Polymer, lego같이 만드는 웹어플리케이션Polymer, lego같이 만드는 웹어플리케이션
Polymer, lego같이 만드는 웹어플리케이션Jeado Ko
 
201803 파이썬 세미나
201803 파이썬 세미나201803 파이썬 세미나
201803 파이썬 세미나JeongHwan Kim
 
Word camp seoul-2012-track3-3
Word camp seoul-2012-track3-3Word camp seoul-2012-track3-3
Word camp seoul-2012-track3-3082net
 
현대고등학교 PHP 강의 - 7,8차시 (설리번 프로젝트)
현대고등학교 PHP 강의 - 7,8차시 (설리번 프로젝트)현대고등학교 PHP 강의 - 7,8차시 (설리번 프로젝트)
현대고등학교 PHP 강의 - 7,8차시 (설리번 프로젝트)Ukjae Jeong
 
Django, 저는 이렇게 씁니다.
Django, 저는 이렇게 씁니다.Django, 저는 이렇게 씁니다.
Django, 저는 이렇게 씁니다.Kyoung Up Jung
 
현대고등학교 PHP 강의 - 4차시 (설리번 프로젝트)
현대고등학교 PHP 강의 - 4차시 (설리번 프로젝트)현대고등학교 PHP 강의 - 4차시 (설리번 프로젝트)
현대고등학교 PHP 강의 - 4차시 (설리번 프로젝트)Ukjae Jeong
 

La actualidad más candente (20)

Jsp 기본요소
Jsp 기본요소Jsp 기본요소
Jsp 기본요소
 
WebStandards-Basic 3.Starting style
WebStandards-Basic 3.Starting styleWebStandards-Basic 3.Starting style
WebStandards-Basic 3.Starting style
 
Web Standards HTML5_CSS3
Web Standards HTML5_CSS3Web Standards HTML5_CSS3
Web Standards HTML5_CSS3
 
HTML5 & CSS3
HTML5 & CSS3HTML5 & CSS3
HTML5 & CSS3
 
WebStandards-Basic 1.Introduce
WebStandards-Basic 1.IntroduceWebStandards-Basic 1.Introduce
WebStandards-Basic 1.Introduce
 
문돌이가 가르치는 웹 프론트엔드 1차시
문돌이가 가르치는 웹 프론트엔드 1차시문돌이가 가르치는 웹 프론트엔드 1차시
문돌이가 가르치는 웹 프론트엔드 1차시
 
웹표준 교육
웹표준 교육웹표준 교육
웹표준 교육
 
Django admin site 커스텀하여 적극적으로 활용하기
Django admin site 커스텀하여 적극적으로 활용하기Django admin site 커스텀하여 적극적으로 활용하기
Django admin site 커스텀하여 적극적으로 활용하기
 
간단한 블로그를 만들며 Django 이해하기
간단한 블로그를 만들며 Django 이해하기간단한 블로그를 만들며 Django 이해하기
간단한 블로그를 만들며 Django 이해하기
 
[2014널리세미나] 시맨틱한 HTML5 마크업 구조 설계, 어떻게 할까?
[2014널리세미나] 시맨틱한 HTML5 마크업 구조 설계, 어떻게 할까?[2014널리세미나] 시맨틱한 HTML5 마크업 구조 설계, 어떻게 할까?
[2014널리세미나] 시맨틱한 HTML5 마크업 구조 설계, 어떻게 할까?
 
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
 
Django View Part 1
Django View Part 1Django View Part 1
Django View Part 1
 
JavaSript Template Engine
JavaSript Template EngineJavaSript Template Engine
JavaSript Template Engine
 
Polymer, lego같이 만드는 웹어플리케이션
Polymer, lego같이 만드는 웹어플리케이션Polymer, lego같이 만드는 웹어플리케이션
Polymer, lego같이 만드는 웹어플리케이션
 
201803 파이썬 세미나
201803 파이썬 세미나201803 파이썬 세미나
201803 파이썬 세미나
 
Word camp seoul-2012-track3-3
Word camp seoul-2012-track3-3Word camp seoul-2012-track3-3
Word camp seoul-2012-track3-3
 
현대고등학교 PHP 강의 - 7,8차시 (설리번 프로젝트)
현대고등학교 PHP 강의 - 7,8차시 (설리번 프로젝트)현대고등학교 PHP 강의 - 7,8차시 (설리번 프로젝트)
현대고등학교 PHP 강의 - 7,8차시 (설리번 프로젝트)
 
Django, 저는 이렇게 씁니다.
Django, 저는 이렇게 씁니다.Django, 저는 이렇게 씁니다.
Django, 저는 이렇게 씁니다.
 
현대고등학교 PHP 강의 - 4차시 (설리번 프로젝트)
현대고등학교 PHP 강의 - 4차시 (설리번 프로젝트)현대고등학교 PHP 강의 - 4차시 (설리번 프로젝트)
현대고등학교 PHP 강의 - 4차시 (설리번 프로젝트)
 
Web기획서
Web기획서Web기획서
Web기획서
 

Similar a 업무자동화를 위한 파이썬

알아봅시다, Polymer: Web Components & Web Animations
알아봅시다, Polymer: Web Components & Web Animations알아봅시다, Polymer: Web Components & Web Animations
알아봅시다, Polymer: Web Components & Web AnimationsChang W. Doh
 
2. html5 시맨틱태그
2. html5 시맨틱태그2. html5 시맨틱태그
2. html5 시맨틱태그은심 강
 
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지yongwoo Jeon
 
Django를 Django답게, Django로 뉴스 사이트 만들기
Django를 Django답게, Django로 뉴스 사이트 만들기Django를 Django답게, Django로 뉴스 사이트 만들기
Django를 Django답게, Django로 뉴스 사이트 만들기Kyoung Up Jung
 
HTML과 CSS
HTML과 CSSHTML과 CSS
HTML과 CSSdgmong
 
프로그래밍 첫 걸음 맛 보기
프로그래밍 첫 걸음 맛 보기프로그래밍 첫 걸음 맛 보기
프로그래밍 첫 걸음 맛 보기Seon jae Kim
 
01. basic html5
01. basic html501. basic html5
01. basic html5동우 주
 
I am ASP.NET Core Razor Pages
I am ASP.NET Core Razor Pages I am ASP.NET Core Razor Pages
I am ASP.NET Core Razor Pages SangHoon Han
 
[토크아이티] 프런트엔드 개발 시작하기 저자 특강
[토크아이티] 프런트엔드 개발 시작하기 저자 특강 [토크아이티] 프런트엔드 개발 시작하기 저자 특강
[토크아이티] 프런트엔드 개발 시작하기 저자 특강 우영 주
 
Best practice of HTML5 Semantic Markup
Best practice of HTML5 Semantic MarkupBest practice of HTML5 Semantic Markup
Best practice of HTML5 Semantic MarkupToby Yun
 
웹표준 (XHTML + CSS)
웹표준 (XHTML + CSS)웹표준 (XHTML + CSS)
웹표준 (XHTML + CSS)ymtech
 
XE Open seminar 테마만들기
XE Open seminar 테마만들기XE Open seminar 테마만들기
XE Open seminar 테마만들기Sungbum Hong
 
처음부터 다시 배우는 HTML5 & CSS3 강의자료 4일차
처음부터 다시 배우는 HTML5 & CSS3 강의자료 4일차처음부터 다시 배우는 HTML5 & CSS3 강의자료 4일차
처음부터 다시 배우는 HTML5 & CSS3 강의자료 4일차Michael Yang
 
Social Tutorial Platform: Webbles
Social Tutorial Platform: Webbles Social Tutorial Platform: Webbles
Social Tutorial Platform: Webbles Wonkyung Lyu
 
Html5 소개 가이드
Html5 소개 가이드Html5 소개 가이드
Html5 소개 가이드Jong-hyun Park
 
처음부터 다시 배우는 HTML5 & CSS3 강의자료 5일차
처음부터 다시 배우는 HTML5 & CSS3 강의자료 5일차처음부터 다시 배우는 HTML5 & CSS3 강의자료 5일차
처음부터 다시 배우는 HTML5 & CSS3 강의자료 5일차Michael Yang
 

Similar a 업무자동화를 위한 파이썬 (20)

Asp.net Razor
Asp.net Razor Asp.net Razor
Asp.net Razor
 
알아봅시다, Polymer: Web Components & Web Animations
알아봅시다, Polymer: Web Components & Web Animations알아봅시다, Polymer: Web Components & Web Animations
알아봅시다, Polymer: Web Components & Web Animations
 
2. html5 시맨틱태그
2. html5 시맨틱태그2. html5 시맨틱태그
2. html5 시맨틱태그
 
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
 
Django를 Django답게, Django로 뉴스 사이트 만들기
Django를 Django답게, Django로 뉴스 사이트 만들기Django를 Django답게, Django로 뉴스 사이트 만들기
Django를 Django답게, Django로 뉴스 사이트 만들기
 
Hacosa jquery 1th
Hacosa jquery 1thHacosa jquery 1th
Hacosa jquery 1th
 
HTML과 CSS
HTML과 CSSHTML과 CSS
HTML과 CSS
 
프로그래밍 첫 걸음 맛 보기
프로그래밍 첫 걸음 맛 보기프로그래밍 첫 걸음 맛 보기
프로그래밍 첫 걸음 맛 보기
 
01. basic html5
01. basic html501. basic html5
01. basic html5
 
I am ASP.NET Core Razor Pages
I am ASP.NET Core Razor Pages I am ASP.NET Core Razor Pages
I am ASP.NET Core Razor Pages
 
[토크아이티] 프런트엔드 개발 시작하기 저자 특강
[토크아이티] 프런트엔드 개발 시작하기 저자 특강 [토크아이티] 프런트엔드 개발 시작하기 저자 특강
[토크아이티] 프런트엔드 개발 시작하기 저자 특강
 
Hacosa js study 6th
Hacosa js study 6thHacosa js study 6th
Hacosa js study 6th
 
3-2. selector api
3-2. selector api3-2. selector api
3-2. selector api
 
Best practice of HTML5 Semantic Markup
Best practice of HTML5 Semantic MarkupBest practice of HTML5 Semantic Markup
Best practice of HTML5 Semantic Markup
 
웹표준 (XHTML + CSS)
웹표준 (XHTML + CSS)웹표준 (XHTML + CSS)
웹표준 (XHTML + CSS)
 
XE Open seminar 테마만들기
XE Open seminar 테마만들기XE Open seminar 테마만들기
XE Open seminar 테마만들기
 
처음부터 다시 배우는 HTML5 & CSS3 강의자료 4일차
처음부터 다시 배우는 HTML5 & CSS3 강의자료 4일차처음부터 다시 배우는 HTML5 & CSS3 강의자료 4일차
처음부터 다시 배우는 HTML5 & CSS3 강의자료 4일차
 
Social Tutorial Platform: Webbles
Social Tutorial Platform: Webbles Social Tutorial Platform: Webbles
Social Tutorial Platform: Webbles
 
Html5 소개 가이드
Html5 소개 가이드Html5 소개 가이드
Html5 소개 가이드
 
처음부터 다시 배우는 HTML5 & CSS3 강의자료 5일차
처음부터 다시 배우는 HTML5 & CSS3 강의자료 5일차처음부터 다시 배우는 HTML5 & CSS3 강의자료 5일차
처음부터 다시 배우는 HTML5 & CSS3 강의자료 5일차
 

업무자동화를 위한 파이썬