Python_5강_4_크롤링(엑셀 생성)

열라뽕따히·2024년 5월 14일

Python

목록 보기
12/13

jupyter notebook에서 크롤링한 데이터를 엑셀파일에 저장하는 방법

1. 라이브러리 임포트

openpyxl 라이브러리 임포트


2. 엑셀 파일 생성(Workbook())


3. 엑셀파일이 생성이 되면 디폴트 시트가 생성이 되며,

엑셀파일변수(excel_file).active 로 해당 시트를 선택할 수 있음

해당 시트의 이름을 변경하려면 해당시트.title 명령어로 이름을 변경하면 됨


4. 엑셀 시트에 데이터를 추가해보자

엑셀 시트명.append(리스트 형태의 하나의 열 데이터)를 사용함
한 줄의 데이터 묶음을 사용할 수 있음


5. 엑셀 파일 저장


6. 엑셀 파일 닫기


해당 폴더에 엑셀 파일이 생성된 것을 확인할 수 있음



이번에는 함수를 만들어서 엑셀파일을 한 번 만들어보자


=============================코드=============================

import openpyxl

def write_excel_template(filename, sheetname, listdata):
    
    # 2. 엑셀 파일 생성(Workbook())
    excel_file = openpyxl.Workbook()
    
    # 3.
    excel_sheet = excel_file.active
    
    if(sheetname != ''):
        # 엑셀 시트에 이름을 변경하는 방법
        excel_sheet.title = sheetname
        
    for item in listdata:
        # 4. 엑셀 시트 데이터 추가
        excel_sheet.append(item)
        
    # 5. 엑셀 파일 저장
    excel_file.save(filename)
    
    # 6. 엑셀 파일 닫기
    excel_file.close()

=============================코드=============================

import requests
from bs4 import BeautifulSoup

item_lists = list()

res = requests.get('https://www.nate.com')
    
soup = BeautifulSoup(res.content, 'html.parser')
    
datas = soup.select('div.isKeyword')
        
for data in datas:
    item_index = data.select('span.num_rank')
    item_title = data.select('span.txt_rank')
    
    for rank, title in zip(item_index, item_title):   # span 태그가 여러 개 있기 때문에 반복해줘야 함
        item_info = [rank.get_text(), title.get_text()]
        print(item_info)
        item_lists.append(item_info)

=============================실행=============================

nate 이름의 파일이 생성됨



엑셀파일의 B열을 늘려주자


=============================실행=============================

B열이 늘어나있는 것을 볼 수 있음





다른 문장으로 위와 똑같이 만들어보자


=============================코드=============================

# 라이브러리 임포트
import openpyxl

def write_excel_template(filename, sheetname, listdata):

    # 엑셀 파일 생성
    excel_file = openpyxl.Workbook()
    # 시트 생성
    excel_sheet = excel_file.active
    
    if(sheetname != ''):
        excel_sheet.title = sheetname
        
    for item in listdata:
        excel_sheet.append(item)
        
    excel_file.save(filename)
    
    excel_file.close()

=============================코드=============================

import requests
from bs4 import BeautifulSoup

item_lists = list()

res = requests.get('http://javahari.dothome.co.kr/crawling_test.html')

soup = BeautifulSoup(res.content, 'html.parser')

section2 = soup.find('ul', id='dev_course_list')

sec = section2.find_all('li', 'course')

for index, se in enumerate(sec):
    item_info = [str(index+1)+'.', se.get_text().split('[')[0].split('-')[1].strip()]    # list로 바뀜
    print(item_info)
    item_lists.append(item_info)

=============================코드=============================

write_excel_template('nate2.xlsx', '내용', item_lists)

=============================실행=============================

파일 생성

내용이 엑셀파일에 잘 나오는 것을 확인할 수 있음

0개의 댓글