Селен вебдрайвер | отписаться от всех друзей в социальной сети
Есть ли у вас идеи, почему за всеми отписываются только 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
1 ответ
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)
Это скорость запросов (постоянно нажимая на 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