반응형
* 본 포스팅은 한국품질재단 취업지원센터에서 주최하는 혁신성장 청년인재 집중 양성사업(인공지능)에서 학습한 내용을 포스팅합니다.
크롤링(crawling)이란?
- 사이트에 접속해서, 사람이 실제로 사용하는 것처럼 행위등을 수행하여 데이터를 수집하는 과정(방식)
- Selenium 모듈 사용
학습 목표 : 국내 주유 사이트 정보 수집
준비 : 크롬 브라우저, 크롬 드라이버(이때 본인 크롬정보와 동일한 버전의 드라이버 사용), 주피터 노트북
1. Target 설정 : 지역별 싼 주유소 찾기(오피넷)
https://www.opinet.co.kr/user/main/mainView.do
2. 목표 : 지역 시/도, 시/군/구 별로 싼 주유소 찾기 → 원하는 정보 찾기 후 엑셀 다운로드
3. selenium 모듈 설치
!pip install selenium
4. selenium 모듈 사용 및 웹을 띄우는 동안 넉넉한 시간을 주기 위해서 time 모듈 사용
from selenium import webdriver as wd
import time
5. 웹 드라이버 가동 후 원하는 타겟사이트로 접속(접속을 해보니 2번의 요청이 필요)
driver = wd.Chrome( './chromedriver.exe' )
target_site = 'https://www.opinet.co.kr/searRgSelect.do'
driver.get( target_site )
time.sleep( 2 )
driver.get( target_site )
- 파이썬에서는 sleep()안에오는 것은 sec으로 받아들인다.
6. 타깃 사이트에서 시/도 값을 세팅할 후보 값을 추출한다.
#SIDO_NM0라는 id를 갖는 option 값들을 tmp에 저장하는데 이때 빈 데이터가 나오는 것을 막기 위해
value라는 값만 가지는 option만 sidos에 for문을 이용하여 sidos 저장
tmp = driver.find_elements_by_css_selector( '#SIDO_NM0 > option' )
sidos = [ option.get_attribute('value')
for option in tmp
if option.get_attribute('value')]
7. 시/도 부분의 부산광역시를 찾기 위한 코드 select 요소를 찾고, select 값을 해당 sido로 변경
for sido in sidos[1:2]:
sido_sel = driver.find_element_by_id('SIDO_NM0')
sido_sel.send_keys( sido )
8. 5초 대기 후 로드된 시군구 화면에서 value값들을 추출한다.
time.sleep(5)
sggs = driver.find_elements_by_css_selector( '#SIGUNGU_NM0 > option' )
sigungus = [ option.get_attribute('value')
for option in sggs
if option.get_attribute('value')
]
9. value들 중에서 모든 구를 만나면, 값을 세팅한다. 시군구 select 태그를 특정해서, 주어진 시군구로 세팅
5초 대기 후 사이트는 구의 주유소 정보를 다운로드
for sigungu in sigungus:
driver.find_element_by_id('SIGUNGU_NM0').send_keys( sigungu )
time.sleep(5)
# 엑셀 다운로드
driver.find_element_by_id('glopopd_excel').click()
10. 동작 중인 화면
11. 다운로드된 정보
12. 마무리
# 마무리
time.sleep(10)
driver.close()
driver.quit()
- 메모리에 적재되어 있는 프로세스를 정리한다
반응형
'파이썬' 카테고리의 다른 글
[파이썬] 파이썬 기반 웹 프로그래밍(로그인 환경 구현) / MariaDB 사용 (0) | 2021.06.10 |
---|---|
[파이썬] 파이썬(flask)기반 웹 프로그래밍 공부하기 3 (2) | 2021.06.10 |
[파이썬] 파이썬(flask)기반 웹 프로그래밍 공부하기 2 (0) | 2021.06.10 |
[파이썬] 파이썬(flask)기반 웹 프로그래밍 공부하기 1 (2) | 2021.06.09 |
[파이썬] 파이썬으로 pandas 모듈 공부하기 (2) | 2021.06.02 |
댓글