메타코드 강의 후기
Javascript로 만든 페이지에 대응하는 방법을 배울 것입니다.
개발자 모드로 박스 컨텐츠의 정보를 확인합니다.
박스컨텐츠에 대한 정보는 <a></a> 태그로 되어있는 경우가 많습니다.
클래스 부분의 정보를 복사하여 가져옵니다.
box_contents = soup.find_all('a', class_='box-content flex-style')
box_contents
가져온 클래스 정보를 코드에 위와 같이 입력합니다.
여러 개의 정보를 가져와야 하므로 "soup.find_all"을 사용했습니다.
크롤링이 되지 않는 경우 -> selenium의 webdriver 사용
크롤링이 되지 않는 경우에는 selenium으로부터 webdriver를 가져와서 크롤링을 진행합니다.
필요한 라이브러리들은 위 사진에서 확인할 수 있습니다.
정적인 페이지의 경우는 Requests와 Beautifulsoup으로 크롤링이 가능하며,
동적인 페이지의 경우는 Selenium을 사용하는 경우에 해당합니다.
Selenium을 통한 크롤링 준비
Selenium의 webdriver를 통하여 웹 드라이버를 실행하는 코드입니다.
해당 코드를 실행하면 새로운 브라우저를 통하여 url 주소에 해당하는 페이지가 실행됨을 확인할 수 있습니다.
wait의 경우 브라우저의 안정적인 실행을 위해 설정하며, 이 경우에는 10초로 설정했습니다.
html 변수에 페이지 소스를 담아 이후 크롤링에 사용할 것입니다.
크롤링 시도
soup = BeautifulSoup(html, 'html.parser')를 통해 soup 변수에 selenium을 통하여 얻은 페이지 소스를 대입하여 크롤링을 시도한 결과 출력에서 볼 수 있듯이 정보를 가져오는 것에 성공했음을 확인할 수 있습니다.
박스 컨텐츠를 가져오는 것이 목적이기 때문에 F12 개발자 모드에서 확인한 클래스 이름인 "box_content flex-style"을 형식에 맞게 입력하였습니다.
태그의 종류는 "a 태그"에 해당합니다.
불러온 정보 다루기
len 함수를 통해 확인할 수 있듯이 현재 box_contents는 리스트 형식이며, 그 안에 값들은 12개가 담겨있습니다.
box_contents[0] 등으로 숫자를 입력하며 각 위치에 어떤 값들이 담겨 있는지 쉽게 확인할 수 있습니다.
태그 정보와 클래스 이름도 확인할 수 있습니다.
리스트 구조이므로 후에 for문 등 다양한 방법으로 데이터를 다루기에 용이한 상태가 되었습니다.
원하는 정보 선택 출력
위의 방식을 통하여 컨텐츠에서 원하는 정보만 출력할 수 있습니다.
box_contents는 리스트 구조이므로 먼저 인덱스 번호를 통해 어떤 정보를 가져올 것인지 정합니다.
해당 요소의 태그와 class 정보는 쉽게 확인할 수 있습니다.
".find()" 안에 확인한 태그 정보와 class 이름을 넣으면 위에서 볼 수 있듯이 필요한 정보를 출력할 수 있습니다.
리스트에 정보 담기
리스트 구조를 활용하면 페이지에서 원하는 정보들을 편하게 추출하고 관리할 수 있습니다.
url 변수에 기본 주소 + href 정보를 통해 페이지에 대한 주소 정보를 담습니다.
title, body, date 변수에 개발자 모드에서 확인한 태그 정보와 클래스 정보를 활용하여 정보를 담습니다.
반복문의 각 변수들을 해당 리스트에 append하여 정보를 추가합니다.
box_contents의 길이만큼 반복문이 진행됩니다.
csv 파일로 저장
리스트 구조를 딕셔너리 구조로 변환한 뒤에,
pd.DataFrame() 함수를 사용하여 데이터프레임 변환합니다.
df.to_csv() 함수를 사용하면 데이터프레임 구조의 정보를 csv 파일 형태로 저장할 수 있습니다.
pd.read_csv() 함수를 사용하면 저장된 csv 파일 내용을 확인할 수 있습니다.
'Crawling - 메타코드' 카테고리의 다른 글
[웹 크롤링] 메타코드 강의 후기 - "4강 관광 상품 리뷰 크롤링 및 분석 프로젝트(3), 완강 후기" (0) | 2024.04.28 |
---|---|
[웹 크롤링] 메타코드 강의 후기 - "4강 관광 상품 리뷰 크롤링 및 분석 프로젝트(2)" (0) | 2024.04.25 |
[웹 크롤링] 메타코드 강의 후기 - "4강 관광 상품 리뷰 크롤링 및 분석 프로젝트(1)" (0) | 2024.04.20 |
[웹 크롤링] 메타코드 강의 후기 - "3강 예매 가능한 기차표 찾기 프로젝트" (0) | 2024.04.16 |
메타코드 - [ 효율적 뉴스 정보 수집 ] 메타코드 강의 후기 ( 2강 : 뉴스 크롤링 자동화 프로젝트 ) (1) | 2024.04.12 |