2017-12-28 8 views
0

안녕하세요, 저는 Selenium과 Python을 처음 접했습니다. 방금 사이트를 긁어 모으고있었습니다 pagalguy website. 페이지의 맨 아래로 스크롤하는 방법을 알고 있지만 셀레늄이 모든 readmore 버튼을 클릭하도록 단계적으로 아래로 스크롤하는 것이 필요하지만 그렇게 단계별로 스크롤하는 방법을 알지 못합니다. 열심히 일Python Selenium에서 아래로 스크롤하는 방법

browser.execute_script("window.scrollTo(0,300);") 
browser.find_element_by_link_text("Read More...").click() 

browser.execute_script("window.scrollTo(300,600);") 
browser.find_element_by_link_text("Read More...").click() 

browser.execute_script("window.scrollTo(600,900);") 
browser.find_element_by_link_text("Read More...").click() 

browser.execute_script("window.scrollTo(900,1200);") 
browser.find_element_by_link_text("Read More...").click() 

browser.execute_script("window.scrollTo(1200,1500);") 
browser.find_element_by_link_text("Read More...").click() 

browser.execute_script("window.scrollTo(1500,1800);") 
browser.find_element_by_link_text("Read More...").click() 

browser.execute_script("window.scrollTo(1800,2100);") 
browser.find_element_by_link_text("Read More...").click() 

browser.execute_script("window.scrollTo(2100,2500);") 
browser.find_element_by_link_text("Read More...").click() 
it goes on ....... 
내가 while 루프를 사용하여 자동화 시도

를 다음처럼 코딩하지만이 오류가 발생, 위의 하나는 작동하지만 나는 그것이 짧고 나는 다른 모든 페이지에 사용할 수 있도록 반복합니다 다른 페이지 길이.

initial_value = 0 
next_value = 300 
while next_value<300000: 
    browser.execute_script("window.scrollTo(initial_value,next_value);") 
    browser.find_element_by_link_text("Read More...").click() 
    initial_value=next_value 
    next_value+=300 

JavascriptException: Message: ReferenceError: initial_value is not defined

하지만 값을 정의, 나는 내가 실제로, 나는 자동으로 스크롤하여 모든 readmore 버튼을 클릭 할 노력하고 있어요 다음 내가 전체 텍스트 내용을 얻을 것이다 무엇을 설명 생각

+0

당신이 대답 [링크]로 볼 수 있습니다 (https://stackoverflow.com/questions/41744368/scrolling-to-element-using-webdriver) –

+0

어쩌면 그냥 몇 가지를 주입하려고 시도 할 수 있습니다 Js는 [이 링크] (https://stackoverflow.com/a/45194334/8179099)를 좋아합니다 –

+0

@AnkurSingh 페이지 위치로 스크롤하는 답변에서 사용 가능한 모든 옵션을 시도했지만 클릭하지 않았으며 없습니다. 오류가 성공적으로 실행되었지만 그것을 지적 해 주셔서 감사합니다. – venkat

답변

0

@ Rahul Chawla의 답변에 동의하십시오.

하지만 하나의 변경 사항을 추가하십시오. 이 하나의

driver = webdriver.Chrome() 

read_mores = driver.find_elements_by_xpath('//a[text()="Read More..."]') 

for read_more in read_mores: 
    driver.execute_script("arguments[0].scrollIntoView();", read_more) 
    driver.execute_script("$(arguments[0]).click();", read_more) 
+0

고마워 많이 일했는데 의심의 여지가 왜 거기에있는 $ 스크립트 드라이버 .execute_script ("$ (arguments [0]). click();", read_more) 오류가 발생하면 제거하고 이제는 작동합니다. – venkat

+0

자바 스크립트 코딩 규칙에 관한 내용입니다. [this] (https://stackoverflow.com/questions/846585/can-someone-explain-the-dollar-sign-in-javascript)를 참조하십시오. –

0

find_elements_by_xpath()을 사용하여 더 많은 버튼을 모두 읽고이를 하나씩보기로 스크롤하면서 찾아 볼 수 있습니다.

driver = webdriver.Chrome() 

read_mores = driver.find_elements_by_xpath('//a[text()="Read More..."]') 

for read_more in read_mores: 
    driver.execute_script("arguments[0].scrollIntoView();", read_more) 
    read_more.click() 
    # your code here 
+0

해답을 주셔서 감사합니다. 모든 readmore clickables에 아래로 스크롤하고있다 그러나 나는 이유 및 거기 없다 나는 클릭하지 않는다 s의 오류도 난 scrollintoview와 click() 사이에 time.sleep (2) 추가 여전히 다른 cluscking 수 없습니다 당신은 다른 제안을 줄 수 – venkat

관련 문제