본문 바로가기
프로젝트/인스타그램 좋아요 봇

파이썬 인스타그램 좋아요 봇 만들기 #9 xpath 찾기

by 큰공 2020. 10. 5.
728x90
반응형

 

개요

 파이썬 자동화 프로그램을 만들어 자동으로 좋아요를 하는 봇을 만들어 보자

 혹시나 앞선 포스팅을 못 봤다면 복습하고 오자.

2020/08/26 - [IT/파이썬] - 파이썬 인스타그램 좋아요 봇 만들기 #1 Selenium

2020/08/27 - [IT/파이썬] - 파이썬 인스타그램 좋아요 봇 만들기 #2 로그인

2020/08/31 - [IT/파이썬] - 파이썬 인스타그램 좋아요 봇 만들기 #3 태그검색

2020/09/02 - [IT/파이썬] - 파이썬 인스타그램 좋아요 봇 만들기 #4 좋아요 누르기

2020/09/07 - [IT/파이썬] - 파이썬 인스타그램 좋아요 봇 만들기 #5 최근 게시물 선택하기

2020/09/08 - [IT/파이썬] - 파이썬 인스타그램 좋아요 봇 만들기 #6 랜덤함수

2020/09/14 - [IT/파이썬] - 파이썬 인스타그램 좋아요 봇 만들기 #7 list index out of range

2020/09/17 - [IT/파이썬] - 파이썬 인스타그램 좋아요 봇 만들기 #8 페이지 새로고침

 

XPATH 란?

 이때까지 많은 함수들을 사용해왔지만, 유독 find_element_by_xpath 함수에 대해서는 생각보다 깊이 있게 파고들지 않았다. 검색을 통해서 나온 값들을 사용하게 되니, 해당값이 정확하게 어떤것을 의미하는지 몰라 자유자재로 바꾸기도 어려웠다. 이에, 이번 포스팅을 통해서 xpath 값을 크롬 developer tool 을 이용하여 정확하게 알아보고자 한다.

 정의된 문구는 아래와 같다. 뭐 정확하게 뭔말인지 몰라도 된다. xml 문서의 경로를 나타낸다! 정도로만 이해하자

W3C의 표준으로 XML(Extensible Markup Language)문서의 구조를 통해 경로(Path)위에 지정한 구문을 사용하여 항목을 배치하고 처리하는 방법을 기술하는 언어입니다. XML 표현보다 더 쉽고 약어로 되어 있으며, XSL변환(XSLT)과 XML지시자 언어(XPointer)에 쓰이는 언어로 XML 문서의 Node를 정의하기 위하여 경로식(Path Expression)을 사용하며, 수학 함수와 기타 확장 가능한 표현들이 있습니다.

 

find_element_by_xpath

 크롤링에 있어서, xpath 로 해당 위치를 찾는것은 매우 중요하다. xpath의 문법을 살펴보자.

 그중 필요한 문법만 가져와 보자

문법 설명
/ 절대 경로를 나타낸다.
// 문서 내에서 검색하고자 할때 사용한다.
* 알려지지 않은 모든 앨러멘트를 선택하기 위해서 사용한다.
@ 모든 속성을 의미한다.
[] 대괄호를 사용하여 선택하고자 하는 앨러멘트를 보다 세부적으로 설정한다.

 

Development Tool - Select Element

 그럼 xpath를 어떻게 찾는지 차근차근 따라 가보자. 인스타그램에서 최근 게시물의 첫번째 게시물을 찾는 방법이다.

 해당 부분은 mac os / chrome 환경이다.

 

 1) 원하는 페이지 실행

 2) 세팅 -> More Tools -> Developer Tools 를 선택

 3) 좌측에 빨간 동그라미를 선택한다.

 4) 원하는 위치에 클릭을 하면 이런식으로 해당 부분의 위치를 툴에서 표시를 해준다.

 5) 찾는 경로를 흰색으로 표시해 두었다.

 

6) 문서 전체에서 react-root를 찾고, 하위 경로로 하나씩 내려간다.

   section -> article -> div[2] (여기서 같은 레벨의 2번째이므로 해당부분을 조심한다) -> div -> div -> div -> a

   우리가 원하는 것은 <a> 태그로 묶인 하이퍼링크이므로 이를 선택한다.

  

완성된 xpath 찾기 코드

feed = browser.find_element_by_xpath('//*[@id="react-root"]/section/main/article/div[2]/div/div/div/a')

 

 

 

 

 

728x90
반응형

댓글0