2020/03/21 - [Daily Life/Review] - 분기별 역대 라면 랭킹 ~! 판매순위 2011-2019
파이썬을 이용한 스크리팽(Scraping) 크롤링 코드입니다.
라면 주제로 찾다보니여기 까지 왔네요. 차트 만드는 코드는 추후에 올리도록 하겠습니다.
갑자기 날짜페이지 중에 데이터가 없는게 있어서 예외처리하는데 찾느냐 고생했네요.
2020/03/21 - [Computer] - 'NoneType' object has no attribute 'find_all'
front_url =" https://www.atfis.or.kr/sales/M002020000/view.do?searchItem=CD00000573&searchDivision=CD00000600&searchCompany=2&searchYear="
table(front_url)
result
from bs4 import BeautifulSoup
import requests
import csv
from datetime import datetime
import pandas
import pandas as pd
import itertools
dt_index = [2011,2012,2013,2014,2015,2016,2017,2018,2019]
dt_list=[1,2,3,4]
result=[]
def table(front_url) :
for j in dt_index :
for i in dt_list :
try :
url = front_url+ str(j) +"&searchQuarter=" + str(i) + "&selectAccessHistoryIdx="
print(url)
con = requests.get(url)
soup = BeautifulSoup(con.content, 'lxml')
infoTable = soup.find("table",{"class":"table_view2"}) # <table class="table_develop3">을 찾음
# infolist.append(i)
infoPrint =[] # 데이터를 저장할 리스트 생성
for a in infoTable.find_all("tr"):
infolist = []
infolist.append(j)
infolist.append(i)
for b in a.find_all("td"):
info = b.get_text().replace("\r\n", "").replace("\t","").replace(" ","")
infolist.append(info)
#print(infolist)
infoPrint.append(infolist)
del(infoPrint[0:2])
print(infoPrint)
result.append(infoPrint)
except AttributeError as e:
print(e)
pass
# print(result)
result1=list(itertools.chain(*result)) #차원 변경
data = pd.DataFrame(result1)
data.columns = ['year', 'quater','maker', 'name', 'total','백화점','할인점','체인슈퍼','편의점','독립슈퍼','일반식품']
data=data[['maker','name', 'total','year', 'quater','백화점','할인점','체인슈퍼','편의점','독립슈퍼','일반식품']]
data=data.set_index('maker',inplace=False)
data=data.drop(index=['Etc', 'Total'])
data.to_csv("ramen.csv", encoding='cp949')
해당 코드이용해서 CSV 파일을 만들고 차트나 그래프를 사용하시면 됩니다.
전 차트 애니메이션을 만들어봤어요.
'Computer > Python' 카테고리의 다른 글
어몽어스 캐릭터를 파이썬으로 그려보자 (0) | 2020.10.14 |
---|---|
크롤링(스크래핑) 기초_part1 (0) | 2020.03.23 |
[Python] 코로나바이러스 시각화 지도 히스토리 (0) | 2020.03.16 |
[Python] 코로나19 바이러스 지도에 히스토리 표현하기 (0) | 2020.03.11 |
[Python][Listt] 2차원 리스트를 1차원 리스트로 (0) | 2020.02.13 |