크롤링 기본 방법 및 필요 지식 정리
1. 크롤링 위한 기본 코드 정리
: 웹페이지 내 필요 정보를 크롤링하기 위해 BeautifulSoup, requests 두 개의 라이브러리를 사용하는 방법이 대표적이다. 해당 방법에 이용되는 코드의 의미를 알아야 이에 기반해 응용할 수 있는 폭이 넓어지니 우선적으로 코드에 대해 의미를 이해한 뒤 전체 코드를 사용해 작업에 사용하는 것이 이상적일 것이다.
#라이브러리 내 함수를 사용하기 위해선 사용자 컴퓨터 내에 라이브러리가 이미 설치가 되어 있어야 한다. (No module 에러 주의)
#Mac 환경 터미널, 윈도우 환경 cmd 내 'pip install 라이브러리명' 명령을 내림으로써 라이브러리 설치 가능하다.
1) 크롤링 위한 기본 코드
import requests
from bs4 import BeautifulSoup
변수1 = requests.get('사이트 주소')
변수2 = BeautifulSoup(변수1.content,'html.parser')
data = 변수2.find('h3')
print(data.get_text())
2) 크롤링 기본 코드 해석
: 위의 기본 코드에 대해 줄마다의 의미를 정리하면 아래와 같다. 결국 크롤링을 잘하기 위해선 4단계의 방법을 아는 것이 중요한데 페이지 검사 기능을 사용하는 것도 좋지만, 기본적인 HTML과 CSS에 대한 지식이 더해졌을 때 보다 응용할 수 있는 범위가 넓어질 것이다.
# 1단계 : 크롤링 관련 라이브러리 임포트
import requests # 웹페이지 가져오기 라이브러리
from bs4 import BeautifulSoup # 웹페이지 분석(크롤링) 라이브러리
# 2단계 : 원하는 웹페이지 가져오기
href = requests.get('https://www.nocutnews.co.kr/news/5862355')
# 3단계 : 파싱 - 문자열의 의미를 분서해주는 것 (html 구조로 정리)
soup = BeautifulSoup(href.content,'html.parser')
# 4단계 : 필요한 데이터 찾아 변수에 담기
data = soup.find('h3')
# 5단계 : 결과값만 추출하기
print(data.get_text())
2. 크롤링 작업 간 필요한 HTML/ CSS 지식 정리
: 크롤링 기본 5단계 중 4단계 '필요한 데이터 찾아 변수에 담기'를 잘 수행하기 위해선 기본적인 HTML과 CSS 언어에 대한 지식이 필요하다. 태그만으로는 정보를 특정하는데 어려운 부분이 있어 class 값 혹은 속성 값 혹은 id 값을 상황에 맞게 적절히 사용해야 하며 이를 위해 HTML/ CSS의 기본 구성에 대해 알 필요가 있다.
1) HTML 코드의 기본 구성과 이에 기반한 필요 데이터 특정
: HTML 코드는 'tag' 를 기본 구성으로 'class 값', 'id 값', '속성 값'으로 구별된다. 필요한 정보 이상의 방대한 자료를 크롤링하거나 원하는 정보를 다 담지 못하는 경우를 방지하기 위해서는 크롤링하고자 하는 대상의 코드 구성을 확인하고 원하는 정보만을 정확히 특정할 수 있어야 한다.
# HTML 코드 예
<img class = "클래스명" id = "아이디명" src = "저장된 이미지 주소" width = "50px">
# class 값은 일반적으로 동일한 구조 안에서 내용만 달라지는 경우에 이를 군집하기 위해 사용되는 특징을 지님
→ 웹 페이지 내 나열되어 있는 정보를 한꺼번에 크롤링하는 목적으로 사용하기에 적합하다.
# id 값은 주로 태그 간의 구분을 위해 사용됨으로 다른 태그와 중복 없이 단일로 사용되는 특징을 지님
→ 특정 태그 안에 정보를 단일로 가져오는 목적으로 사용하기에 적합하다.
2) HTML 구조 내 원하는 데이터를 변수에 담는 방법
: tag/ class 값/ id 값/ 속성 값 네 가지 정보에 대해 원하는 정보를 특정하였을 때 각 경우에 따라 데이터 추출하는 방법 정리
# 1번째 방법 : HTML 태그를 통한 정보 특정
data = soup.find('태그')
# 2번째 방법 : HTML 태그와 class 값을 통한 정보 특정
data = soup.find('p', class_ = 'class 값')
data = soup.find('p', 'cssstyle')
# 3번째 방법 : HTML 태그와 속성 값을 통한 정보 특정
data = soup.find('p', attrs = {'속성 이름'} = '속성 값')
# 4번째 방법 : id 값을 통한 정보 특정
data = soup.find(id = 'id값')'python > python_crawling' 카테고리의 다른 글
| [파이썬] BeautifulSoup 기본 사용법 정리 (0) | 2022.12.27 |
|---|---|
| [파이썬] Scrapy, Selenium, BeautifulSoup 장단점 비교 (0) | 2022.12.27 |
| [파이썬] openpyxl 라이브러리 활용한 엑셀 파일 추출 (0) | 2022.12.16 |
| [파이썬] 여러 페이지 동시 크롤링 위한 url 구조 활용 (0) | 2022.12.14 |
| [파이썬] select 함수를 사용한 추출 데이터 지정 (0) | 2022.12.14 |