본문 바로가기
Python

Python - 크롤링 기술 팁

by DGK 2021. 10. 29.

 

인프런 파이썬 입문 수업을 듣고 중요한 내용을 정리했습니다.
개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.

 

크롤링 기술 tips(Python)

추출한 데이터를 다시 한 번 추출하는 방법과 데이터 전처리(가공, 정제) 방법에 대해 다루고자 한다.

 

크롤링 기술(데이터 재추출)

import requests
from bs4 import BeautifulSoup

res = requests.get('https://davelee-fun.github.io/blog/crawl_test')
soup = BeautifulSoup(res.content, 'html.parser')

titles = soup.find_all('li', 'course')
for title in titles:
    print(title.get_text())

 

  • 일반적인 크롤링으로 데이터를 추출한 경우

```

결과 :

 

(왕초보) - 클래스 소개

(왕초보) - 블로그 개발 필요한 준비물 준비하기

(왕초보) - Github pages 설정해서 블로그 첫 페이지 만들어보기

(왕초보) - 초간단 페이지 만들어보기

(왕초보) - 이쁘게 테마 적용해보기

(왕초보) - 마크다운 기초 이해하고, 실제 나만의 블로그 페이지 만들기

(왕초보) - 다양한 마크다운 기법 익혀보며, 나만의 블로그 페이지 꾸며보기

(초급) - 강사가 실제 사용하는 자동 프로그램 소개 [2]

(초급) - 필요한 프로그램 설치 시연 [5]

(초급) - 데이터를 엑셀 파일로 만들기 [9]

(초급) -     엑셀 파일 이쁘게! 이쁘게! [8]

(초급) -     나대신 주기적으로 파이썬 프로그램 실행하기 [7]

(초급) - 파이썬으로 슬랙(slack) 메신저에 글쓰기 [40]

(초급) - 웹사이트 변경사항 주기적으로 체크해서, 메신저로 알람주기 [12]

(초급) - 네이버 API 사용해서, 블로그에 글쓰기 [42]

(중급) - 자동으로 쿠팡파트너스 API 로 가져온 상품 정보, 네이버 블로그/트위터에 홍보하기 [412]

 

```

 

import requests
from bs4 import BeautifulSoup

res = requests.get('https://davelee-fun.github.io/blog/crawl_test')
soup = BeautifulSoup(res.content, 'html.parser')

section = soup.find('ul', id = 'dev_course_list')
titles = section.find_all('li', 'course')
for i in titles:
    print(i.get_text())

 

  • 크롤링으로 추출한 데이터를 원하는 부분만 다시 추출하는 경우

```

결과 :

 

(초급) - 강사가 실제 사용하는 자동 프로그램 소개 [2]

(초급) - 필요한 프로그램 설치 시연 [5]

(초급) - 데이터를 엑셀 파일로 만들기 [9]

(초급) -     엑셀 파일 이쁘게! 이쁘게! [8]

(초급) -     나대신 주기적으로 파이썬 프로그램 실행하기 [7]

(초급) - 파이썬으로 슬랙(slack) 메신저에 글쓰기 [40]

(초급) - 웹사이트 변경사항 주기적으로 체크해서, 메신저로 알람주기 [12]

(초급) - 네이버 API 사용해서, 블로그에 글쓰기 [42]

(중급) - 자동으로 쿠팡파트너스 API 로 가져온 상품 정보, 네이버 블로그/트위터에 홍보하기 [412]

 

```

 

class를 활용해서 데이터를 추출하는 경우, 원하지 않는 부분까지 데이터를 가져올 수 있다.

따라서, find() 함수를 사용하여 우선적으로 추출하고자 하는 데이터를 포함한 태그의 상위 태그를 가져온 후,

find_all() 함수를 사용해서 추출된 데이터를 리스트 형태로 하나씩 추출하여 원하는 부분만을 가져온다.

참고로 위의 예시코드에서 변수 section에 할당된 데이터는 객체(object)이다.

 

즉, ①find() 함수로 추출한 데이터를 ②find_all() 함수로 재차 추출하여 데이터의 원하는 부분만을 가져온다. 

 

 

크롤링 기술(데이터 전처리 :  split(), strip(), enumerate() 함수 활용)

import requests
from bs4 import BeautifulSoup

res = requests.get('https://davelee-fun.github.io/blog/crawl_test')
soup = BeautifulSoup(res.content, 'html.parser')

section = soup.find('ul', id = 'dev_course_list')
titles = section.find_all('li', 'course')
for i in titles:
    print(i.get_text())

 

  • 데이터 전처리를 하지 않은 일반적인 경우

```

결과 :

 

(초급) - 강사가 실제 사용하는 자동 프로그램 소개 [2]

(초급) - 필요한 프로그램 설치 시연 [5]

(초급) - 데이터를 엑셀 파일로 만들기 [9]

(초급) -     엑셀 파일 이쁘게! 이쁘게! [8]

(초급) -     나대신 주기적으로 파이썬 프로그램 실행하기 [7]

(초급) - 파이썬으로 슬랙(slack) 메신저에 글쓰기 [40]

(초급) - 웹사이트 변경사항 주기적으로 체크해서, 메신저로 알람주기 [12]

(초급) - 네이버 API 사용해서, 블로그에 글쓰기 [42]

(중급) - 자동으로 쿠팡파트너스 API 로 가져온 상품 정보, 네이버 블로그/트위터에 홍보하기 [412]

 

```

 

import requests
from bs4 import BeautifulSoup

res = requests.get('https://davelee-fun.github.io/blog/crawl_test')
soup = BeautifulSoup(res.content, 'html.parser')

section = soup.find('ul', id = 'dev_course_list')
titles = section.find_all('li', 'course')
for i in titles:
    print(i.get_text().split('[')[0].split('-')[1])

 

  • 데이터 전처리를 한 경우(split() 함수 사용)

```

결과 :

 

강사가 실제 사용하는 자동 프로그램 소개

필요한 프로그램 설치 시연 데이터를 엑셀 파일로 만들기

    엑셀 파일 이쁘게! 이쁘게!

    나대신 주기적으로 파이썬 프로그램 실행하기

파이썬으로 슬랙(slack) 메신저에 글쓰기

웹사이트 변경사항 주기적으로 체크해서, 메신저로 알람주기

네이버 API 사용해서, 블로그에 글쓰기

자동으로 쿠팡파트너스 API 로 가져온 상품 정보, 네이버 블로그/트위터에 홍보하기

 

```

 

split() 함수를 사용하여, 추출한 데이터에서 원하는 부분만을 출력할 수 있다.(불필요한 부분 제거 가능)

 

import requests
from bs4 import BeautifulSoup

res = requests.get('https://davelee-fun.github.io/blog/crawl_test')
soup = BeautifulSoup(res.content, 'html.parser')

section = soup.find('ul', id = 'dev_course_list')
titles = section.find_all('li', 'course')
for i in titles:
    print(i.get_text().split('[')[0].split('-')[1].strip())

 

  • 데이터 전처리를 한 경우(strip() 함수 사용)

```

결과 :

 

강사가 실제 사용하는 자동 프로그램 소개

필요한 프로그램 설치 시연 데이터를 엑셀 파일로 만들기

엑셀 파일 이쁘게! 이쁘게!

나대신 주기적으로 파이썬 프로그램 실행하기

파이썬으로 슬랙(slack) 메신저에 글쓰기

웹사이트 변경사항 주기적으로 체크해서, 메신저로 알람주기

네이버 API 사용해서, 블로그에 글쓰기

자동으로 쿠팡파트너스 API 로 가져온 상품 정보, 네이버 블로그/트위터에 홍보하기

 

```

 

strip() 함수를 사용하여, 추출한 데이터의 불필요한 공백을 제거할 수 있다.

 

import requests
from bs4 import BeautifulSoup

res = requests.get('https://davelee-fun.github.io/blog/crawl_test')
soup = BeautifulSoup(res.content, 'html.parser')

section = soup.find('ul', id = 'dev_course_list')
titles = section.find_all('li', 'course')
for index, title in enumerate(titles):
    print(str(index + 1) + '.', title.get_text().split('[')[0].split('-')[1].strip())

 

  • 데이터 전처리를 한 경우(enumerate() 함수 사용)

```

결과 :

 

1. 강사가 실제 사용하는 자동 프로그램 소개

2. 필요한 프로그램 설치 시연

3. 데이터를 엑셀 파일로 만들기

4. 엑셀 파일 이쁘게! 이쁘게!

5. 나대신 주기적으로 파이썬 프로그램 실행하기

6. 파이썬으로 슬랙(slack) 메신저에 글쓰기

7. 웹사이트 변경사항 주기적으로 체크해서, 메신저로 알람주기

8. 네이버 API 사용해서, 블로그에 글쓰기

9. 자동으로 쿠팡파트너스 API 로 가져온 상품 정보, 네이버 블로그/트위터에 홍보하기

 

```

 

enumerate() 함수를 사용하여, 추출한 데이터에 인덱스번호를 부여할 수 있다.

참고로, enumerate() 함수는 인덱스번호와 인덱스번호에 해당하는 데이터를 반환해준다.

 

 

 

 

 

 

'Python' 카테고리의 다른 글

Python - 크롤링 실전 연습(1)  (0) 2021.10.31
Python - CSS selector를 활용한 크롤링  (0) 2021.10.29
Python - HTML·CSS 이해와 크롤링  (0) 2021.10.28
Python - crawling pattern  (0) 2021.10.28
Python - 기본 문법(추가내용)  (0) 2021.10.21

댓글