본문 바로가기

파이썬(python3)/기타

파이썬 크롤링 005 - 쇼핑몰 상품정보 (with selenium) / 데이터수집 자동화

  앞선 포스팅에서 파이썬 코드를 통한 크롤링 기본적인 내용을 한 번 정리해봤습니다. 너무너무너무 단순했죠? 이번에는 조금 다른 방법으로 크롤링을 해보려고 합니다. 바로 Selenium 라이브러리를 통해서 크롤링 하는 것인데요. 아래서 조금 더 자세하게 설명해드리겠습니다. 크롤링에 대한 기본적인 내용을 보시려면 아래 링크로 걸어드리는 4개 포스팅을 보시면 조금 감을 잡을 수 있지 않을까? 라고 생각합니다.

 

2020/04/19 - 파이썬 크롤링 001 - 구성요소, 구현방법

2020/04/26 - 파이썬 크롤링 002 - 크롤러 구현

2020/05/03 - 파이썬 크롤링 003 - 파서 구현

2020/05/05 - 파이썬 크롤링 004 - 파싱 결과 저장



  기존에 파이썬 requests 라이브러리를 활용해서 간단하게 크롤링 할 수 있었죠. 하지만 로그인하고 특정 페이지로 이동해서 어떤 버튼을 누른 결과를 크롤링하기에는 requests는 좀 복잡해집니다. 그래서 저는 복잡한 내용은 주로 selenium을 활용해서 크롤링 하고 있습니다. 아래 사이트에서 selenium에 대한 내용을 보실 수 있습니다. 간단하게는 코드로 웹브라우저를 조작할 수 있는 라이브러리로 이해하실 수 있습니다.
www.selenium.dev/

 

SeleniumHQ Browser Automation

If you want to create robust, browser-based regression automation suites and tests, scale and distribute scripts across many environments, then you want to use Selenium WebDriver, a collection of language specific bindings to drive a browser - the way it i

www.selenium.dev


  어떤 예제가 좋을까 고민해봤는데요. 요즘 해외에서 물건 사다가 다시 국내 오픈마켓에 올리시는 분들 많죠? 그런 분들에게 필요한게 상품정보를 파싱해서 자동으로 올리는 것이더라고요. 여기서는 상품정보를 파싱하는 부분을 해보도록 하겠습니다. 예제 사이트는 티몰로 해볼게요. (혹시 원하는 예제가 있으시면 댓글로 달아주세요. 다음 번 예제로 사용할게요.)

아마도 아래와 같은 방식으로 타오바오에서 상품을 검색하실거에요.


  (0) 웹브라우저를 실행한다.
  (1) 사이트에 접속한다.

  (2) 검색어를 입력한다.
  (3) 검색 버튼을 누른다. (혹은 엔터키)
  (4) 상품 리스트에 대한 정보를 크롤링, 파싱한다.

사람이 하는 것처럼 selenium을 활용해서 똑같은 일을 하면됩니다. 일단 코드부터 확인해볼까요?

import requests
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

crawling_target_urls = [
    'https://www.tmall.com/',
]

for idx, url in enumerate(crawling_target_urls):
    options = webdriver.ChromeOptions()
    # options.add_argument('headless')
    # options.add_argument("disable-gpu")

    driver = webdriver.Chrome('./chromedriver', chrome_options=options)
    driver.get(url)

    driver.find_element_by_xpath('//*[@id="mq"]').send_keys('toys')
    driver.find_element_by_xpath('//*[@id="mallSearch"]/form/fieldset/div/button').click() #검색어 버튼 클릭

    print (driver.page_source)

위 코드를 실행하기 위해서는 아래와 같은 명령어로 selenium을 설치하셔야 합니다.

pip install selenium

이전 포스팅을 보셨던 분들이라면 비슷하다는 느낌을 받으셨을 것 같아요.

크게 다르지 않습니다. requests를 사용하던 것에서 selenium을 사용하는 것으로 살짝 바꾼것이니까요.

 

아래 코드를 통해서   (0) 웹브라우저를 실행한다. (1) 사이트에 접속한다. 를 수행합니다.

    driver = webdriver.Chrome('./chromedriver', chrome_options=options)
    driver.get(url)

아래 코드를 통해서 검색창을 클릭해서 toys라고 입력하고 검색 버튼을 클릭합니다.

//*~~~라고 되어 있는 부분은 도대체 어떻게 쓰는거야? 라고 물으신다면 아래 포스팅을 추천합니다.

2019/08/24 - selenium python - find_element_by_xpath

    driver.find_element_by_xpath('//*[@id="mq"]').send_keys('toys')
    driver.find_element_by_xpath('//*[@id="mallSearch"]/form/fieldset/div/button').click() #검색어 버튼 클릭

위 코드를 실행하면 아래와 같은 이미지를 만나실 수 있고 콘솔창에는 해당 page의 소스가 쭉 나오는 것을 보실 수 있죠.

 

 

  이 코드를 응용하면 toys의 여러 페이지에 해당하는 정보를 크롤링하거나 다른 검색어 결과를 크롤링하는데 사용하실 수 있겠죠? 해당 코드를 매일 특정한 시간에 반복적으로 돌리면 TMALL에 존재하는 상품들의 가격 변화나 상품 추가, 등록 여부 등을 파악하실 수도 있을 것이고요. 사용 방법은 정말 많을 것으로 생각합니다.

 

  다음 포스팅에서는 이번 포스팅에서 검색한 결과를 파싱까지 하는 코드로 업데이트 해볼게요. 바빠서 자주 못올리지만 ! 그래도 혹시 관심 있으시거나 궁금한 점 있으면 댓글로 남겨주세요 !

 

 

http://cchart.xyz/

 

cchart.xyz / 데이터 수집,가공 서비스

반복적인 웹 데이터 수집, 가공서비스

cchart.xyz