Я только что написал этот сканер instagram, это маленький проект для колледжа. Я покажу вам код и загрузите картинку, чтобы показать, в чем заключается моя проблема.
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
class App:
def __init__(self,username="Enter your username here",password="Enter your password here",target_username="shriar.ha"):
self.username = username
self.password = password
self.target_username = target_username
self.driver = webdriver.Chrome("/Users/Shahriar/Desktop/Selenium and BS projects/chromedriver.exe") #This is the path to webdriver in my PC ,you should change it and give the path of where your webdriver is located.
self.main_url = "https://www.instagram.com"
self.driver.get(self.main_url)
sleep(5)
self.log_in()
self.close_notification()
self.go_to_target_profile()
sleep(3)
self.click_on_following()
self.move_mouse()
self.scroll_down()
self.driver.close()
def move_mouse(self):
actions = ActionChains(self.driver)
following_list = self.driver.find_element_by_xpath("//div[@class='isgrP']//div[@role = 'button']")
actions.move_to_element(following_list).perform()
sleep(3)
def scroll_down(self):
number_of_following = self.driver.find_element_by_xpath("//a[@href='/shriar.ha/following/']/span").get_attribute("innerHTML")
print(number_of_following)
number_of_following = int(number_of_following)
if number_of_following > 7:
number_of_scrolls = (number_of_following / 7)+3
for i in range(int(number_of_scrolls)):
self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
sleep(2)
def click_on_following(self):
following_button = self.driver.find_element_by_xpath("//a[@href='/shriar.ha/following/']")
following_button.click()
sleep(5)
def close_notification(self):
try:
sleep(3)
close_noti_btn = self.driver.find_element_by_xpath("//button[contains(text(),'Not Now')]")
close_noti_btn.click()
sleep(2)
except:
pass
def go_to_target_profile(self):
target_profile_url = self.main_url + "/" + self.target_username + "/"
self.driver.get(target_profile_url)
def log_in(self):
login_button = self.driver.find_element_by_xpath("//a[@href='/accounts/login/?source=auth_switcher']")
login_button.click()
sleep(5)
username_input = self.driver.find_element_by_xpath("//input[@name='username']")
username_input.send_keys(self.username)
password_input = self.driver.find_element_by_xpath("//input[@name='password']")
password_input.send_keys(self.password)
password_input.submit()
if __name__ == "__main__":
app = App()
Как вы можете видеть, он входит в Instagram, затем идет к целевому имени пользователя, которое вы даете программе, и затем нажимает на следующее, поэтому он показывает следующий список. это еще не закончено, это должно сделать другие вещи, но сейчас я застрял в этом шаге.
Моя проблема в том, что когда я нажимаю на следующее. это открывает маленькое окно. и вот где вы можете увидеть следующий список, я хочу прокрутить этот список вниз. см. рисунок ниже:
посмотреть фото
Я хочу прокрутить следующий список, но вместо этого мой код прокручивает вниз главную страницу, я имею в виду страницу, которая находится сзади. Я понял, что когда у меня есть курсор мыши в следующем списке, я могу прокрутить его с помощью мыши, поэтому я решил написать функцию, чтобы поместить курсор мыши в список, а затем прокрутить ее, но это не удалось.
Кто-нибудь понял, что я должен делать?
спасибо