[PYTHON] 파이썬에서 selenium webdriver를 사용하여 웹 페이지를 스크롤하는 방법은 무엇입니까?
PYTHON파이썬에서 selenium webdriver를 사용하여 웹 페이지를 스크롤하는 방법은 무엇입니까?
현재 페이스 북 사용자 친구 페이지를 통해 구문 분석하고 AJAX 스크립트에서 모든 ID를 추출하기 위해 셀레늄 webdriver를 사용하고 있습니다. 하지만 모든 친구를 사귈 때까지 아래로 스크롤해야합니다. 셀레늄에서 어떻게 아래로 스크롤 할 수 있습니까? 파이썬을 사용하고 있습니다.
해결법
-
==============================
1.당신이 사용할 수있는
당신이 사용할 수있는
driver.execute_script("window.scrollTo(0, Y)")
여기서 Y는 높이입니다 (fullhd 모니터에서는 1080입니다). (@lukeis에 감사드립니다)
당신은 또한 사용할 수 있습니다
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
페이지 하단으로 스크롤합니다.
소셜 네트워크와 페이스 북 등 무한로드가있는 페이지로 스크롤하고 싶다면 (@Cuong Tran 덕분에)
SCROLL_PAUSE_TIME = 0.5 # Get scroll height last_height = driver.execute_script("return document.body.scrollHeight") while True: # Scroll down to bottom driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") # Wait to load page time.sleep(SCROLL_PAUSE_TIME) # Calculate new scroll height and compare with last scroll height new_height = driver.execute_script("return document.body.scrollHeight") if new_height == last_height: break last_height = new_height
-
==============================
2.linkedin.com과 같은 무한한 페이지의 맨 아래로 스크롤하려는 경우 다음 코드를 사용할 수 있습니다.
linkedin.com과 같은 무한한 페이지의 맨 아래로 스크롤하려는 경우 다음 코드를 사용할 수 있습니다.
SCROLL_PAUSE_TIME = 0.5 # Get scroll height last_height = driver.execute_script("return document.body.scrollHeight") while True: # Scroll down to bottom driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") # Wait to load page time.sleep(SCROLL_PAUSE_TIME) # Calculate new scroll height and compare with last scroll height new_height = driver.execute_script("return document.body.scrollHeight") if new_height == last_height: break last_height = new_height
참조 : https://stackoverflow.com/a/28928684/1316860
-
==============================
3.여기에 표시된 것과 같은 방법 :
여기에 표시된 것과 같은 방법 :
파이썬에서는 그냥 사용할 수 있습니다.
driver.execute_script("window.scrollTo(0, Y)")
(Y는 스크롤하려는 수직 위치입니다)
-
==============================
4.
element=find_element_by_xpath("xpath of the li you are trying to access") element.location_once_scrolled_into_view
이것은 내가 볼 수없는 'li'에 액세스하려고 할 때 도움이되었습니다.
-
==============================
5.페이스 북의 검색 결과 페이지를 스크롤하는 것에 대한 답변이 아니었지만 적어도이 솔루션을 테스트 한 후에 발견되었습니다.
페이스 북의 검색 결과 페이지를 스크롤하는 것에 대한 답변이 아니었지만 적어도이 솔루션을 테스트 한 후에 발견되었습니다.
while driver.find_element_by_tag_name('div'): driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") Divs=driver.find_element_by_tag_name('div').text if 'End of Results' in Divs: print 'end' break else: continue
-
==============================
6.
from selenium.webdriver.common.keys import Keys html = browser.find_element_by_tag_name('html') html.send_keys(Keys.END)
테스트를 거쳤습니다.
-
==============================
7.이 문제를 해결하는 가장 쉬운 방법은 라벨을 선택한 다음 보내기를하는 것입니다.
이 문제를 해결하는 가장 쉬운 방법은 라벨을 선택한 다음 보내기를하는 것입니다.
label.sendKeys(Keys.PAGE_DOWN);
희망 그것이 작동합니다!
-
==============================
8.나는 동적 인 웹 페이지를 스크롤하는 방법을 찾고 있었고 페이지의 끝 부분에 도달하면 자동으로 멈추고이 스레드를 발견했다.
나는 동적 인 웹 페이지를 스크롤하는 방법을 찾고 있었고 페이지의 끝 부분에 도달하면 자동으로 멈추고이 스레드를 발견했다.
한 가지 주요 수정 사항이있는 @Cuong Tran의 게시물이 내가 찾던 해답이었습니다. 나는 다른 사람들이 수정이 도움이된다는 것을 알았을 것이라고 생각했다. (코드가 작동하는 방식에 큰 영향을 미친다.
수정은 루프 내에서 마지막 페이지 높이를 캡처하는 문을 이동하여 각 검사가 이전 페이지 높이와 비교되도록합니다.
그래서, 아래의 코드는 :
(break 문이 다른 조건 (페이지가 'sticks'인 경우)에서 제거 될 수있는 또 다른 수정이 있습니다.
SCROLL_PAUSE_TIME = 0.5 while True: # Get scroll height ### This is the difference. Moving this *inside* the loop ### means that it checks if scrollTo is still scrolling last_height = driver.execute_script("return document.body.scrollHeight") # Scroll down to bottom driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") # Wait to load page time.sleep(SCROLL_PAUSE_TIME) # Calculate new scroll height and compare with last scroll height new_height = driver.execute_script("return document.body.scrollHeight") if new_height == last_height: # try again (can be removed) driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") # Wait to load page time.sleep(SCROLL_PAUSE_TIME) # Calculate new scroll height and compare with last scroll height new_height = driver.execute_script("return document.body.scrollHeight") # check if the page height has remained the same if new_height == last_height: # if so, you are done break # if not, move on to the next loop else: last_height = new_height continue
-
==============================
9.내 목적을 위해, 나는 윈도우를 염두에 두면서 더 아래로 스크롤하고 싶었다. 내 솔루션은 비슷했고 window.scrollY를 사용했다.
내 목적을 위해, 나는 윈도우를 염두에 두면서 더 아래로 스크롤하고 싶었다. 내 솔루션은 비슷했고 window.scrollY를 사용했다.
driver.execute_script("window.scrollTo(0, window.scrollY + 200)")
현재 y 스크롤 위치 + 200으로 이동합니다.
from https://stackoverflow.com/questions/20986631/how-can-i-scroll-a-web-page-using-selenium-webdriver-in-python by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] super ()가 오류와 함께 실패합니다. TypeError 부모가 객체에서 상속하지 않는 경우 "인수 1은 classobj가 아닌 유형이어야합니다" (0) | 2018.10.03 |
---|---|
[PYTHON] Url은 UTF-8을 파이썬에서 디코딩합니다. (0) | 2018.10.03 |
[PYTHON] 요청 라이브러리에서 JSON 응답을 구문 분석하는 가장 좋은 방법은 무엇입니까? (0) | 2018.10.03 |
[PYTHON] 정수 타임 스탬프를 Python datetime으로 변환하는 방법 (0) | 2018.10.03 |
[PYTHON] 범위 (시작, 끝)에 끝이 포함되지 않는 이유는 무엇입니까? (0) | 2018.10.03 |