Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

업무자동화를 위한 파이썬

3,226 views

Published on

파이썬 기본: 업무자동화를 위한 파이썬

Published in: Software

업무자동화를 위한 파이썬

  1. 1. 업무자동화 이성주 seongjoo@codebasic.io
  2. 2. pyautomate >pip install pyautomate … .whl Downloading … … Successfully installed 2
  3. 3. 문단 스타일 • 정렬  없음  왼쪽  중앙  오른쪽 3
  4. 4. 문단 스타일:문단 간격 • 문단 간격 • 이전 간격 • 이후 간격 4
  5. 5. 문단 스타일: 줄 간격 5
  6. 6. 문단 스타일: 들여쓰기 6
  7. 7. 엑셀 파일 7 office.Excel() 데이터프레임
  8. 8. 데이터프레임 DataFrame A B C 0 1 2 3 4 5 8 .index .columns .values
  9. 9. 슬라이드 레이아웃 표준 레이아웃 slide_layouts 제목 0 제목과 내용 1 섹션 제목 2 2단 내용 3 2단 비교 4 제목만 5 빈 슬라이드 6 내용과 설명 7 그림과 설명 8
  10. 10. 모양 slide.shape 설명 자동 모양 텍스트 상자, 도형, 개체 틀 등 그림 그림 파일, 클립 아트 그룹 모양 집합 그래픽 프레임 테이블, 차트, 스마트 아트 다이어그램, 미디어 클립 등을 포 함할 수 있는 틀 선/연결점 선과 선을 연결하는 연결점
  11. 11. 모양 속성 속성 단위 fill left top width height 해상도 2 해상도 1
  12. 12. 주요 파이썬 모듈 모듈 설명 설치 webbrowser 브라우저에서 특정 페이지 조회. 표준 라이브러리 requests 웹페이지와 파일을 요청 pip install requests BeautifulSoup HTML 문서에서 정보 추출 pip install beautifulsoup4
  13. 13. 인터넷과 웹 요청 응답 서버클라이언트
  14. 14. URL http://www.domain.com/python/automate/url.html / python automate url.html 네트워크 호스트 경로
  15. 15. HTTP GET과 POST 요청 GET: 정보 요청 POST: 정보 전송
  16. 16. HTTP GET과 POST 비교 GET POSTURL로 가야지 URL로 데이터를 가 져가야지 DATA
  17. 17. 웹문서 요청 응답 서버클라이언트
  18. 18. 웹문서 = HTML x CSS HTML 소스 <html> <body> <h1>웹 스크래핑</h1> <p>인터넷 데이터</p> </body> </html> 웹브라우저 출력
  19. 19. <html> </html> HTML 페이지 구조 • body • 브라우저에서 출력 • head • 웹페이지의 제목 등 • body 내용 출력에 필요한 설정 <head> </head> <body> </body>
  20. 20. HTML 문법 기본 HTML 태그 구조 <태그명>내용</태그명> <태그명 속성=값, …>내용</태그명> <태그 속성=값, …> 예시  <h1>제목1</h1>  <p>본문</p>  <img src=‘image.png’> 태그 • 태그는 대부분 쌍으로 이루어진 다. • 태그 종류 • 시작: <태그명> • 종료: </태그명> • 태그는 속성을 가질 수 있다.
  21. 21. HTML 텍스트 파일 열기 • HTML 텍스트 파일을 바로 웹 브라우저에서 볼 수 있다. • 웹서버가 없어도 된다. • 외부에서는 조회 불가능 • URL • 프로토콜: file:// • 경로: 파일시스템
  22. 22. 브라우저에서 소스 보기 • 웹브라우저 메뉴의 개발자 도 구 활용 • 브라우저마다 메뉴가 다르다. • 특정 요소의 HTML 태그 확인 가능
  23. 23. 웹문서 “스냅샷” 파일 저장 http://www.naver.com file:///…/naver_com.html
  24. 24. CSS 문법 문법 선택자 { 속성: 값; } 예시 p { color: blue; font-size: 12px; }
  25. 25. CSS 선택자 CSS body { background-color: lightblue; } h1 { color: white; text-align: center; } p { font-family: verdana; font-size: 20px; } 출력
  26. 26. CSS 선택자 조합 CSS p { … } .content p { … } #footer p { … } HTML <div class="content"> <h1>웹문서</h1> <p>HTML과 CSS</p> </div> <div id="footer"> <p>이성주</p> </div>
  27. 27. 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
  28. 28. 웹브라우저 CSS 선택자 탐색 지원 * Chrome 50.0 개발자도구 예시 화면
  29. 29. 원하는 요소 선택: Html.select() 태그목록 = html.select(선택자) for 태그 in 태그목록: …
  30. 30. 요소의 속성 선택 태그목록 = html.select(선택자) for 태그 in 태그목록: 텍스트 = 태그.text if 속성명 in 태그.attrs: 값 = 태그.get(속성명) • 요소.get(속성명) • 특정 속성의 값 • 요소.attrs • 속성 전체 정보
  31. 31. 주요내용 • 구글 검색에서 자동으로 링크 수집 • 네이버 검색에서 자동으로 링크 수집 • URL의 구조와 데이터 전송 • CSS 선택자를 활용해 중첩된 HTML 태그에서 요소 선택
  32. 32. 구글 검색 결과 링크 추출 구글 검색 결과 링크 HTML* <h3 class="r"> <a href=url>…</a> CSS 선택자: ".r a" *임의의 시점에서 바뀔 수 있음
  33. 33. URL 구조와 구글 검색 http://google.com/search?q=키워드 호스트 경로 질의프로토콜 검색 HTTP GET
  34. 34. 네이버 검색 결과 페이지 분석 사이트 지식백과 블로그 뉴스 웹문서 … https://search.naver.com/search.naver?query=키워드
  35. 35. 네이버 검색 결과 링크 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
  36. 36. import webbrowser import webbrowser webbrowser.open(url)
  37. 37. 정리 • 구글과 네이버 검색 • 검색을 수행하는 URL 형식 파악 • 각 서비스의 웹문서 구조는 서로 다르다. • 웹브라우저 페이지 소스보기 기능을 활용해 분석 필요 • webbrowser 모듈 • webbrowser.open(url) • 매우 제한적인 상호작용
  38. 38. 주요내용 • 웹브라우저와 상호작용 • 웹브라우저의 페이지 요소와 상호작용 • 웹브라우저의 현재 페이지에서 요소 선택 • 동적으로 변하는 웹페이지 정보 추출
  39. 39. webdriver 운영체제 python code webdriver printer driver
  40. 40. 제한 web.parse_html(url) OK
  41. 41. 우회 web.parse_html(url) OK
  42. 42. chromedriver • 크롬 브라우저용 드라이버 • 코드로 크롬 브라우저 조작 • 크롬 브라우저 버전에 따라 드 라이버 파일 선택 https://sites.google.com/a/chromium.org/chromedriver/
  43. 43. 비동기식 로드 웹문서 웹브라우저 스냅샷
  44. 44. 정리 • webdriver • 파이썬 코드와 브라우저 상호 작용에 필요 • 크롬, 파이어폭스 지원 • 대상 웹브라우저 설치 필요 • 웹브라우저 버전에 맞는 드라이버 파일 필요 • 요소 선택 • browser.find_element_by_css_selector(CSS선택자)
  45. 45. 주요내용 • 뉴스 웹사이트 기사 추출 • 관심 뉴스 웹사이트 전체에서 기사 추출 • 자동 로그인 수행
  46. 46. 뉴스 웹사이트 <div id="jtbcBody"> … </div> CSS 선택자 = #jtbcBody
  47. 47. 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">
  48. 48. 관심 뉴스 웹사이트 제목 웹사이트 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 기준
  49. 49. 정리 • 뉴스 웹사이트 기사 추출 • 특정 형식의 URL 선택 • CSS 속성 선택 활용 • 관심 뉴스 웹사이트 전체에서 기사 추출 • 각 웹사이트별 CSS 선택자 분석 필요 • 텍스트 또는 엑셀 파일 활용 • 자동 로그인 수행 • 계정 정보 입력 상자 요소 선택 • 입력 상자 요소 값 채우기: WebElement.send_keys()
  50. 50. 화면 pyautogui.size() pyautogui.position() pyautogui.moveTo(x, y, duration) (0,0) (0,1079) (1919,0) (1919,1079) x y

×