【Selenium】 첫 스크래핑

스크래핑에 관한 주의사항



주의 사항은, 이하를 참고로 했습니다.
미리 읽어 둡시다!

웹 스크래핑 주의사항 목록 - Qiita
웹 스크래핑 법률 주위의 이야기를 하자! - Qiita

Selenium의 전체 이미지



아래를 참고로 살펴 보겠습니다.
[Selenium] -> [ChromeDriver] -> [Google Chrome]


Components of a Grid :: Documentation for Selenium 보다 인용

환경 구축



가상 환경


virtualenv

설치


pip install selenium

크롬 버전 확인


/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --version

바이너리 형식으로 다운로드



Downloads - ChromeDriver - WebDriver for Chrome

어디에서 사용하는지



아래와 같은 형태로 사용하게 됩니다.
driver = Chrome('path', options=options)
driver.get('url')

명령줄에서만 웹 브라우저 버전 확인 - Qiita

그럼 실장이다!



스크래핑할 때 생각



사전에 다음 두 가지를 파악해 둡니다.
  • 어떤 출력이 되는지 확인
  • DOM 구조 이해

  • 크롤러 만드는 법 - Basic 편 - Qiita

    상세


    import csv
    import pandas as pd
    from selenium.webdriver import Chrome, ChromeOptions
    from selenium.webdriver.common.by import By
    
    
    options = ChromeOptions()
    options.add_argument('--headless')
    
    print('Connectiong to Remote Browser...')
    driver = Chrome('chromedriverがあるパス', options=options)
    
    # 検索結果
    driver.get('対象のurl')
    
    # 一覧ページ取得
    detail_links = driver.find_elements(By.XPATH,'//div[@class="productImg-wrap"]')
    print(len(detail_links))
    
    # 詳細ページリスト化
    detail_results = []
    for element in detail_links:
        aTag    = element.find_element_by_tag_name("a")
        url     = aTag.get_attribute("href")
        detail_results.append(url)
    
    # 空のDataFrameを用意
    cols = ['brand_name', 'url']
    df = pd.DataFrame(index=[], columns=cols)
    
    # 結果をリスト化
    final_results = []
    for url in detail_results:
        driver.get(url)
        article_links = driver.find_elements(By.XPATH,'//div[@class="attributes-list"]')
        print(article_links)
    
        # データフレームを作成
        record = pd.Series([article_links[0].text, url], index=df.columns)
        df = df.append(record, ignore_index=True)
        df.to_csv("output.csv")
    
    # ブラウザを終了
    driver.quit()
    
    driver.find_elements(By.XPATH,'//div[@class="attributes-list"]')이것이, 클래스명으로, 요소를 취득하는 구현이 됩니다.

    파이썬에서 Selenium을 사용하여 스크래핑 (기초) - Qiita
    Selenium API (역방향)
    2. Getting Started — Selenium Python Bindings 2 documentation

    체인



    다른 구현은 아래에서 확인할 수 있습니다.
    7. WebDriver API — Selenium Python Bindings 2 documentation

    기타 참고 기사



    Python + Selenium에서 Chrome의 자동 조작을 한 대로 - Qiita
    Chrome과 Python의 chromedriver-binary 버전을 맞추고 싶습니다. - Qiita

    다음은?



    E2E 테스트에서 사용할 수 있도록 해 가고 싶네요.

    좋은 웹페이지 즐겨찾기