jupyter notebook에서 크롤링한 데이터를 엑셀파일에 저장하는 방법
openpyxl 라이브러리 임포트


엑셀파일변수(excel_file).active 로 해당 시트를 선택할 수 있음
해당 시트의 이름을 변경하려면 해당시트.title 명령어로 이름을 변경하면 됨

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



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

이번에는 함수를 만들어서 엑셀파일을 한 번 만들어보자
=============================코드=============================
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)
파일 생성


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