파이썬에서 크룰링은 정적과 동적크룰링으로 나눠집니다. 그중 동적 크룰링은 자바스크립트로 콘텐츠가 HTML(홈페이지)에 나타나지 않는 페이지를 대상으로 합니다.
이를 위해서는 다음과 같은 환경설정이 필요로 합니다.
1. 파이썬 동적크룰링 환경설정하기
우선 필요한 라이브러리를 설치합니다.(설명은 코랩(Colab) 환경을 기준)
필요한 라이브러리는 request, BeautifulSoup, Selenium이 필요합니다. 특히, 동적크룰링에서는 selenium을 통해 크롬브라우즈를 활용할 수 있습니다.
!pip install selenium # 셀레늄 라이브러리 설치
!apt-get upgrade # apt 설치 명령 업그레이드
!apt install chromium-chromedriver # 크롬 가상 드라이브 설치(코랩)
2. 파이썬 라이브러리 설정하기
위에서 말씀드린 여러 라이브러리를 추가하여 설정합니다.
from selenium import webdriver
from bs4 import BeautifulSoup as bs
import urllib.request # URL을 불러 올때 사용
import datetime
import time
import pandas as pd
#크롬 드라이브 속성
from selenium import webdriver
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless') #내부 창을 띄울 수 없으므로 설정
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
wd = webdriver.Chrome('chromedriver', chrome_options=chrome_options)
#('c:/chromdriver.exe')
3. 메인로직부분- 메인함수와 URL에서 콘텐츠를 가져오는 부분
메인 로직은 크게 메인함수(코드 0)와 크룰링할 대상 URL을 짜르는(파씽;코드 1) 부분으로 나눠집니다.
#코드 1 : 파싱함수
def CB_store(result):
for i in range(1, 5):
wd.get(CB_store_url)
# html > 파씽.....
try:
wd.execute_script("storePop2(%d)"%i)
time.sleep(1)
html = wd.page_source
# print(html)
soupCB = bs(html, 'html.parser')
store_name = soupCB.select('div.store_txt > h2') # 공백처리 필요
print(store_name)
store_t_name = store_name[0].string
# print(store_name) # 지점명 확인....
store_info = soupCB.select('div.store_txt > table.store_table > tbody > tr > td') # 모든 정보 확인
# print(store_info)
store_address = store_info[2].text # "주소"
store_tel = store_info[3].string # 전화번호... string
# print(store_tel)
result.append([store_t_name]+[store_address]+[store_tel])
except:
continue
# result.append( )
return
# 코드 0 : 메인함수
# - 파싱함수호출 + 엑셀로 저장
def main():
result =[] # 메모리
CB_store(result)
# 엑셀 저장
CB_csv =pd.DataFrame(result, columns=('매장명', '주소', '전화번호'))
CB_csv.to_csv("커피빈.csv", encoding='utf8', mode='w', index=True)
if __name__ =='__main__':
main()
'교육 > 파이썬빅데이터분석교육' 카테고리의 다른 글
부동산 빅데이터 분석1_부동산 빅데이터 시세 파악에 유용한 사이트 (0) | 2022.08.01 |
---|---|
[파이썬통계분석]타이타닉호 침몰의 비밀, 1등석 고객의 생존가능성은? (0) | 2022.07.11 |
[파이썬]선형회귀분석 t-검증을 이용한 와인 품질 등급 예측하기 (0) | 2022.07.04 |
[파이썬]정적크룰링교안 (0) | 2022.06.16 |
[파이썬 실습] 공공데이터 API 연동하여 출입국 정보 가져오기 (0) | 2022.06.08 |