본문 바로가기
빅데이터 분석

ch06 파이썬 크롤링

by udeserveit1 2024. 8. 26.

정적 웹 페이지 크롤링

• API를 제공하지 않는 웹 페이지를 크롤링할 수 있다.

BeautifulSoup 라이브러리정적 웹 페이지를 크롤링할 수 있다.

Selenium 라이브러리동적 웹 페이지를 크롤링할 수 있다.

conda 환경에서 파이참 실행

 

가상환경 들어가기

실행

 

근데 pandas 없음 -> 설치

1-58페이지까지 받을 수 있다

\

아래에 csv 파일이 만들어짐

 

 

 

 

자세히 보기 마우스만 올리면 자바스크립트 storeLocal2() 함수 확인

 

 

from bs4 import BeautifulSoup
import urllib.request
import pandas as pd
import datetime

from selenium import webdriver
import time

#[CODE 1]
def CoffeeBean_store(result):
    CoffeeBean_URL = "https://www.coffeebeankorea.com/store/store.asp"
    wd = webdriver.Chrome() #교재 코드 수정
             
    for i in range(1, 389):  #마지막 매장번호(최근 신규 매장번호) 까지 반복
        wd.get(CoffeeBean_URL)
        time.sleep(1)  #웹페이지 연결할 동안 1초 대기
        try:
            wd.execute_script("storePop2(%d)" %i)
            time.sleep(1) #스크립트 실행 할 동안 1초 대기
            html = wd.page_source
            soupCB = BeautifulSoup(html, 'html.parser')
            store_name_h2 = soupCB.select("div.store_txt > h2")
            store_name = store_name_h2[0].string
            print(store_name)  #매장 이름 출력하기
            store_info = soupCB.select("div.store_txt > table.store_table > tbody > tr > td")
            store_address_list = list(store_info[2])
            store_address = store_address_list[0]
            store_phone = store_info[3].string
            result.append([store_name]+[store_address]+[store_phone])
        except:
            continue 
    return

#[CODE 0]
def main():
    result = []
    print('CoffeeBean store crawling >>>>>>>>>>>>>>>>>>>>>>>>>>')
    CoffeeBean_store(result)  #[CODE 1]
    
    CB_tbl = pd.DataFrame(result, columns=('store', 'address','phone'))
    CB_tbl.to_csv('./6장_data/CoffeeBean.csv', encoding='cp949', mode='w', index=True)

if __name__ == '__main__':
     main()