Notice
Recent Posts
Recent Comments
Link
Star_project
python 직업교육 파이썬을 이용한 자동화 스크립트 본문
1. BASE_URL를 기본으로 소스 코드를 참조하여 해당 페이지의 테이블의 내용을 이중 리스트로 만든다. (20점)
조건 : 이미지는 포함하지 않는다.
description 의 값은 최초 5글자만 포함한다.
2. 이중 리스트의 내용을 CSV 파일로 생성한다. (20점)
3. 코드를 완성하여 CSV 파일을 작업디렉토리에 생성 (60점)
import requests
from bs4 import BeautifulSoup
import csv
import pprint
BASE_URL = 'http://www.pythonscraping.com'
def create_list_from_table(table_tag):
# CSV 파일로 만들기 위해서 2중 리스트 생성
gifts = []
# 헤더에 해당하는 1번째 로우 작성
headers = []
header_tag = table_tag.find('tr')
for th_tag in header_tag.find_all('th'):
headers.append(th_tag.text.strip())
gifts.append(headers)
# 선물 레코드 작성
for tr_tag in table_tag.find_all('tr'):
gift = []
for td_tag in tr_tag.find_all('td'):
if td_tag.text.strip() != '':
# 좌우 공백을 제거하고 텍스트 속에 \n문자를 공백으로 변경
# 최초 5글자만 포함
gift.append(td_tag.text.strip().replace('\n', ' ')[:5])
# 이미지는 저장 안함
elif td_tag.find('img').get('src'):
continue
if not gift:
continue
gifts.append(gift)
# pprint.pprint(gifts)
return gifts
def create_csv_file(lol, filename):
with open(filename, 'w', encoding='utf-8') as file:
writer = csv.writer(file)
for l in lol:
writer.writerow(l)
def main():
res = requests.get(BASE_URL + '/pages/page3.html')
soup = BeautifulSoup(res.text, 'lxml')
# 테이블 태그 확보
table_tag = soup.find(id='giftList')
gifts = create_list_from_table(table_tag)
create_csv_file(gifts, 'gifts.csv')
print('job completed..')
if __name__ == '__main__':
main()