파이썬 데이터 분석 질문입니다.
-
게시물 수정 , 삭제는 로그인 필요
제가 봤을 때는 문제가 없는데
왜인지 맨밑 # (5) 데이터 프레임 추가
if len(cap_detail_df)==0:
cap_detail_df = temp_df
else:
cap_detail_df = cap_detail_df.append(temp_df, ignore_index=True)
이 부분을 포함하면 py:76: FutureWarning: The frame.append method is deprecated. and will be removed from pandas in a future version. Use pandas.concat instead가 뜨고 response쪽에서 오류가 난다네요... ㅜㅠ
제발 도와주세요
----------------코드 시작----------
from bs4 import BeautifulSoup
import requests
import pandas as pd
# http://www.neweracapkorea.com/shop/shopbrand.html?xcode=031&mcode=002&type=Y&gf_ref=Yz1vU0FlS3M=
base_url="http://www.neweracapkorea.com"
cap_total_url="/shop/shopbrand.html?xcode=031&mcode=002&type=Y&gf_ref=Yz1vU0FlS3M="
#get html
response = requests.get(base_url+cap_total_url)
#BeautifulSoup를 사용하여 데이터 파싱
soup = BeautifulSoup(response.content, "lxml")
soup
#첫번째 항목만 출력해보자
cap_info = soup.findAll('div', {'class': 'tb-center'})
cap_info[0]
#url
cap_url = cap_info[0].find('a').get('href')
print(cap_url)
#상품명
name = cap_info[0].find('li', {'class': 'dsc'}).text
print(name)
#가격
price = cap_info[0].find('li', {'class': 'price'}).text
print(price)
#위의 방법을 사용하여, cap_info에 담긴 모든 아이템에 대해 파싱을 하도록 반복문을 구성
name_list = []
price_list = []
url_list = []
for cap in cap_info:
name = cap.find('li', {'class': 'dsc'}).text
price = cap.find('li', {'class': 'price'}).text
url = cap.find('a').get('href')
print("이름: {}, 가격: {}".format(name, price))
name_list.append(name)
price_list.append(price)
url_list.append(url)
#파싱한 정보를 담은 각각의 리스트를 사용하여 데이터 프레임을 생성하라
df = pd.DataFrame({"이름": name_list, "가격": price_list, "url": url_list})
df.head()
#데이터 프레임에 저장한 상품 상세페이지의 URL을 참조하여, 각각의 상품정보의 상세정보를 포함하는 데이터 프레임을 생성하라
cap_detail_df = pd.DataFrame()
for i in range(len(df)):
# (1) df에 저장된 url 읽어오기
url = df['url'][i]
response = requests.get(base_url + url)
soup = BeautifulSoup(response.content, "lxml")
# (2) 상세페이지의 정보 파싱
cap_name = soup.find('h3', {'class':'tit-prd'}).text.strip()
cap_info = soup.find('tbody')
features = cap_info.findAll('div', {'class': 'tb-left'})
fic_list = []
for f in features:
fic_list.append(f.text.strip())
# (3) 파싱한 정보르 사용하여 딕셔너리 생성
cap_dict = {'제품명': cap_name}
if len(fic_list) % 2 !=0:
fic_list = fic_list[1:]
for i in range(len(fic_list)):
if i % 2 == 0:
if fic_list[i] == '':
cap_dict.update({fic_list[i]: fic_list[i+1]})
# (4) 생성한 딕셔너리로 데이터프레임 생성
temp_df = pd.DataFrame(data=cap_dict, index = [0])
# (5) 데이터 프레임 추가
if len(cap_detail_df)==0:
cap_detail_df = temp_df
else:
cap_detail_df = cap_detail_df.append(temp_df, ignore_index=True)
cap_detail_df
#파이썬 데이터 분석 #파이썬 데이터프레임 #파이썬 데이터 시각화 #파이썬 데이터 타입 #파이썬 데이터프레임 만들기 #파이썬 데이터 분석 예제 #파이썬 데이터 타입 확인 #파이썬 데이터 전처리 예제 #파이썬 데이터프레임 합치기 #파이썬 데이터베이스