Selenium

XTHK·2024년 12월 7일

Anaysis

목록 보기
11/23
from selenium import webdriver
from selenium.webdriver.common.by import By

# 이마트 ssg 홈페이지 접근

driver = webdriver.Chrome()
driver.get('http://emart.ssg.com/')

# 메뉴 - 우유/유제품 코너
driver.find_element(By.XPATH, '//*[@id="skip_gnb"]/div/div[1]/button/span[1]').click()
# 우유/유제품 클릭
driver.find_element(By.XPATH, '//*[@id="skip_gnb"]/div/div[1]/div/div/ul/li[7]/a').click()

# 데이터 추출하기
## 상품명
product_name = driver.find_element(By.XPATH, '//*[@id="ty_thmb_view"]/ul/li[1]/div/a/div[1]').text

## 상품가격
product_price = driver.find_element(By.XPATH, '//*[@id="ty_thmb_view"]/ul/li[1]/div/a/div[2]/div[1]').text
product_price


# 위 코드 활용
# 한 페이지 내 모든 상품의 상품명과 가격 추출
product_name_list = []
product_price_list = []

# 한 페이지 내 제품을 순차적으로 가져옴

for i in range(1,85) :
    try :
        xpath_name = '//*[@id="ty_thmb_view"]/ul/li[' + str(i) + ']/div/a/div[1]'
        product_name = driver.find_element(By.XPATH, xpath_name).text
        
        xpath_price = '//*[@id="ty_thmb_view"]/ul/li['+str(i)+']/div/a/div[2]/div[1]'
        product_price = driver.find_element(By.XPATH, xpath_price).text

        product_name_list.append(product_name)
        product_price_list.append(product_price)

    except :
        pass

print('done')

# 데이터 프레임으로 변환
import pandas as pd
pd.DataFrame({'상품명' : product_name_list, '상품가격' : product_price_list})



# 이미지 수집
image_xpath = '//*[@id="ty_thmb_view"]/ul/li[1]/div/div[1]/a/div/img'
img = driver.find_element(By.XPATH, image_xpath)
img.get_attribute('src')

# 이미지 저장 라이브러리
import urllib.request

img1 = img.get_attribute('src')
urllib.request.urlretrieve(img1, 'emart/image001.jpg')

# for문을 이용하여 페이지 여러 장 이미지 추출
for i in range(1, 84) :
    img_xpath = '//*[@id="ty_thmb_view"]/ul/li['+str(i)+']/div/div[1]/a/div/img'
    img = driver.find_element(By.XPATH, img_xpath)
    img_src = img.get_attribute('src')
    urllib.request.urlretrieve(img_src, 'emart/image00'+str(i)+'.jpg')

# headless
# : 페이지를 띄워놓지 않고도 작동하도록

options = webdriver.ChromeOptions()
options.add_argument('headless') # 화면 없이 크롤링

driver = webdriver.Chrome(options = options)
driver.get('http://naver.com')
  • XPATH 경로를 복사 하는 기준:
    "해당 코드 라인 내 라우팅되는 주소값이 있는가"
    • 이 값이 있어야 XPATH 경로를 인식하고 해당 영역을 스크린 내에서 click 했을 때 올바르게 페이지 이동 가능

# 마우스 오버
from selenium.webdriver.common.action_chains import ActionChains

# 메뉴 요소 마우스오버
menu = driver.find_element(By.XPATH, '//*[@id="skip_gnb"]/div/div[1]/button/span[1]')
action = menu.ActionChains(driver)
action.move_to_element(menu).perform()
profile
Analyse the world

0개의 댓글