인문대생의 데이터 직군 취업로그 30

류지윤·2023년 7월 12일
0
post-thumbnail

< 입력 창에 글자 넣기 코드 >

some_tag = driver.find_element_by_id(‘’‘gsc-i-idl’‘’)
some_tag.send_keys(‘data science’)

< 버튼 클릭하는 코드 실행 >

xpath = ‘’‘//*[@id=“____gcse_0”]/div/form/table/tbody/tr/td[2]/button’‘’
some_tag = driver.find_element_by_xpath(xpath).click()

< 현재 화면 html 코드 가져오기 >

from bs4 import BeautifulSoup

req = driver.page_source
soup = BeautifulSoup(req, ‘html.parser’)
#광고를 제외한 검색 결과가 나타나는 태그를 찾을 수 있음
#검색결과 하나하나를 의미하는 태그를 찾을 수 있다.
result = soup.find_all(‘div’, ‘gsc-webResult gsc-result’)
result[0]

으로 접근 가능하다.

006-009. selenium으로 데이터 얻어오기

  • https://www.opinet.co.kr/user/main/mainView.do
  • 위 링크는 대한민국 주유 가격을 알아보는 사이트
  • 싼 주유소 찾기에서 지역별 선택
  • 사이트 구조 확인
  • 목표 데이터는 브랜드, 가격, 셀프 주유 여부, 위치
  • 지역에서 광역시도와 시구 정보를 입력하면 지도가 바뀌고 주유소 정보가 로딩된다.
  • 셀프여부를 알려주고 휘발유 가격도 있지만 상표와 주소 정보를 다루기엔 까다로움
  • BeautifulSoup 보다는 selenium으로 접근하는 것이 좋아보인다.

< 주유 가격 확인 >

from selenium import webdriver
driver = webdriver.Chrome(“../driver/chromedriver”)
driver.get(“http://www.opinet.co.kr”)
# 페이지 전환이 되지 않을 경우
#driver.get(“http://www.opinet.co.kr/searRgSelect.do”)
#로 한번 더 실행
  • 지역 시/도/광역시 id는 SIDO_NMO, dirver에서 해당 id를 sido_list_raw 변수로 저장
  • sido_list_raw 변수에 리스트 결과값을 저장한 sido_names, sido_names의 값을 send_keys를 이용해서 내보내면 된다.
  • 두 번째 리스트인 시/군/구 항목도 동일하게 id, option을 확인 (id=“SIGUNGU_NM”)
    < option 에서 리스트 안의 변수값들 저장 >
gu_list_raw = driver.find_element_by_id(“SIGUNGU_NMO”)
gu_list = gu_list_raw.find_elements_by_tag_name(“option”)

gu_names = [option.get_attribute(“value”) for option in gu_list]
gu_names.remove(“”)
gu_names

< send_keys(gu_names[num])로 해당 값을 변경하기 >

element_get_excel = driver.find_element_by_id(“glopopd_excel”).click()

< 반복문으로 모든 구의 데이터 엑셀 파일로 저장 >

import time
fro tqdm import tqdm_notebook

for gu in tqdm_notebook(gu_names):
	element = driver.find_element_by_id(“SIGUNGU_NMO”)
	element.send_keys(gu)
	time.sleep(2)

	element_get_excel = driver.find_element_by_id(“glopopd_excel”).click()
	time.sleep(1)
  • download 폴더에 25개의 엑셀 파일이 생겼다면 ds_study – data 폴더에 넣기
  • 모든 작업이 끝나면 반드시 driver.close() 실행하기

< 파일 목록 한번에 불러오기 >

import pandas as pd
from glob import glob

glop(“../data/지역_*.xls”)

< 파일명 저장 >

stations_files = glob(“../data/지역_*.xls”)
stations_files

0개의 댓글