[Python] Clicknium을 통한 Facebook Scraper

페이스북 스크레이퍼



Clicknium을 사용하여 Facebook 게시물을 스크랩하는 샘플입니다.

준비


  • 파이썬 3.7+
  • 윈도우 7 SP1+
  • Chrome 브라우저
  • VS 코드

  • Clicknium
  • Clicknium Chrome extension

  • Facebook 게시물 스크랩



    Facebook 회사 페이지의 게시물을 예로 스크랩하겠습니다.

    파이썬 프로젝트 생성



    프로젝트 폴더 아래에 Python 파일(예: sample.py )을 만듭니다.
    VS Code Explorer 아래에 Locators를 표시합니다.


    캡처 로케이터



    로케이터는 UI 요소를 대상으로 하는 도구입니다.
  • Facebook 회사 페이지에 로그인하고 엽니다: https://www.facebook.com/facebook
  • VS Code에서 Capture 버튼을 클릭합니다.


  • 클릭 similar elements
    이 기능을 사용하면 동일한 구조를 가진 페이지의 모든 게시물을 가져올 수 있습니다.


  • Ctrl + Click를 사용하여 Facebook의 첫 번째 게시물 단어 캡처:


  • 같은 방법으로 두 번째 게시물 캡처:



  • 5개의 요소가 일치하는 것을 볼 수 있습니다. 저장 버튼을 클릭하고 완료합니다.

    로케이터를 통해 텍스트 가져오기:



    로케이터 대상을 얻으려면 find_element 함수를 사용할 수 있습니다. 이 시나리오에서는 find_elements 함수를 사용하여 결과 배열을 가져올 수 있도록 여러 게시물을 가져와야 합니다.

    UIs = cc.find_elements(locator.facebook.posts)
    


    Python 코드에서 Locator.를 사용하여 이 프로젝트에서 Clicknium을 사용하여 캡처한 로케이터를 사용할 수 있습니다. 프로젝트 간에 동일한 로케이터를 사용해야 하는 경우 로케이터 저장소를 클라우드 로케이터 저장소로 만들고 어디서나 참조할 수 있습니다.



    UI 요소를 가져올 때 텍스트 정보를 포함할 수 있는 요소 속성을 찾아야 합니다. Web elements property 을 확인하십시오. 속성innertext이 우리에게 필요한 것입니다.

        uis = cc.find_elements(locator.facebook.posts)
        for ui in uis:
            text = ui.get_property("innertext")
    


    작동 여부를 확인하기 위해 텍스트를 인쇄할 수 있습니다.
    작동하지 않으면 로케이터 페이지를 확인하여 속성을 조정해야 합니다. 로케이터는 ID UI 요소를 사용합니다.



    위 페이지에서 몇 가지 빠른 유효성 검사 및 작업을 수행하여 로케이터가 작동하는지 여부를 확인할 수 있습니다. 또한 UI 요소를 찾는 데 사용할 특성을 선택하고 수정할 수도 있습니다.

    다음 페이지로 이동



    페이지를 아래로 스크롤하면 Facebook 콘텐츠가 로드됩니다. 따라서 한 번 캡처하면 모든 정보를 얻을 수 없습니다. 그래서 우리는 각 페이지를 캡처해야 합니다. 마우스의 스크롤 동작을 모방하면 제어하기 어려울 것입니다. 따라서 가장 좋은 선택은 키보드의 PageDown 버튼을 사용하는 것입니다. send_hotkey 함수를 사용하면 쉽게 할 수 있습니다. Code에 대한 PageDown{PGDN}입니다.

    cc.send_hotkey("{PGDN}")
    


    우리는 모든 게시물을 얻기 위해 while 루프를 사용할 수 있습니다. 다중 캡처는 시간 동안 동일한 게시물을 가져오므로 사전을 사용하여 게시물을 저장하고 ancestorid를 키로 사용할 수 있습니다.

    소스 코드



    GitHub

    좋은 웹페이지 즐겨찾기