1. HTML
HTML은 웹페이지의 구조를 나타내기 위한 언어로 태그로 구성된다. 태그는 꺾쇠 괄호로 표시되며 "시작 태그"와 "종료 태그"로 이루어지며 속성명과 속성값이 있을 수 있다. 예를 들어 아래와 같은 형태를 가진다.
<tagName attrName="attrValue"> Content </tagName>
크롤링에서 자주 사용되는 태그는 다음과 같다.
태그명 | 역할 | 예 |
div | 구역 분할 | <div> Content </div> |
a | 링크 | <a href="https://www.naver.com"> Naver </a> |
h1 | 제목 | <h1> Title </h1> |
p | 문단 | <p> Paragraph </p> |
ul, li | 목록 | <ul> <li>Americano</li> <li>Latte</li> <li>Tea <ul> <li>Chamomile</li> <li>Peppermint</li> </ul> </li> </ul> |
태그에는 부모 태그와 자식 태그가 있다. 예를 들어 아래와 같은 형태를 가진다.
<parentTag>
<childTag>Content1</childTag>
<childTag>Content2</childTag>
</parentTag>
2. Requests
Requests란 HTTP 통신을 위한 파이썬 라이브러리이다.
- HTTP 통신은 요청과 응답으로 이루어지며 Get과 Post 요청이 있다. 예를 들어, Get은 뉴스 1페이지를 보여달라고 요청하는 것이고, 응답으로는 해당 페이지를 보여준다. 반면 Post 요청은 특정 정보들과 함께 서버에 요청을 보낸다. 그리고 서버는 해당하는 응답을 보내준다.
먼저 Request 라이브러리를 설치해보자. 터미널에 아래 명령어를 입력하면 된다.
pip install requests
그리고 requests 라이브러리 사용법을 알아보자. 먼저 import를 통해 라이브러리를 가져와야한다. 그리고 requests.get()함수에 내가 원하는 사이트의 주소를 인자로 전달해주면 된다. 그러면 해당 Get 요청에 대한 응답을 가져올 수 있다.
import requests
response = requests.get("https://www.naver.com")
html = response.text
print(html)
- response.text: response의 text 요소에는 html 코드가 들어있다.
3. Beautifulsoup
Beautifulsoup는 HTML을 분석하기 위한 파이썬 라이브러리이다. 아래 명령어로 설치가 가능하다.
pip install beautifulsoup4
아래와 같이 특정 클래스를 가지는 태그 하나를 가져올 수 있다.
import requests
from bs4 import BeautifulSoup
response = requests.get("https://www.naver.com/")
html = response.text
soup = BeautifulSoup(html, 'html.parser')
result = soup.select_one('.blind')
print(result)
- Beautifulsoup(html, 'html.parser'): html 문자열에 대해서 html을 파싱한다.
- soup.select_one('.blind'): class명이 blind인 태그 하나를 가져온다.
해당 코드의 결과는 아래와 같다.
4. CSS 선택자
CSS란 웹사이트에 디자인을 적용하기 위한 언어이다. 글자 색 변경, 폰트 크기 등의 이미지 지정이 가능하다. CSS 선택자는 디자인을 변경할 HTML 태그를 선택하는 방법으로 이것을 그대로 크롤링에 적용할 수 있다. 이때 CSS 선택자로는 "태그 선택자", "id 선택자", "class 선택자", "자식 선택자" 등이 있다.
선택자 이름 | 방법 | HTML | CSS 선택자 |
태그 선택자 | 테그 이름 | <div> divTag </div> | div |
id 선택자 | #(id 이름) | <div id="id1"> divTag </div> | #id1 |
class 선택자 | .(class 이름) | <div class="class1"> divTag </div> | .class1 |
자식 선택자 | 바로 아래 태그 | <div class="class1"> <a> link </a> </div> |
.class1 > a |
'DB > Crawling' 카테고리의 다른 글
6. word 활용 (python-docx) (0) | 2024.04.06 |
---|---|
5. 네이버 뉴스 본문 크롤링 (0) | 2024.04.06 |
4. 셀레니움 기본 개념 (네이버 로그인, 네이버 쇼핑 상품 크롤링) (0) | 2024.04.01 |
3. Openpyxl 기본 개념 (네이버 주식 정보 수집) (0) | 2024.04.01 |
2. 네이버 뉴스 데이터 수집 (페이지 가져오기) (0) | 2024.04.01 |