정적 웹페이지 크롤링

  • install beautifulsoup
pip install beautifulsoup4
User-agent: *

Disallow: /membership

Disallow: /myHollys
  • HTML 코드 확인(F12) > tbody

2023-08-14_17-52-staticwebpage

<tr class=""> ~ </tr> # 모든 매장 정보
td[0] # 지역
td[1] # 이름
td[2] # 영업여부
td[3] # 주소
td[4] # 첨부 이미지
td[5] # 전화번호
  • page number - URL 확인
https://www.hollys.co.kr/store/korea/korStore2.do?pageNo=1&sido=&gugun=&store= # 1 page
https://www.hollys.co.kr/store/korea/korStore2.do?pageNo=2&sido=&gugun=&store= # 2 page
https://www.hollys.co.kr/store/korea/korStore2.do?pageNo=3&sido=&gugun=&store= # 3 page
# until 52 page
  • 실습 예제
from bs4 import BeautifulSoup
import urllib.request
import pandas as pd
import datetime

# [CODE 1]
def hollys_store(result):
    for page in range(1, 59):
        Hollys_url = 'https://www.hollys.co.kr/store/korea/korStore2.do?pageNo=%d&sido=&gugun=&store=' %page
        print(Hollys_url)
        html = urllib.request.urlopen(Hollys_url)
        soupHollys = BeautifulSoup(html, 'html.parser')
        tag_tbody = soupHollys.find('tbody')
        for store in tag_tbody.find_all('tr'):
            if len(store) <= 3:
                break
            store_td = store.find_all('td')
            store_name = store_td[1].string
            store_sido = store_td[0].string
            store_address = store_td[3].string
            store_phone = store_td[5].string
            result.append([store_name]+[store_sido]+[store_address]+[store_phone])
    return

# [CODE 0]
def main():
    result = []
    print('Hollys store crawling >>>>>>>>>>>>')
    hollys_store(result) # [CODE 1]
    hollys_tbl = pd.DataFrame(result, columns = ('store', 'sido-gu', 'address', 'phone'))
    hollys_tbl.to_csv('./hollys1.csv', encoding = 'cp949', mode = 'w', index = True)
    del result[:]

if __name__ == '__main__':
    main()

Reference

  • 데이터 과학 기반의 파이썬 빅데이터 분석