목록웹 스크래핑(Web scraping) (9)
터칭 데이터
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..
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..
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...
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-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..
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 # 요청, ..
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를 해보았을 때 문제점이 있었습니다. 바로 해당 내용이 아주 긴 텍스트로 와서 분석하기 힘들다는 것이 바로 그것인데요, 저희가 원하는 요소만을 가져올 수 있으면 얼마나 좋을까요? 이를 가능..
In [1]: from IPython.core.interactiveshell import InteractiveShell InteractiveShell.ast_node_interactivity="all" 정보를 달라고 요청하기, GET¶ In [6]: import requests res = requests.get("https://www.naver.com") res # HTTP 응답이 담겨 있다. Out[6]: In [7]: # Header를 확인해보자: .headers res.headers Out[7]: {'Server': 'NWS', 'Date': 'Tue, 24 Oct 2023 03:26:22 GMT', 'Content-Type':..