스크래핑 할 때 나름대로의 모범 사례

이것은 Python Advent Calendar 2019의 13 일째 기사입니다.

파이썬 요소가 얇아졌지만 스크래핑 맥락에서 파이썬이 잘 나올 것 같아서 용서하십시오.

개요


  • (자신 나름) 스크래핑 시스템을 구축하는 방법에 대한 모범 사례가 조금 결정되었습니다
  • 공개하고 여러가지 의견을 들어보고 싶다
  • 어쩌면 웹 개발자가 스크래핑 할 때 알고 있으면 조금 행복해질 수 있습니다
  • 누군가의 도움이 되면 좋겠다(희망)

  • 구축 방법의 중요한 점



    중요한 점은 다음 두 점
  • DOM에 액세스하여 데이터를 검색하는 스크래핑 처리 부분은 JavaScript를 사용합니다 (특히 웹 개발자는).
  • Chrome, ChromeDrive, Selenium 등의 스크래핑 환경에는 Docker 등을 사용합니다.

    구성도는 다음과 같은 느낌입니다. (OS라든지 쓰지 않았지만 대체로 이미지)
    Python 부분은 선택적으로 Selenium을 두드리면 무엇이든 좋다. (아래 Python은 Selenium을 사용하는 물건으로 읽어보십시오)



    JavaScript를 사용하여 스크래핑 처리



    스크레핑 관계의 시스템을 만들 때 귀찮은 것은 라이브러리 선정이기도 합니다.

    개인적으로 Python은 좋아하기 때문에 옛날에는 PyQuery라든지 BeautifulSoup를 만졌습니다.

    그러나 상당히 귀찮습니다.

    어떤 식으로 셀렉터를 쓰면 좋은지 구그라고 실행해, 실수는, 수정해,...같은 느낌이 듭니다.

    최종 결론은 "Chrome Developer Tools에서 JS의 선택기를 작성하고 원하는 정보를 얻는 JS를 작성한 다음 Selenium에서 실행하도록합니다."(이것이 제일 편하다고 생각합니다.)

    (아마도 jQuery를 만진 적이 있다면 가장 쉽습니다)

    다음과 같은 감자.
    res = driver.execute_script(driver, """
        return (() => {
            // 以下をChrome Developmer Toolsでいろいろ試して作成する
            let tmp = [];
            $(".sample-area li a").each( (idx, element) => tmp.push($(element).attr("href")) )
            return tmp
        })()
    """)
    

    Chrome Developmer Tools는 다음과 같은 녀석. F12라든지 누르면 됩니다. (Console 탭을 열면 JS를 페이지 내에서 실행할 수 있습니다)
    간단한 이야기, 클래스 정보라든지 둥근 복사해서 $(".class").text()


    이것을 라이브러리의 특유의 함수로 여러가지 하려고 하면 귀찮은 것은 어쩐지 알 수 있다고 생각합니다.

    또한 스크립트가 JS이므로 스크래핑 라이브러리에 의존하지 않고 이식도 쉽습니다.

    Chrome, ChromeDrive, Selenium 등의 스크래핑 환경에는 Docker 등을 사용



    ChromeDriver의 설정이나 Chrome과의 버전의 궁합이나 여러가지 하는 것은 인생의 낭비입니다.
    Docker나 환경을 완전히 이루는 것을 사용합시다.

    단순한 HTML, CSS만으로 구성되어 있는 사이트라면 curl (단순한 웹 사이트라면 ← 여기 중요)
    서버 측에서 렌더링 되더라도 내부 JS에서 비교적 뭔가 고리 고리 놀고있는 사이트는 많습니다.

    Python+Chrome+ChromeDrive+Selenium의 구성 샘플을 만들어 보았으므로 스타를 붙이면 기뻐합니다. ↓
    htps : // 기주 b. 코 m / 레 d 쇼가 / py 텐 쵸 니 m 콘 r

    구현 흐름


  • 스크레핑으로 취득하고 싶은 데이터, 장소를 명확하게 한다.
  • Chrome Developer Tools에서 가져오려는 데이터를 검색할 수 있는 스크립트를 만듭니다.
  • Selenium으로 만든 스크립트를 움직여 데이터를 끓여 굽습니다.



  • 마사카 리다 니가로> 🐈💨💨 🔪💨

    좋은 웹페이지 즐겨찾기