ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 업무 자동화 코딩캠프 #02 Selenium
    업무 자동화 제주도 코딩캠프 2019. 2. 19. 21:14





    #1. Selenium 개요 




    Javascript 를 이용하면 웹 사이트에 HTML 문법을 적용시켜 넣어줄 수 있는데, 

    < script > 태그를 사용하여 작성된다. 이런 동적인 웹 사이트는 보통의 크롤러들이 접근하기 힘들다.



    로그인이 포함되는 경우, 그리고 동적인 웹 페이지의 경우에 Selenium 을 주로 사용한다.





    <body>

    <div id='plus_text'></div>

    <script>

    document.getElementById('plus_text').innerHTML="hello world";   

     // plus_text 라는 id 를 가지고 있는 tag 안에 hello world 를 넣어라

    </script>

    </body>





    웹 브라우저는 JavaScript 코드를 실행 시킨 후 HTML 을 DOM 으로 나타낸다.

    DOM 이란 HTML 을 시각적으로 쉽게 표현하기 위해 만든 객체를 일컫는다. 즉 문서를 구조화 시킨 것이다.


    다시 말해서 웹 브라우저는 HTML 코드를 그대로 가져온 후 JavaScript 를 실행시킨 결과를 보여준다. 크롤러는 HTML 코드 자체를 긁어오기 때문에 편의상 개발자 도구로 분석하지만, 소스 보기 페이지에서 해당 요소가 있는지 확인해야한다.


    소스 보기 페이지에서 확인은 했는데 수집하고자 하는 요소가 없다면 네트워크 탭을 활용하여 서버에서 데이터를 받아오는지 확인하는 작업을 거쳐야한다. 그렇지 않을 경우에는 셀레니움 이라는 라이브러리를 사용하는 것이 좋다.


    DOM 에 접근할 수 있는 강력한 Selenium 을 본격적으로 설치해보자!!








    #2. Selenium 설치 



    1. 셀레니움은 브라우저 드라이버를 필요로 한다.(DOM 에 접근하기 위함)

    크롬 드라이버를 사용하도록 하자!! 

    크롬 드라이버 설치 : http://chromedriver.chromium.org/downloads


    2. selenium 라이브러리를 설치한다.













    #3. 실습 





    내가 운영하고 있는 comsec.tistory.com  을 대상으로 실습해보았다.

    맨 처음 페이지에 있는 글들의 제목을 가져오는 코드 작성을 목표로 하였다.


    script 즉, 동적 웹 페이지를 가장 잘 나타내주는 것이 tistory 인 것 같아서 선택하게 되었다.






    역시나 script 덩어리들이 모여있었다.



    앞서 Crawling 파트에서 잠깐 설명했던

    css selector 를 활용하면 더욱 효과적인 크롤링이 가능하다.










    driver.find_element_by_class_name( )                            // class 명으로 접근

    driver.find_elements_by_css_selector( )                          // Selector 로 접근

    driver.find_element_by_tag_name( )                              // tag 명으로 접근

    driver.find_element_by_name( )                                    // name 명으로 접근

    driver.find_element_by_xpath( )                                    // xpath 로 접근

    driver.find_element_by_id( )                                         // id 명으로 접근





    글의 제목으로 추정되는 텍스트 앞에는 항상 title_post 클래스의 tag 가 있다.

    title_post 클래스의 셀렉터 접근법은 .title_post 이므로 이를 사용해보자!!












    내일은 selenium을 사용하여 특정페이지에 접근해서 입력, 클릭하는 것을 해봐야겠다 


    댓글

Designed by Tistory.