본문 바로가기
Python/08. 크롤링과 웹 기본

01. 크롤링 코드 패턴

by gamdong2 2024. 7. 27.

📖 크롤링 (Crawling)

크롤링 : 웹사이트에서 내가 원하는 내용을 자동으로 추출하는 기능

ex : 실시간 검색어 추출, 쇼핑몰의 인기 상품 추출,...

 

 

1. 크롤링 의미 알기

  • at 파이썬, 라이브러리가 多. 라이브러리 여러개를 조합하여 원하는 기능을 사용
  •  주요 라이브러리
- requests : 웹페이지 호출
- bs4 (BeautifulSoup) : 웹페이지 분석(크롤링)
  • '웹페이지 호출' 의 의미
- 웹브라우저에 IP/URL 주소 입력 → 해당 웹페이지에 접속; HTML 언어 파일이 시각화되어 모니터에 노출
- 즉, '웹페이지 호출' = 해당 웹페이지의 HTML 파일's 코드를 호출
  • 파싱 (parsing) : 태그로 이루어진 HTML 파일's 문자열의 의미를 분석하는 것

 

2. 크롤링 코드 패턴

* BeautifulSoup : 대문자로 시작. 사실상 Class 

# [크롤링 코드 패턴]
# 1. 라이브러리 호출
import requests
from bs4 import BeautifulSoup

# 2. 웹페이지 호출, 변수에 저장
url = "http://example.com"
response = requests.get(url)  # 구조화x 상태

# 3. 웹페이지 파싱, 변수에 저장
soup = BeautifulSoup(response.content, "html.parser")  # .content 를 통해 구조화o  # BeautifulSoup의 "html.parser" 함수를 통해 분석

# 4. 필요한 데이터만 추출, 변수에 저장
data = soup.find("title")  # 찾으려는 태그명 : title

# 5. 추출한 데이터 활용
print(data.get_text())  # .get_text() : 태그 다 떼고, 그 안의 문자열만 반환
# = print(data.string)

 

 

3. 같은 태그가 여러개일 때

1) 특정 태그만 찾기 : find()

# [find 기본]
data = soup.find("p")

# [find 섬세 버전]
# 1. 태그/속성&속성값
data = soup.find("p", class_="")  # class_ 언더바 꼭 붙이기!

# 2. 태그/속성값
data = soup.find("p", "")

# 3. 태그/속성&속성값 딕셔너리
data = soup.find("p", attrs={"class": "", "id": "", ...})

# 4. 속성&속성값
data = soup.find(class_="")

 

2) 모든 태그 찾기 : find_all()

# [같은 태그들 중, 첫 번째 태그만 찾기]
data = soup.find("p")
print(data)  # 태그 + 문자열 출력
print(data.string)  # 문자열만 출력

# [같은 태그들 모두 찾기]
data = soup.find_all("p")
print(data)  # 리스트 출력
# print(data.string)  # Error; 리스트이므로 문자열로 출력 불가
for item in data:
	print(item.string)  # 리스트 내 요소 하나하나를 문자열로 출력
    
# [모든 태그 찾은 뒤, 인덱싱을 통해 n 번째 태그 추출하기]
# 스타일이 같은 태그 모두 찾기
data = soup.find_all("p", "text_info")
for item in data:
	print(item.string)
# 스타일이 같은 태그 모두 찾은 뒤, 인덱싱을 통해 n번째 태그 추출
data = soup.find_all("p", "txt_info")
print(data[1].string)

 

 

 

 

 

'Python > 08. 크롤링과 웹 기본' 카테고리의 다른 글

02. 실전 크롤링  (0) 2024.07.28