데이터 놀이터
Section 4 - Sprint 2. 데이터 수집과 NoSQL - 2. Web scraping - (2) DOM, Web scraping 본문
코드스테이츠 AIB 17
Section 4 - Sprint 2. 데이터 수집과 NoSQL - 2. Web scraping - (2) DOM, Web scraping
jjjk84 2023. 4. 1. 23:02728x90
1. DOM
(1) 개념
Document Object Model의 약자
프로그래밍 언어를 통해 HTML, XML 등 문서들에 접근할 수 있도록 돕는 프로그래밍 인터페이스다.
(2) 메소드
HTML을 확인할 수 있는 개발자도구를 opt+cmd+i(mac 기준)키로 열어 콘솔창에 자바스크립트를 통해 DOM을 사용할 수 있다.
document.querySelectorAll('a') : css의 a 셀렉터와 일치하는 모든 요소 리턴
document.querySelector('a')
document.getElementbyTagName('a') : a 태그와 일치하는 문서 요소들 리턴
document.getElementById('a') : a id와 일치하는 요소들 리턴
document.getElemnetByClassName('a') : a클래스가 일치하는 요소들 리턴
2. Web scraping
### Python을 활용한 Web scraping
## 1. requests 라이브러리 (HTTP 요청을 보내는 역할)
# 1. 설치
pip install requests
# 2. 사용
import requests
url='http://google.com'
page=requests.get(url) # 구글 사이트에 http 요청 보내기
resp.status_code # 요청 상태 확인
## 2. BeautifulSoup 라이브러리 (요청으로부터 받은 내용을 파싱하여 정보 얻기)
# 파싱(parsing) : HTML, XML 등 특정 문서들을 Python에서도 활용할 수 있도록 변환하는 작업
# 1. 설치
pip install beautifulsoup4
# 2. 사용
from bs4 import BeautifulSoup
soup=BeautifulSoup(page.content, 'html.parser')
# 3. 요소 찾기 (find, find_all)
# soup.find(), soup.find_all() 주의사항
soup.find(class_='cat') # class가 아닌 class_
soup.find_all('div', class_='cat') # <div> 태그 내 클래스
soup.find_all(string=lambda text: 'raining' in text.lower()) # 문자열 포함 요소 찾기
# 4. 결과 확인
cat_el = soup.find('p', class_='cat')
cat_el.text
3. 더 알아봐야할 것
- selenium활용 동적 스크래핑 도전
- https://nomadcoders.co/python-for-beginners
728x90
'코드스테이츠 AIB 17' 카테고리의 다른 글
Section 4 - Sprint 2. 데이터 수집과 NoSQL - 4. NoSQL (0) | 2023.04.17 |
---|---|
Section 4 - Sprint 2. 데이터 수집과 NoSQL - 3. API (0) | 2023.04.17 |
Section 4 - Sprint 2. 데이터 수집과 NoSQL - 2. Web scraping - (1) HTML, CSS (0) | 2023.04.01 |
Section 4 - Sprint 2. 데이터 수집과 NoSQL - 1. Python 활용 (0) | 2023.03.28 |
Section 4 - Sprint 1 Challenge (0) | 2023.03.23 |