Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 12.12.2022
Сообщений: 17

Открытие ссылок поочередно из файла и выполнение действий

12.12.2022, 13:04. Показов 2129. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Я совсем новичок в питон, пару дней занимаюсь, но первую программу решил написать под свои задачи дабы было больше мотивации к решению задачи.
Задача скрипта состоит в том, что бы брать из файла в моем случае "base.txt" построчно ссылки которые записаны в файл, открывать в браузере отрабатывать нажатие клавиш, далее закрывать цикл и начинать новый, но уже что бы открывалась следующая ссылка по списку из файла "base.txt" и выполнялись абсолютно те же действия и завершалось это когда закончится список ссылок из файла.

Сразу прошу прощения возможно что то не так доношу и возможно не правильно оформляю ветку.

Все что смог накопать из логических умозаключений вот код:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import pyautogui
from time import sleep
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
 
myList = []
fp = open('base.txt')
for line in fp.readlines():
    myList.append(line)
for f in myList:
    driver = webdriver.Chrome()
    driver.get(myList[f]) #проблему тут выдает после запуска модуля F5 (ошибку выложу ниже)
 
assert "My Site" in driver.title
but = driver.find_element(By.XPATH, "//a[@id='action-button']")
but.click()
pyautogui.press('tab',presses=2)
sleep(2)
pyautogui.press('enter',presses=1)
sleep(3)
pyautogui.press('tab',presses=1)
sleep(3)
pyautogui.press('enter',presses=1)
Вот что выдает программа после запуска модуля F5.
Python
1
2
3
4
Traceback (most recent call last):
  File "C:/Users/PC/Desktop/Python/project/5555555555.py", line 15, in <module>
    driver.get(myList[f])
TypeError: list indices must be integers or slices, not str

Помогите пожалуйста на двух пальцах разжевать, что я не так делаю?
После замены кода:
Python
1
    driver.get(myList[f])
на:

Python
1
    driver.get(f)
Начинает идти прогрузка страниц по списку из файла, но они не доводят мою задачу до логического конца, а именно обработку каждой ссылки по необходимым мне нажатиям клавиш.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.12.2022, 13:04
Ответы с готовыми решениями:

Считывание поочередно строк из файла .txt и выполнение с ними действий
Такия ситуация, в файле прописаны обсалютные пути к файлам .exe, нужно их считать, проверить есть ли такой файл и если он есть, то откыть....

Нажатие ссылок в RichTextBox, выполнение действий
Приветствую! Каким образом можно реализовать обработку нажатия (или наведения указателя) на слово в тексте формы RichTextBox? ...

Выполнение определённых действий в зависимости от даты изменения заданного файла
Доброго времени суток. Задача такая, имеется файл changes.log, нужно определить дату его изменения и перейти на метку, по сдедующему...

5
2431 / 1474 / 633
Регистрация: 01.11.2021
Сообщений: 2,269
12.12.2022, 13:16
Python
1
2
3
for f in myList: # в переменной f уже твоя ссылка, это не индекс
    driver = webdriver.Chrome()
    driver.get(f) #проблему тут выдает после запуска модуля F5 (ошибку выложу ниже)
Добавлено через 1 минуту
или так
Python
1
2
3
for f in range(len(myList)): # в переменной f индекс
    driver = webdriver.Chrome()
    driver.get(myList[f]) #проблему тут выдает после запуска модуля F5 (ошибку выложу ниже)
1
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
12.12.2022, 13:26
Лучший ответ Сообщение было отмечено farmacomunion как решение

Решение

Цитата Сообщение от farmacomunion Посмотреть сообщение
а именно обработку каждой ссылки по необходимым мне нажатиям клавиш.
может в тело цикла нужно занести обработку нажатий
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
with open('base.txt') as fp:
    for line in fp.readlines():#splitlines():
        driver = webdriver.Chrome()
        driver.get(line) 
 
        assert "My Site" in driver.title
        but = driver.find_element(By.XPATH, "//a[@id='action-button']")
        but.click()
        pyautogui.press('tab',presses=2)
        sleep(2)
        pyautogui.press('enter',presses=1)
        sleep(3)
        pyautogui.press('tab',presses=1)
        sleep(3)
        pyautogui.press('enter',presses=1)
1
0 / 0 / 0
Регистрация: 12.12.2022
Сообщений: 17
12.12.2022, 13:37  [ТС]
В первую очередь огромное спасибо за такую быструю реакцию.
Вот как Вы написали первый вариант:
Python
1
2
3
    for f in myList: # в переменной f уже твоя ссылка, это не индекс
    driver = webdriver.Chrome()
    driver.get(f) #проблему тут выдает после запуска модуля F5 (ошибку выложу ниже)
Я уже ранее пробовал, да согласен ошибка пропала работает и начинает прогружать все страницы из файла, но в моем случае они начинают открывать все сразу у меня к примеру там 50 ссылок находится и открывается сразу 50 новых браузеров и только на последней 50й ссылке начинает нажимать нужные мне клавиши которые прописаны вот тут в код:

Python
1
2
3
4
5
6
7
8
9
but = driver.find_element(By.XPATH, "//a[@id='action-button']")
but.click()
pyautogui.press('tab',presses=2)
sleep(2)
pyautogui.press('enter',presses=1)
sleep(3)
pyautogui.press('tab',presses=1)
sleep(3)
pyautogui.press('enter',presses=1)

Второй вариант который Вы дали, тоже работает, но работает так же как и первый к сожалению это не то что нужно.

Но как же сделать так, что бы на каждой странице из моего списка в "base.txt" проходил весь цикл нажатия клавиш, после чего закрывается ранее открытая страница браузера и снова запускается этот же код, но уже вместо первой ссылки из файла "base.txt" подставлялась вторая и так пока не закончится весь список в моем файле?

Я думал попробовать сделать так, что бы код читал первую строку в файле, далее использовал ее проходил весь цикл и автоматически ее удалял, а когда запустится следующий цикл этого кода автоматически подставится первая строка из файла, так как предыдущая была удалена после выполнения кода, но я так и не нашел как можно такое реализовать, зато при таком методе есть и большой плюс для меня, это будет четко видно какие ссылки уже точно отработаны и после следующего запуска например в случае сбоя работы по каким либо причинам код начнет перебирать оставшиеся ссылки из файла "base.txt"

Помогите пожалуйста с этим делом уверен где то не далеко тут осталось, но моих знаний пока что не хватает =( увы...

Надеюсь смог правильно донести мысль =)

С уважением!
0
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
12.12.2022, 13:40
Цитата Сообщение от farmacomunion Посмотреть сообщение
и открывается сразу 50 новых браузеров
а если закрывать браузер после всех действий. тогда новая ссылка будет запускать браузер и не будет открыто сразу 50 окон
1
0 / 0 / 0
Регистрация: 12.12.2022
Сообщений: 17
12.12.2022, 13:41  [ТС]
@Semen-Semenich

Эврика!! Все заработало =) Огромная благодарность!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.12.2022, 13:41
Помогаю со студенческими работами здесь

Открытие ссылок по списку из текстового файла
Добрый вечер, возможно ли открыть список ссылок, которые находятся в текстовом файле через bat?

Вывод действий поочередно
В очередной раз обращаюсь за помощью. Есть одна простейшая задачка, посчитать выражение ((a+(d+e))-(4*5)) unit Unit1; interface ...

Открытие файла, выполнение операций в нём и сохранение
Здравствуйте, уважаемые! Нужна ваша посильная помощь: есть необходимость при помощи средств VBA в MS Excel сделать следуюшее: открыть...

Открытие файла через диалоговое и последующее выполнение кода
Есть задача: нужно выбрать файл из списка, через диалоговое окно и по данным произвести интерполяцию, через библиотеку gsl, и вычисление...

Ставлю задержку на выполнение действий в цикле - задержка ставится почему то на выполнение всего скрипта
Здравствуйте! Код элементарный: $s = $_POST; $s = preg_replace('/ {2,}/',' ',$s); for ($i = 0; $i &lt; strlen($s);...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru