전체 글 373

2주차 - 4 [웹/웹 스크래핑(크롤링)] Selenium

두괄식 요약 1. 현대 웹의 발달과 함께 기존의 정적(Static)인 웹 페이지뿐만 아니라 동적(Dynamic)인 웹 페이지도 등장하기 시작 2. 사용자 입장에서야 동적 웹 페이지는 세련되고 편리하지만 데이터를 수집하는 입장에서는 고민해야 할 지점이 늘어난 셈 3. 더군다나 '렌더링을 먼저 끝마치고 그 이후에 데이터를 처리한다'는 순서가 보장되는 기존의 동기 처리와 달리 렌더링은 렌더링대로 데이터 처리는 데이터 처리대로 상황에 따라 제각각 완료되는 비동기 처리가 등장하며 데이터 처리가 완전하지 않은 상황에서 스크래핑 작업이 시작되는 잘못된 상황이 발생하기 시작 3. 이를 해결하기 위해 등장한 것이 Selenium으로 Selenium은 웹 스크래핑뿐만이 아닌 자동화 성격 역시 갖춘 라이브러리 4. 브라우저..

데브코스 TIL 2023.10.26

Selenium - 키보드 이벤트 처리하기

In [1]: from IPython.core.interactiveshell import InteractiveShell InteractiveShell.ast_node_interactivity = "all" 3-5. 키보드 이벤트 처리하기¶ Selenium을 이용해서 키보드 Event를 동작해봅시다. Keyboard Event¶웹 페이지에서 일어나는 일들을 Event라고 합니다. 키보드로 일어날 수 있는 대표적인 이벤트는 다음과 같습니다. 키보드 누르기(press down) 키보드 떼기(press up) ... 저희는 입력창(input 태그의 form)에 키보드 입력을 진행하는 것을 목표로 합니다. 키보드 입력은 크게 다음과 같은 과정을 거칩니다. 입력하고자 하는 대상 요소를 찾습니다. (find_elem..

Selenium - 마우스 이벤트 처리하기

In [1]: from IPython.core.interactiveshell import InteractiveShell InteractiveShell.ast_node_interactivity = "all" 3-4. 마우스 이벤트 처리하기¶ Selenium을 이용해서 마우스 Event를 동작해봅시다. Target: 해시코드 "로그인" 창 접속하기¶이번 실습과 다음 실습에 걸쳐 로그인 과정을 자동화하는 것을 목표로 합니다. 다음 사이트에 로그인하기 위해 "로그인" 버튼을 눌러봅시다 : https://hashcode.co.kr/ Mouse Event¶웹 페이지에서 일어나는 일들을 Event라고 합니다. 마우스로 일어날 수 있는 대표적인 이벤트는 다음과 같습니다. 마우스 움직이기(move) 마우스 누르기(pre..

Selenium - Explicit Wait과 Implicit Wait

In [1]: from IPython.core.interactiveshell import InteractiveShell InteractiveShell.ast_node_interactivity = "all" 3-3. Wait and Call¶ Wait을 이용해서 동적 웹 사이트를 성공적으로 스크래핑해봅시다. Implicit / Explicit Wait¶Selenium은 동적 웹 사이트에 대한 지원을 진행하기 위해 명시적 기다림(Explicit Wait) 과 암묵적 기다림(Implicit Wait) 을 지원합니다. Explicit Wait: 다 로딩이 될 때까지 지정한 시간 동안 기다림 (e.g. 다 로딩이 될 때까지 5초동안 기다려!) Implicit Wait: 특정 요소에 대한 제약을 통한 기다림 (e...

Selenium의 기초 WebDriver

In [1]: from IPython.core.interactiveshell import InteractiveShell InteractiveShell.ast_node_interactivity = "all" 3-2. 브라우저 자동화하기, Selenium¶ Selenium을 활용해 브라우저를 조작해봅시다. Selenium 라이브러리¶ selenium은 Python을 이용해서 웹 브라우저를 조작할 수 있는 자동화 프레임워크입니다. 이를 사용하기 위해서는 먼저 selenium 프레임워크를 설치해야합니다. pip install을 통해서 이를 간단하게 설치할 수 있습니다. Tip: %를 이용해서 노트북(.ipynb) 환경에서 터미널 코드를 실행할 수 있습니다. In [2]: %pip install selenium ..

2주차 - 3 [웹/웹 스크래핑(크롤링)] BeautifulSoup

두괄식 요약 1. requests로 요청후 받게 된 DOM 객체를 파싱해 원하는 데이터를 추출하는 것이 웹 스크래핑의 기본 과정 2. DOM 객체의 파싱을 도와주는 라이브러리가 BeautifulSoup 3. 정적(static)인 웹페이지에 대한 파싱 및 데이터 추출이 BeatifulSoup의 주력분야 4. 동적(dynamic)인 웹을 처리하는 Selenium 역시 BeatifulSoup와 마찬가지로 원하는 데이터가 어디있는지 타게팅하는 것이 스크래핑 실력의 척도 5. 웹 스크래핑 자체는 쉬운 작업이지만 다양한 형태의 웹이 발생시키는 예외처리에 대응하는 것 역시 매우 중요 BeautifulSoup의 기본기 타게팅(1) - 태그 타게팅(2) - ID와 Class requests시 보낼 헤더에 대한 접근 & ..

데브코스 TIL 2023.10.25

요청시 헤더의 수정과 페이지네이션(Pagination)

2-4. BeautifulSoup을 이용해 원하는 요소 가져오기 II - Hashcode 질문 가져오기¶ BeautifulSoup을 이용해서 Hashcode 질문 내용을 스크래핑해봅시다. 스크래핑하고자 하는 사이트 확인하기¶직접 접속해서 해당 사이트를 확인해봅시다 : https://hashcode.co.kr/ 아래 두 가지 원칙을 지킵니다. 과도한 요청을 보내지 않습니다. 받아온 정보 활용에 유의합니다. header로 User-Agent를 전달하자¶ In [1]: # 다음 User-Agent를 추가해봅시다. user_agent = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Ge..

스크래핑할 요소의 타게팅 - ID & Class

2-3. HTML의 Locator로 원하는 요소 찾기¶ BeautifulSoup을 이용해서 더 정확하게 우리가 원하는 정보를 가져오는 방법을 학습해봅시다. 그래, 바로 너! id와 class¶태그는 자신의 이름 뿐만 아니라 고유한 속성 또한 가질 수 있습니다. 이 중에서 id와 class는 Locator로서, 특정 태그를 지칭하는 데에 사용됩니다. tagname: 태그의 이름 id: 하나의 고유 태그를 가리키는 라벨 class: 여러 태그를 묶는 라벨 This element has only tagname This element has tagname and id This element has tagname and class id와 class를 이용해서 HTML의 특정 태그를 지칭하고 가져오는 방법에 대해서..

스크래핑할 요소의 타게팅 - 태그

In [1]: from IPython.core.interactiveshell import InteractiveShell InteractiveShell.ast_node_interactivity = "all" 2-3. 원하는 요소 가져오기 I - 책 이름 모으기¶ 연습만이 살길! 예시 사이트를 통해 스크래핑을 진행해봅시다. Target: Mock Book Data¶다음 사이트에 있는 책들의 이름 정보를 스크래핑 해봅시다 : http://books.toscrape.com/catalogue/category/books/travel_2/index.html 해당 웹 페이지는 임의의 책 정보가 담긴 웹 사이트입니다. In [3]: # 스크래핑에 필요한 라이브러리를 불러와봅시다. import requests # 요청, ..

파싱과 스크래핑의 기본, BeautifulSoup

In [18]: from IPython.core.interactiveshell import InteractiveShell InteractiveShell.ast_node_interactivity = "all" 2-2. 파이썬의 HTML Parser, BeautifulSoup¶ HTML 분석기인 BeautifulSoup에 대해서 알아봅시다. BeautifulSoup 라이브러리¶지난 실습들에서 저희는 requests 모듈을 이용해서 HTTP 요청을 보내고, 이 응답을 받아 여러 요소를 살펴보았습니다. 그런데, res.body를 해보았을 때 문제점이 있었습니다. 바로 해당 내용이 아주 긴 텍스트로 와서 분석하기 힘들다는 것이 바로 그것인데요, 저희가 원하는 요소만을 가져올 수 있으면 얼마나 좋을까요? 이를 가능..