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 вещи
Вы получаете
DeprecationWarning: find_element_by_* commands are deprecated
чтобы решить эту проблему, вы должны изменить все
find_element_by_*
приказать
find_element(By.XPATH, "XPATH")
или By.CSS_SELECTOR, By.ID и т. д. в зависимости от вашего селектора.
Нет такого файла
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 , в вашей программе есть небольшая и серьезная проблема:
- Предупреждение об устаревании: команды find_element_by_* устарели. Пожалуйста, используйте find_element() вместо DeprecationWarning . Вы можете найти подробное обсуждение того, как подавить его в find_element_by_*, команды устарели в селене.
Это сообщение об ошибке...
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: