你知道为什么它只取消关注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
答案 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)