硒webdriver |取消关注社交网络中的所有朋友

时间:2016-12-27 11:50:36

标签: python selenium selenium-webdriver webdriver browser-automation

你知道为什么它只取消关注15人 而不是全部?

您需要Instagram上的帐户才能运行此脚本。

例如:
如果您的帐户是 chrome1 比这个脚本还要工作 https://www.instagram.com/chrome1/following/

for ns in driver.find_elements_by_class_name("_6jvgy"):
    try:
        ns.find_element_by_class_name("_r4e4p").click() # unFollow button!!!

        # time.sleep(2) # the same as without sleep  

        unfollow_nick = ns.find_element_by_class_name("notranslate").get_attribute("title")
        print(unfollow_nick) # now: prints all, but really unfollow only 15. 

    except:
        pass

这个问题是前一个问题的延续: Scroll in Selenium Webdriver (Python)

运行所需的所有代码: https://ideone.com/wYjHW4

2 个答案:

答案 0 :(得分:0)

请求的速度(连续点击Following按钮)导致Instagram服务器拒绝/忽略大多数请求。

在每次请求之前添加一些休眠时间。

在您的代码中,您导入了sleep方法。所以,直接使用sleep(2)但不使用time.sleep,这会引发异常并且您正在捕获它并且&使用pass关键字绕过它,因此您不会发现此异常。我建议打印例外,然后使用pass关键字。

for ns in driver.find_elements_by_class_name("_6jvgy"):
    try:
        ns.find_element_by_class_name("_r4e4p").click() # unFollow button!!!

        sleep(2) # works now 

        unfollow_nick = ns.find_element_by_class_name("notranslate").get_attribute("title")
        print(unfollow_nick) # now: prints all, but really unfollow only 15. 

    except:
        pass

答案 1 :(得分:0)

self.driver.implicitly_wait(10)
        scroll_boX = self.driver.find_element_by_xpath("/html/body/div[5]/div/div/div[2]/div")
        last_ht, ht = 0, 1
        #last_bt, bt = 1, 1
        while last_ht != ht:
            last_ht = ht
           # last_bt = bt
            sleep(2) 
            ht = self.driver.execute_script("""
                arguments[0].scrollTo(0, arguments[0].scrollHeight); 
                return arguments[0].scrollHeight;
                """, scroll_box)
            sleep(2)