[왕초보 웹크롤링 무작정 따라하기] 웹크롤링, 셀레니움, 액션체인, 마우스오버, move_to_element(), 웹 텍스트 추출, text
#14 인스타그램 좋아요 수 크롤링(마우스오버/텍스트 출력)
이전에 요소의 경로를 추출하는데 css 선택자를 사용했다면, 이번에는 xpath를 사용하려고 한다. 경로를 추출하는데 뭘 사용해도 상관은 없지만 경우에 따라 조금 더 편리한 것을 사용하면 된다. xpath 경로도 selector와 동일하게 개발자도구의 copy를 통해 복사할 수 있다.
css 선택자로 단일 요소 찾는 메소드 | .find_element_by_css_selector() |
css 선택자로 복수 요소 찾는 메소드 | .find_elements_by_css_selector() |
xpath로 단일 요소 찾는 메소드 | .find_element_by_xpath() |
xpath로 복수 요소 찾는 메소드 | .find_elements_by_xpath() |
액션체인, 마우스 오버하기
좋아요와 댓글 수는 게시물 위에 마우스를 올려야 나타난다. xpath로 최근 게시물의 경로를 지정하고 요소에 마우스를 이동하는 메소드 .move_to_element()를 사용해 준다. 위에서 액션체인을 한 번 사용해 주었기 때문에 오류 방지를 위해 새로 정의해 주자.
#04. 게시물애 마우스 올리기(마우스 오버)
#첫 번째 게시물의 xpath 경로 지정
pead = dr.find_element_by_xpath('//*[@id="mount_0_0_BL"]/div/div[1]/div/div[1]/div/div/div[1]/div[1]/section/main/div/div[5]/article/div[1]/div/div[1]/div[1]')
#게시물로 마우스 옮기기 실행
act = ActionChains(dr)
act.move_to_element(pead).perform()
time.sleep(1) #로딩 시간 기다림
텍스트값 추출하기
이제 좋아요와 댓글 수의 각 경로에서 text를 뽑아주면 된다. 경로를 살펴보면 좋아요와 댓글수가 동일한 선택자로 되어 있으니 슬라이싱으로 구분해 주자. 텍스트값은 .text 메소드를 사용하면 추출할 수 있다.
#05. 좋아요와 댓글 수 크롤링
'''
좋아요수와 댓글수가 동일한 선택자로 구성됨
두 값을 같이 받아온 후, 슬라이싱
'''
likes_commnets = dr.find_elements_by_xpath('//*[@id="mount_0_0_BL"]/div/div[1]/div/div[1]/div/div/div[1]/div[1]/section/main/div/div[5]/article/div[1]/div/div[1]/div[1]/a/div[2]/ul/li/div/span')
#인덱스를 사용해 좋아요수와 댓글수 구분
likes = likes_commnets[0].text
comments = likes_commnets[1].text
print(likes)
print(comments)
게시일자는 게시물을 클릭해야 확인 할 수있으니 click메소드를 사용해 게시물을 열고 게시일자를 추출하면 된다. 그런데 게시일자가 '~일 전'으로 나와있다. 하지만 html을 자세히 확인해보면 datetime이라는 요소로 년월일시가 정확히 적혀있는 것을 확인할 수 있다. html 안의 요소는 get_attribute메소드로 추출할 수 있다.
#06. 게시일자 크롤링
pead.click() #피드 클릭
time.sleep(2) #로딩 대기
#게시일자 선택 후 텍스트 추출
date = dr.find_element_by_xpath('//*[@id="mount_0_0_BL"]/div/div[1]/div/div[2]/div/div/div[1]/div/div[3]/div/div/div/div/div[2]/div/article/div/div[3]/div/div/div[2]/div/div/a/div/time').get_attribute('datetime')
print(date)
▼다음글 이어보기▼
'데이터 스킬업 > 웹크롤링' 카테고리의 다른 글
[파이썬: 웹크롤링] #00 웹크롤링 사전준비, 파이썬/쥬피터노트북/크롬브라우저 설치부터 실행까지 (1) | 2023.02.28 |
---|---|
[파이썬:웹크롤링] #15 셀레니움 크롤링 반복문 with for문 & range (4) | 2022.06.23 |
[파이썬:웹크롤링] #13 인스타그램 로그인하기 with Selenium (1) | 2022.06.12 |
[파이썬:웹크롤링] #12 동적 웹페이지 크롤링 with Selenium (0) | 2022.06.12 |
[파이썬:웹크롤링] #11 쇼핑몰 제품정보/평점/리뷰수 리스트업 (0) | 2022.06.12 |
댓글