본문 바로가기
Python/Python_Crawling

크롤링 예제 3

by Mr.DonyStark 2023. 12. 19.

□ 전처리

  ○ .split(구분값)

    - 구분값을 중심으로 분리하여 리스트 형태로 저장

    - 구분되어 저장된 값을 인덱스 번호를 활용하여 출력
  ○ .strip() : 앞, 뒤 공백 제거

  ○ .replace('변경대상 값', '변경할 값) : 특정 값을 원하는 값으로 변경

□ enumerate(변수명)

  ○ 반복문으로 출력시 출력 값에 번호를 붙이고 싶다면 enumerate 함수 활용

  ○ 이때 번호로 출력할 변수를 추가하여 코딩해야함

#라이브러리 추출
import requests
from bs4 import BeautifulSoup

#크롤링 대상 사이트 지정
target_place = requests.get('https://davelee-fun.github.io/blog/crawl_test')
#htmlparser 실행 : html.parser
use_tool = BeautifulSoup(target_place.content, 'html.parser')

#li 태그 추출 (태그별 속성값을 활용하여 호출)
li_raw = use_tool.find_all('li', class_ = 'course') #find all로 인하여 추출데이터 리스트로 저장 + li_raw = use_tool.find_all('li', 'course') 형태로 작성하면 class 조건으로 자동인식함
a = 0 #카운팅을 위한 변수지정

for v in li_raw: # .find_all()을 활용했으므로 리스트형태와 동시에 태그까지 함께 저장되기에 for문을 활용하여 추출
    a += 1
    print('########################################')
    print(f'{a} 번째 강의\t:\t{v.get_text()}')

print(f'총 개설강좌\t:\t{a}개')

#h1 태그값중 특정 값추출
h_raw = use_tool.find('h1')
h_data = h_raw.string.split()[0] #.split()함수를 사용하여 데이터를 추출하였기에 리스트로 저장됨. 저장된 리스트의 인덱스를 활용하여 원하는정보 가져옴
print(f'강사명\t:\t{h_data}')

#ul 태그값중 특정영역의 값추출
#같은 ul 태그지만 영역이다르며 영역별 데이터를 추출하고자하면 css 속성 등 차이점을 발견하여 활용
ul_raw_1 = use_tool.find('ul', attrs={'id':'hobby_course_list'})
print(f'\n첫번째 ul태그 데이터뭉치\n{ul_raw_1.get_text()}')
print('########################################')
ul_raw_2 = use_tool.find('ul', attrs={'id':'dev_course_list'})
print(f'\n두번째 ul태그 데이터뭉치\n{ul_raw_2.get_text()}')
print('########################################')

#.split() .strip() 데이터 전처리
new_list = list()
for v in ul_raw_2.find_all('li', class_='course'):  # find_all을 사용하여 모든 해당 요소를 가져옴
    v_list_1 = v.get_text().split('[')[0].replace('\n', '')  # .split()를 사용하여 [ 기준으로 분리 후 인덱스번호를 활용해 첫번째 값 가져오기
    v_list_1 = v_list_1.split('-')[1]
    v_list_1 = v_list_1.strip() # strip()을 사용하여 앞뒤 공백 제거
    new_list.append(v_list_1)
print(new_list)

for i, v in enumerate(new_list):  #enumerate()함수를 활용해 for문을 통해 출력된 값앞에 숫자를 붙임. 이때 숫자 변수 한개 더 지정하여 for문 작성
    print(f'{i}번째 강의명은 {v} 입니다.')

'Python > Python_Crawling' 카테고리의 다른 글

크롤링 예제 4  (1) 2023.12.20
css selector  (0) 2023.12.20
크롤링 예제 2  (0) 2023.12.19
크롤링 예제 1  (0) 2023.12.19
셀레니움(Selenium) 기본예제 : naver 쇼핑 특정상품 위치  (0) 2023.12.14