2017-01-20 6 views
0

Ich versuche zu automatisieren this Instagram-Link. Ich muss scrollen und blättern und alle Links abrufen. Ich versuche zu folgen, aber nicht zu arbeiten.Python Selen: Scrolling funktioniert nicht

def fetch_links_by_hashtag(hash_tag): 
    url = 'https://www.instagram.com/explore/tags/marketing/' 
    driver.get(url) 
    driver.implicitly_wait(20) 
    is_more = False 

    try: 
     elem_more = wait.until(EC.element_to_be_clickable((By.PARTIAL_LINK_TEXT, "Load more"))) 
     elem_more.click() 
     is_more = True 
    except Exception as ex: 
     print(str(ex)) 

    pop = driver.find_element_by_tag_name('footer') 
    #pop = driver.find_element_by_link_text('About us') 
    # pop = driver.find_element_by_class_name('_4gt3b') 
    if pop is not None: 
     for i in range(10): 
      print('Calling scrolling script') 
      # It scolls till end 
      driver.execute_script('arguments[0].scrollTop = arguments[0].scrollHeight', pop) 
      sleep(4) 
     html = pop.get_attribute('innerHTML') 
     print(html) 

Antwort

0

Zusätzlich 李 Antwort

driver.execute_script("return arguments[0].scrollIntoView();", element_obj)

auch 宏杰, wenn Sie einen zusätzlichen Scroll machen wollen:

driver.execute_script("return arguments[0].parentNode.scrollTop = " 
         "arguments[0].parentNode.scrollTop + {extra_scroll}" 
         .format(extra_scroll=extra_scroll_pixels), element_obj) 

Mein gesamter Code:

def _scroll_to_element(driver, element, 
         extra_scroll=None): 
    # Scroll to element 
    driver.execute_script("return arguments[0].scrollIntoView();", element) 

    # Scroll parentNode with the extra pixels (If provided) 
    if extra_scroll: 
     driver.execute_script(
      "return arguments[0].parentNode.scrollTop = " 
      "arguments[0].parentNode.scrollTop + {extra_scroll}".format(
       extra_scroll=str(extra_scroll)), element) 
+0

Es ist anders als das, was ich getan habe? auch was ist 'element_obj'? – Volatil3

+0

@ Volatil3 Es ist ein bisschen anders; 1. Sehen Sie die 'return' (könnte eine andere machen) 2. Ich rufe' parentNode' 3. 'element_obj' ist, was Sie' pop' genannt haben (Das Element, das Sie scrollen wollen). Siehe die Methode, die ich benutze (hatte nie irgendwelche Probleme) –