Web Crawling 13

동적 웹 페이지 스크래핑 - Selenium 활용

** 실습코드를 한줄한줄 보면서  fn+f12 를 누르면 나오는 개발자 도구의 elements 창에서 직접 요소들을 비교해보며 공부하면 도움이 될 것 같다** chrome driver 설치 ( chrome 오른쪽위 ...  --> 도움말 --> chrome 정보에서 버전 확인)압축풀고 chrome driver.exe 파일을 VScode에서 작업할 폴더에 넣는다.  아래 코드는 네이버 검색창에 chat gpt 검색 -> 뉴스 탭 클릭 -> 뉴스 제목과 url을 자동으로 가져오는 과정을 코드로 구현해 놓은 것이다.# 동적 페이지 웹 스크래핑

Selenium 이란 ?

3. Selenium3-1. Selenium 개요3-1-1. Selenium 이란💡Selenium은 브라우저를 자동화하는 도구로, 웹 페이지의 JavaScript 렌더링까지 처리할 수 있다. 브라우저 드라이버를 사용하여 실제 브라우저(예: Chrome, Firefox)를 구동하여 웹 페이지를 로드하고, 스크립트를 통해 브라우저 내에서 클릭, 입력 등의 동작을 자동화한다. JavaScript 실행을 통해 생성된 콘텐츠도 로드하여 처리할 수 있다. 따라서 웹 페이지의 인터랙션과 동적 데이터를 크롤링하는 데 유용하다.3-1-2. Selenium 장단점장점JavaScript로 생성된 콘텐츠를 포함하여 모든 웹 요소에 접근 가능하다.버튼 클릭, 입력 상자 채우기 등 브라우저 상호작용이 가능하다.단점속도가 느리고..

정적 웹 페이지 스크래핑 - requests, BeautifulSoup 활용

VScode에 02_static-web-page 폴더 만든 후 그 안에 01_request_bs.py 생성  (아래 코드에서는 selenium 설치는 필요없음, requests와 beautifulsoup4 만 설치할 것 )# 정적 페이지 웹 스크래핑 -> requests, beautifulsoup# 정적 페이지 : 요청한 url에서 응답받은 html을 그대로 사용한 경우 (Server Side Rendering)import requestsfrom bs4 import BeautifulSoupdef web_request(url): response = requests.get(url) print(response) # print("=========1=========") print(r..

BeautifulSoup 이란?

2. BeautifulSoup2-1. BeautifulSoup 개요2-1-1. BeautifulSoup 이란💡Beautiful Soup은 Python 기반의 HTML, XML 파일을 파싱(parsing)하여 데이터를 추출하는 라이브러리이다.이미 다운로드된 HTML 문서를 파싱하여 DOM(Document Object Model) 트리를 생성하고, DOM 트리를 탐색하여 원하는 태그나 속성에 접근하고 데이터를 추출한다.웹 페이지의 구조를 이해하고 필요한 데이터를 정제하여 추출하는 데 적합하다. 2-1-2. BeautifulSoup 장단점장점가볍고 사용법이 간단하다.HTML 구조에서 특정 태그나 속성에 쉽게 접근 가능하다.빠른 파싱 속도를 제공한다.단점동적 웹 페이지(JavaScript 렌더링) 크롤링은 불..

크롤링 도구

1. 크롤링 도구1-1. 파이썬 크롤링 라이브러리 종류1-1-1. Requests특징 : HTTP 요청을 간단히 처리할 수 있는 라이브러리용도 :웹 페이지의 HTML 소스를 가져오기 위해 사용REST API 호출장점 :간단하고 빠른 HTTP 요청 지원쿠키, 세션, 인증 등 지원단점 :동적 콘텐츠(JavaScript로 렌더링되는 데이터)는 처리 불가예제 코드import requestsurl = 'https://example.com'response = requests.get(url)print(response.text)   1-1-2. Beautiful Soup특징 : HTML과 XML 파일을 파싱하여 구조화된 데이터를 추출용도 :정적 웹사이트에서 데이터 추출DOM 트리 탐색 및 조작장점 :HTML 구조 파싱..

네이버 책 검색 API를 활용한 데이터 저장

VScode에 naver-book-api.py 생성 후 실습 진행MySQL에서 bookdb 를 만들고,  bookdb에 대한 사용자 권한 부여 책 정보에 대한 table 만들기  import urllib.request import json # 내장 모듈import mysql.connector# API 호출을 위한 client_id, client_secret 변수 설정client_id = 'ECmEQr0_2x7miL8FQaey'client_secret = 'eubz_ZNeLw'searchText = urllib.parse.quote('소나기')url = 'https://openapi.naver.com/v1/search/book.json?query=' + searchText + '&display=100'r..

Web Crawling/실습 2025.02.23

CSS 선택자

1. CSS 선택자1-1. 선택자 종류1-1-1. 선택자 문법선택자                 문법                  설명전체 선택자*모든 요소 선택태그 선택자태그이름특정 태그 요소 선택클래스 선택자.클래스이름특정 클래스를 가진 요소 선택ID 선택자#아이디이름특정 ID를 가진 요소 선택자식 선택자부모요소 > 자식요소부모 요소 바로 아래 자식 요소 선택후손(하위) 선택자조상요소 자손요소조상 요소의 하위 자손 요소 선택인접 형제 선택자요소1 + 요소2요소1 바로 뒤에 나오는 요소2 선택일반 형제 선택자요소1 ~ 요소2요소1 다음에 나오는 요소2 선택1-1-2. 선택자 적용전체 선택자모든 요소를 선택합니다. 문서 전체에 CSS 스타일을 적용* { margin: 0; padding: 0;}태그..

브라우저 렌더링 동작 구조

1. 브라우저의 동작1-1. 브라우저의 기본 구조User interface : 사용자가 사용하느 브라우저의 주소표시줄, 홈버튼, 북마크 등의 페이지 이외의 모든 영역Browswer Process : User interface 와 Redering Process 사이의 동작을 제어하는 영역Redering Process : 표시되는 영역을 모두 제어하는 영역Netrworking : HTTP/HTTPS의 네트워크 요청 및 인터넷 통신과 관련되 보안 문제를 처리하는 영역JavaScript interpreter : JavaScript 코드를 구문 분석하고 실행하는 영학을 하는 영역UI Backend : 기본 운영체제의 사용자 인터페이스를 사용(주로 기본위젯(창이나 콤보상자)등을 그리는데 주로 사용)Data Pers..

크롤링 데이터 저장

4. 크롤링 데이터 저장4-1. 크롤링 데이터 저장 개요4-1-1. 크롤링을 통해 수집한 데이터의 저장💡크롤링을 통해 수집한 데이터는 다양한 형식과 구조를 가질 수 있으며, 이를 효율적으로 저장하고 활용하기 위해서는 적절한 저장 방식을 선택하는 것이 중요하다. 데이터의 특성과 목적에 따라 파일 시스템, 데이터베이스 등 여러 가지 방법을 사용할 수 있다.4-1-2. 데이터 저장의 필요성수집한 데이터를 안전하게 보관하여 이후 분석이나 활용에 사용하기 위해 데이터의 영속성을 보장해야 한다.적절한 형식으로 데이터를 저장하여 검색 및 처리 효율 향상시킬 수 있도록 데이터를 구조화 해야 한다.팀원 간, 다른 프로젝트 간 데이터 공유 및 재사용을 저장이 필요하다.4-1-3. 데이터 저장 시 고려사항데이터의 특성을 ..

WEB의 구조

3. WEB의 구조💡웹은 수많은 웹 페이지들이 하이퍼링크로 연결된 거대한 네트워크로 구성되어 있으며, 이러한 연결성을 이용하여 크롤러는 웹 사이트를 탐색하고 필요한 데이터를 수집한다. 웹의 구조와 프로토콜, 그리고 표준화된 문서 형식은 크롤러가 효율적으로 웹을 탐색하고 정보를 추출할 수 있도록 한다.3-1. WEB 구조 기초3-1-1. 기본 구성 요소URL (Uniform Resource Locator)웹에서 자원의 위치를 나타내는 표준화된 주소 체계이다.프로토콜(http, https), 도메인 이름, 경로, 쿼리 스트링 등으로 구성된다.HTTP/HTTPS 프로토콜웹 클라이언트와 서버 간의 통신을 위한 프로토콜이다.요청(Request)과 응답(Response)의 형태로 데이터를 교환한다.HTML (Hy..