전체 글 160

[Web Scrapping] XPath (XML Path Language)

■ XPath란? XML 문서의 특정 노드의 위치를 찾을 때 사용되는 규칙 XML 문서 안의 요소와 속성들을 탐색한다. 특정 노드를 표현하는 방식은 절대경로와 상대경로 방식이 있다. 브라우저에서 개발자 모드(F12) - 특정 노드 선택 후 - [Copy] - [Copy Xpath] 혹은 [Copy full Xpath]를 이용 노드 이름 종류 / 루트 노드부터 순서대로 탐색 // 지정된 노드에서부터 순서대로 탐색 . 현재 노드를 선택 .. 현재의 부모 노드를 선택 @ 속성 노드를 선택 ▶ Predicates 노드 종류 /bookstore/book[1] /bookstore 자식인 첫 번째 book 요소를 선택 /bookstore/book[last()] 마지막 book 요소 선택 /bookstore/book[..

[Web Scrapping 실습] Selenium

▶ Selenium - URL만으로 접근할 수 없는 홈페이지에 접근 - 크롤링이 목적이 아니라 만들어진 홈페이지를 테스트하고 웹 브라우저를 제어할 목적으로 사용 ▶ 관련 패키지 설치 - pip install selenium - pip install webdriver_manager ## webdriver 실행하기 ## from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager # 웹 드라이버 동적 다운로드 방식 driver = webdriver.Chrome(service=Service(ChromeDriverMana..

[Web Scrapping 실습] BeautifulSoup

▶ 로봇이 아님을 나타내기 위해서 user-agent라는 값을 header에 넣어서 보냄 - 직접적인 URL 주소로 요청 시 웹 사이트에서 웹 크롤링을 통해서 접근한 것을 감지하고 접속을 차단하게 됨. - user-agent header 값을 포함하여 요청하면 웹 브라우저를 통해 요청하는 것으로 인식되어 해결 - 웹 브라우저 실행 -> F12를 눌러 개발자 모드로 들어감 -> Console 메뉴 -> prompt에 navigator.userAgent 입력 - "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" import requests URL = 'ht..

[Web Scrapping] Selenium 모듈

■ Selenium 모듈 정의 웹 어플리케이션 테스트를 위한 프레임워크 다양한 언어에서 지원하며 사용자가 아닌 프로그램이 웹 브라우저를 제어할 수 있도록 지원 웹 브라우저마다 클라이언트 프로그램(Web Driver)이 별도로 필요 크롤링보다는 웹을 제어하는 목적이 더 큼 ■ Selenium 모듈 설치 - pip install selenium ■ Web Driver 설치 - 컴퓨터 운영체제와 웹 브라우저 종류에 따라 구분하여 설치 ① 크롬 웹 드라이버 : https://chromedriver.chromium.org/downloads ChromeDriver - WebDriver for Chrome - Downloads Current Releases If you are using Chrome version 1..

[Web Scrapping] BeautifulSoup 모듈

■ BeautifulSoup 모듈 문자열 추출방식은 각 페이지마다 다르게 개발된 웹 페이지에 적용하기 어렵다. 홈페이지 내 데이터를 쉽게 추출할 수 있도록 도와주는 파이썬 외부 라이브러리 DOM Tree 형태로 구조화된 웹 페이지의 특정 요소를 이용하여 데이터를 추출하는 방법이 훨씬 유용 → BeautifulSoup은 DOM Tree로부터 데이터를 추출해 올 수 있는 다양한 기능을 제공 ■ BeautifulSoup을 이용한 데이터 추출 및 파싱 - BeautifulSoup 모듈과 외장 파서 등이 설치되어 있어야 한다. ■ Paser의 종류 종류 사용방법 특징 html.paser BeautifulSoup(markup, "html.paser") BeautifulSoup('', 'html.paser') → 형..

[Web Scrapping] DOM (Document Object Model)

■ DOM의 개념 DOM은 HTML, XML 문서의 모든 요소의 속성, 텍스트를 각각의 객체로 만들고 이 객체들을 부모 자식 관계로 표현할 수 있는 트리 구조로 구성한 것 개발자가 정적인 HTML 문서와 동적으로 만들어서 생성되는 문서 등이 웹 브라우저에서 Parsing(구문 분석)되어 컴파일된 결과가 화면에 출려고디는데 이렇게 빌드 처리를 거치고 난 후 화면에 출력되는 최종 결과물이 DOM이다. ■ DOM의 노드 트리 DOM은 하나의 요소가 다른 요소를 포함하는 형태로 표현되는데 이러한 구조를 트리 구조라고 한다. DOM은 최상위에 html 요소를 root로 하여 여러 자식 요소를 포함하는 형태를 띈다. 포함하는 요소를 부모 요소(parent), 포함되는 요소를 자식 요소(child), 부모가 같은 요..

[Web Scrapping] 정규 표현식

■ 정규 표현식 (Regular Expression) - 정규 표현식은 복잡한 문자열을 처리할 때 사용하는 기법 [사례] 주민등록번호를 포함하고 있는 텍스트에서 주민등록번호 뒷자리를 * 문자로 변경 - 주민등록번호 문자열은 주민등록번호 형식인지 조사한다. - 일반 파이썬 문법을 이용한 코드 data = """ park 800904-1234567 kim 841204-1034562 """ result = [] for line in data.split('\n'): word_result = [] for word in line.split(): if len(word) == 14 and word[:6].isdigit() and word[7:].isdigit: # 숫자인지 체크 word = word[:6] + '-' ..

[Web Scrapping] request 모듈

■ 특정 사이트 접속 - requests 객체를 import 한 후 get() 함수를 이용해 지정된 사이트에 접속한다. response = requests.get(url, params, **kwargs) ▷ url : 접속할 url 정보 ▷ params : 해당 url의 파라미터 문자열 정보 입력 (dictionary 객체로 전달) ▷ **kwargs : 그 외 매개변수 (header 값) - verify=False : SSL 인증서를 사용하는 경우 - auth=("id", "pass") : 인증이 필요한 경우 - headers = {'Content-Type': 'application/json; charset=utf-8') - cookies = {'sessionKey': 'sessionValue'} - ..

[Web Scrapping] HTTP 요청 / 응답

■ HTTP 구조 HTTP는 클라이언트의 요청과 이에 대한 서버의 응답으로 이루어져 있다. 즉, 사용자가 원하는 정보를 요청하게 되면 서버는 해당 요청을 확인 후 이에 맞는 적절한 응답을 해주는 구조이다. ■ HTTP 요청 메서드 - HTTP는 요청 메서드를 정의하여 주어진 리소스에 수행하길 원하는 행동을 나타낸다. 메서드 의미 GET 특정 리소스의 표시를 요청. GET을 사용하는 요청은 오직 데이터를 받기만 한다 POST POST 메서드는 특정 리소스에 엔티티를 제출할 때 사용. 서버의 상태의 변화를 일으킨다 PUT 목적 리소스 모든 현재 표시를 요청 payload로 수정한다 DELETE 특정 리소스를 삭제 ※ HTTP 요청 메소드 : https://developer.mozilla.org/ko/docs..

[Web Scrapping] Web 구성 요소 - 3

■ CSS (Cascading Style Sheet) - HTML 문서에 각종 시각적 요소를 정의하기 위한 스타일 시트 언어 ※ 계단식(cascading)이라는 단어는 상위 요소에 적용된 스타일이 상위 내의 모든 하위 요소에도 적용된다는 의미이다. 따라서 본문 텍스트의 색상을 "파란색"으로 설정하면 본문 내의 모든 제목, 단락 및 기타 텍스트 요소도 동일한 색상을 갖게 된다(다른 것을 지정하지 않는 한) - CSS는 많은 작업을 줄여준다. 여러 웹 페이지의 레이아웃을 한 번에 제어할 수 있다. ■ CSS 사용 - CSS는 다음 세 가지 방법으로 HTML 문서에 추가할 수 있다. 인라인 - HTML 요소 내부에 style 속성을 사용하는 방법 : 단일 HTML 요소에 고유한 스타일을 적용 내부 - 영역 안..