일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- java
- 주식 분석
- 급등주
- 프로그래머스
- 손경제 요약
- 알고리즘
- 상한가 이유
- 손에 잡히는 경제 요약
- Python
- boj
- 코테
- 주식 상한가
- 테마주
- 자바
- 이진우의 손에 잡히는 경제
- 손경제
- 경제뉴스
- 주식
- 손에 잡히는 경제
- 파이썬
- 경제뉴스 요약
- 급등 이유
- Programmers
- 이진우
- 백준
- 급등주 분석
- 코딩테스트
- 상한가 분석
- 상한가
- 경제
- Today
- Total
Completion over Perfection
Python(파이썬) 웹 크롤링 - 인스타그램 레이어팝업(dialog box, 다이얼로그 박스) 크롤링 하기! 본문
인스타그램 웹페이지에서 크롤링을 하려다보면,
레이어팝업 형태(외국에서는 dialog box라고 부르는듯함)를 크롤링해야되는 상황이 생깁니다. (아래 그림 참고)
웹드라이버의 switch_to 명령어를 써서 레이어팝업으로 창을 변환해보려 했으나 소용없었습니다.
그리고 아무런 조치 없이 단순히 스크롤만 실행을 해버리게 되면 앞에 나온 레이어팝업은 스크롤이 되지않고
뒤에 있는 메인창에서 스크롤이 실행됩니다.
레이어 팝업창에서 스크롤을 내리려면 Selenium 웹 드라이버의 execute_script를 활용해야 합니다.
(저의 경우, 팔로워 수가 70~80명정도 되며 스크롤을 6번 내리면 모든 팔로워 리스트를 크롤링할 수 있었습니다.)
# 내 프로필로 이동
driver.find_element_by_xpath('/html/body/div[1]/section/nav/div[2]/div/div/div[3]/div/div[4]/a/img').click()
time.sleep(5)
#팔로우 버튼 클릭
driver.find_element_by_xpath('/html/body/div[1]/section/main/div/header/section/ul/li[3]/a/span').click()
time.sleep(5)
wait = WebDriverWait(driver, 20)
pop_up = wait.until(EC.visibility_of_element_located((By.CLASS_NAME,'PZuss')))
followers_panel = driver.find_element_by_xpath('/html/body/div[4]/div/div[2]')
#print(followers_panel)
for i in range(6):
try:
driver.execute_script('arguments[0].scrollTop = arguments[0].scrollHeight', followers_panel)
except:
pass
time.sleep(3)
위의 명령을 실행하면 레이어팝업에서 스크롤을 끝까지 내려 전체리스트가 로딩이 됩니다.
그 뒤에 아래 코드로 리스트를 파싱을 해주시면 됩니다.
html = driver.page_source
soup = BeautifulSoup(html, 'html.parser')
'파이썬 (Python)' 카테고리의 다른 글
파이썬(Python)으로 로또 매일 1개씩 자동구매하기 (1탄 - 기획하기) (2) | 2020.06.02 |
---|---|
Python(파이썬) 중괄호('{}')가 이미 포함된 문자열 포맷팅 방법 (1) | 2020.05.24 |
파이썬(Python) Selenium webdriver가 실행되지 않을 때 (8) | 2020.05.12 |
Python(파이썬)으로 1to50 게임 2초대 기록하기 (2) (0) | 2020.05.04 |
Python(파이썬)으로 1to50 게임 2초대 기록하기 (1) (0) | 2020.04.27 |