FileNotFoundError: [Errno 2] Нет такого файла или каталога: 'following.txt ошибка доступа к файлу с помощью Selenium Python

У меня проблема. Я пытаюсь научиться программировать ботов с помощью Selenium. Все в порядке, но я не могу сохранить список подписчиков, который получил из Instagram, в виде текстового файла. Заранее благодарю за помощь.

      def getFollowing(self):
        self.browser.get(f"https://www.instagram.com/{self.username}")
        time.sleep(3)
        self.browser.find_element_by_xpath("//*[@id='react-root']/section/main/div/header/section/ul/li[3]/a").click()
        time.sleep(3)

        dialog = self.browser.find_element_by_css_selector("div[role=dialog] ul")
        followingCount = len(dialog.find_elements_by_css_selector("li"))

        print(f"First count: {followingCount}")

        action = webdriver.ActionChains(self.browser)

        while True:
            dialog.click()
            action.key_down(Keys.SPACE).key_up(Keys.SPACE).perform()

            newCount = len(dialog.find_elements_by_css_selector("li"))

            if followingCount != newCount:
                followingCount = newCount
                print(f"New count: {followingCount}")
                time.sleep(3)
            else:
                break

            following = dialog.find_elements_by_css_selector("li")

            followingList =[]
            i = 0
            for user in following:
                link = user.find_element_by_css_selector("a").get_attribute("href")
                followingList.append(link)
                i += 1
                if i == followingCount+1:
                    break

            with open("following.txt", "w", encoding="UTF-8") as file:
                for item in followingList:
                    file.write(item + "\n")

      elif choice == 2:
        instagram.getFollowing()
        following = open("following.txt", "r")
        for i in following:
            print(i)

ВОЙДИТЕ В СВОЙ КОЙС: 2

      c:\Users\murat\Desktop\Çalışmalarım\Programlama\Exercises\InstagramBOT\main.py:72: DeprecationWarning: find_element_by_* commands are deprecated. Please use find_element() instead
  self.browser.find_element_by_xpath("//*[@id='react-root']/section/main/div/header/section/ul/li[3]/a").click()
c:\Users\murat\Desktop\Çalışmalarım\Programlama\Exercises\InstagramBOT\main.py:75: DeprecationWarning: find_element_by_* commands are deprecated. Please use find_element() instead
  dialog = self.browser.find_element_by_css_selector("div[role=dialog] ul")
C:\Users\murat\AppData\Local\Programs\Python\Python310\lib\site-packages\selenium\webdriver\remote\webelement.py:501: UserWarning: find_elements_by_* commands are deprecated. Please use find_elements() instead
  warnings.warn("find_elements_by_* commands are deprecated. Please use find_elements() instead")
First count: 12
Traceback (most recent call last):
  File "c:\Users\murat\Desktop\Çalışmalarım\Programlama\Exercises\InstagramBOT\main.py", line 162, in <module>
    following = open("following.txt", "r")
FileNotFoundError: [Errno 2] No such file or directory: 'following.txt'

3 ответа

2 вещи

  1. Вы получаете

            DeprecationWarning: find_element_by_* commands are deprecated
    

чтобы решить эту проблему, вы должны изменить все

      find_element_by_* 

приказать

      find_element(By.XPATH, "XPATH")

или By.CSS_SELECTOR, By.ID и т. д. в зависимости от вашего селектора.

  1. Нет такого файла

            FileNotFoundError: [Errno 2] No such file or directory: 'following.txt
    

вы используете эту строку кода

      with open("following.txt", "w", encoding="UTF-8") as file:

ты даешь

      following.txt

и так как это не full file path, Python заглянет внутрь текущего проекта, откуда вы запускаете свою программу.

Вероятно, его нет в текущем рабочем каталоге.

Пожалуйста, убедитесь, что он присутствует, также, если он не в текущем рабочем каталоге, вы должны указать полный путь к файлу.

В системе Windows это будет примерно так:

      D:/FolderName/following.txt

Это всего лишь пример.

Прежде всего проверьте, является ли файл following.txtнаходится в рабочем каталоге.

          if followingCount != newCount:
        followingCount = newCount
        print(f"New count: {followingCount}")
        time.sleep(3)
    else:
        break  # <-- this line breaks the loop before writing the file.

PS: попробуйте прочитать и записать файл в другом новом скрипте Python. Если это работает, это означает, что в вашем основном коде расположение файла другое.

Поскольку вы используете selenium4 , в вашей программе есть небольшая и серьезная проблема:


Это сообщение об ошибке...

      FileNotFoundError: [Errno 2] No such file or directory: 'following.txt'

... подразумевает, что ваша программа не может найти файл в текущем рабочем каталоге, т.е. внутри:

      c:\Users\murat\Desktop\Çalışmalarım\Programlama\Exercises\InstagramBOT

Решение

Чтобы устранить эту ошибку, вы можете использовать любой из следующих двух подходов:

  • Убедитесь, что нужный текстовый файлнаходится в подкаталоге c:\Users\murat\Desktop\Çalışmalarım\Programlama\Exercises\InstagramBOT .

  • Вы также можете передать абсолютный путь к требуемому текстовому файлу following.txtследующим образом:

            with open("c:/absolute_file_location/following.txt", "w", encoding="UTF-8") as file:
    
Другие вопросы по тегам