본문 바로가기
Python/Python_Crawling

특정 사이트 크롤링 및 데이터프레임 생성

by Mr.DonyStark 2024. 2. 13.

□ 아래와 같은 형식으로 데이터를 표시하는 웹사이트 크롤링 후 크롤링한 데이터를 데이터프레임으로 저장해보자

#라이브러리 호출
from bs4 import BeautifulSoup
from urllib.request import Request, urlopen
import pandas as pd
#사이트
url_base = 'http://www.chicagomag.com'
url_sub = '/Chicago-Magazine/November-2012/Best-Sandwiches-Chicago/'
html = urlopen(url)
soup = BeautifulSoup(html, "html.parser")

#크롤링 타겟태그 선택
target_area = soup.select('div.sammy')

#크롤링 데이터를 담을 리스트 생성
num_list = list()
menu_list = list()
cafe_list = list()
url_list = list()

#select으로 추출하면 값이 리스트이므로 이를 반복문으로 특정 데이터 추출
for index, v in enumerate(target_area):
    index +=1
    num = index
    #a태크 추출 및 split & 인덱스번호 활용하여 저장 
    cafe = v.select_one('a').text.split('\n')[1]
	#b태크 b태그 하위 텍스트 저장
    menu = v.select_one('b').text
    #a태그의 href 속성 추출
    url_link = 'https://www.chicagomag.com/Chicago-Magazine' + v.select_one('a')['href']
    #위에서 생성한 리스트별 데이터 저장
    num_list.append(num)
    menu_list.append(menu)
    cafe_list.append(cafe)
    url_list.append(url_link)

#데이터 프레임 생성 : 딕셔너리 형태('컬럼' : '데이터값')로 데이터프레임 생성
good_food = pd.DataFrame({'Rank': num_list, 'Menu': menu_list, 'Cafe': cafe_list, 'URL': url_list})
good_food.head()