Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Python
все вопросы по Python (Питон)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51

Открыть новую тему     Написать ответ в эту тему

Adm10



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здесь обсуждается всё, что связано с использованием Python: программирование, библиотеки, ресурсы и другие вопросы

Python


Python - высокоуровневый язык программирования общего назначения с динамической типизацией и автоматическим управлением памятью, ориентированный на повышение производительности разработчика, читаемости кода и его качества, а также на обеспечение переносимости написанных на нём программ

С чего начать?
Простой, понятный и вместе с тем грамотный ресурс на русском языке: pythonworld.ru + самоучитель
Библия PEP8

Всего записей: 35 | Зарегистр. 13-10-2006 | Отправлено: 15:48 16-06-2007 | Исправлено: Lin1980, 22:13 27-01-2025
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LZAA
так долго уже возитесь с этим всем, давно уже пора понимать основы.
я не о языке, а вообще, в принципе.
 

Цитата:
Можно ли сделать так, чтобы сценарий 'path' из 'Переменных сред' брал?

он его и будет использовать, если не переопределены переменные окружения при запуске скрипта.
 

Цитата:
Но в некоторых деректориях 'не может расшифровать'. Это наблюдается только для путей с 'C:'. Например:

потому что \символ это попытка использовать специальные символы в строке.
пишите путь как c:/users/..., либо c:\\users\\...
 
зачем вы все это делаете под windows? используйте виртуальную машину или WSL, так как большинство же кодов под них написано.
 

Цитата:
url = "xxxxx"

это всего лишь переменная. а код целиком?
 

Цитата:
Но для портабельного 'Firefox' если использовать будь то 'launcher.exe' или же 'напрямую' 'firefox.exe'

напрямую откуда? из папки App и так далее?  

Всего записей: 16817 | Зарегистр. 20-09-2014 | Отправлено: 05:07 09-01-2026
LZAA

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
     Некоторые достижения.
 
    Вместо 'driverService = Service('/path/to/geckodriver')' написал 'driverService = Service()'.
    Теперь путь к дайверу читается из 'Переменных сред'.
    Но более того - чудесным образом запустился browser через лаунчер!
 
     Про 'Headless Firefox'.
 
  Сейчас в коде так:
 

Код:
import json
import sys
from os.path import exists
from selenium import webdriver
from selenium.webdriver.firefox.options import Options  
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.firefox.service import Service
 
        option = webdriver.FirefoxOptions()  
        option.binary_location = 'D:\Program Files\Firefox ESR 115 Portable'
        options = Options()  
        options.add_argument("-headless")  
        driverService = Service()  
        driver = webdriver.Firefox(service=driverService, options=option)            
        driver.get("https://www.google.com")
        driver.implicitly_wait(30)

   Но GUI (окно) появляется. Что здесь не так?
 
     Про символы.

Цитата:
потому что \символ это попытка использовать специальные символы в строке.  

    Насколько я теперь понимаю '\' не должно быть больше одного. Потому что c 'X:\geckodriver.exe' проблем нет.

Всего записей: 2679 | Зарегистр. 09-01-2010 | Отправлено: 13:08 09-01-2026 | Исправлено: LZAA, 18:54 09-01-2026
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LZAA

Цитата:
Насколько я теперь понимаю '\' не должно быть больше одного

Как раз нужно парами, чтобы экранировать, иначе \U расценивается как попытка указать код уникод символа.
 

Цитата:
Что здесь не так?

Попробуйте перед запуском
os.environ['MOZ_HEADLESS'] = '1'

Всего записей: 16817 | Зарегистр. 20-09-2014 | Отправлено: 13:24 09-01-2026
LZAA

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    1. Да - с '\\' работает. Но и с 'X:\geckodriver.exe' работает тоже. А вот с 'X:\x\geckodriver.exe' уже не работает. Я в этом смысле написал, что '\' больше одного в записи.
    2. С "os.environ['MOZ_HEADLESS'] = '1'" работает, только надо ещё 'import os' дописать. При этом записи для 'selenium' не нужны.
    3. Если мы записали путь к 'geckodriver.exe' в 'Переменные среды', то писать 'driverService = Service()' не надо.
 
     Осталось 'всего нечего' - 'ID' как-то 'добыть из недр'.

Всего записей: 2679 | Зарегистр. 09-01-2010 | Отправлено: 13:56 09-01-2026 | Исправлено: LZAA, 19:56 09-01-2026
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LZAA

Цитата:
Я в этом смысле написал, что '\' больше одного в записи.

проблема не в количестве обратных слешей в строке.
проблема в том, что префикс \x - начало записи шестнадцатеричного кода.
поэтому и нужно экранировать, тогда \\x будет именно \x в конечном результате

Всего записей: 16817 | Зарегистр. 20-09-2014 | Отправлено: 21:26 09-01-2026
LZAA

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
 OK. Мне кажется, что с Вашей помощью я докопался до сути.
  Выходит так, что в программировании некоторые буквы имеют специальное значение. И их надо избегать в названиях. А если они всё же есть, то экранировать нужно только их.
   Я весь алфавит не перебирал. Но пока что мне стали известны две такие. Это 'U' и 'X'.
   Пример.
 
   1. Так не работает: C:\Users\A\Desktop\A\geckodriver.exe
   2. Так работает:     C:\\Users\A\Desktop\A\geckodriver.exe

Всего записей: 2679 | Зарегистр. 09-01-2010 | Отправлено: 23:31 09-01-2026 | Исправлено: LZAA, 23:32 09-01-2026
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LZAA

Цитата:
Пример.

для Windows используйте везде \\ в пути и не парьтесь.
а можно просто использовать как в linux
c:/users/a/desktop..
регистр для Windows не важен, важен в Linux

Всего записей: 16817 | Зарегистр. 20-09-2014 | Отправлено: 23:38 09-01-2026 | Исправлено: Mavrikii, 23:38 09-01-2026
LZAA

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

   С 'Users' можно проще справится. Если язык системы 'ru', то можно записать
 
   C:\Пользователи\A\Desktop\A\geckodriver.exe
 
   Это работает.

Всего записей: 2679 | Зарегистр. 09-01-2010 | Отправлено: 13:39 10-01-2026
LZAA

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Если мы записали путь к 'geckodriver.exe' в 'Переменные среды', то писать 'driverService = Service()' не надо.  

     Теперь я в этом не уверен.
     Я удалил файл 'geckodriver.exe' с диска и путь из 'Переменных сред', а сценарий работает! Оказалось что в директории 'Users\Name\.cache' находится папка 'selenium' c browser в папке 'firefox' и драйвером в папке 'geckodriver'. Если папку 'selenium' удалить, то при выполнении сценария она создаётся заново.
    Допустим, что папка 'firefox' берётся из:
 
     option.binary_location = 'D:\Program Files\Firefox ESR 115 Portable'
 
    Но как и откуда он получает 'geckodriver.exe' совершенно непонятно!

Всего записей: 2679 | Зарегистр. 09-01-2010 | Отправлено: 19:15 10-01-2026
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LZAA
в консоли, если запускается без пути .exe файл
where geckodriver.exe
 

Цитата:
С 'Users' можно проще справится. Если язык системы 'ru', то можно записать

я больше не буду объяснять детали, смысла нет.
вам объясняют суть, вы же настаиваете на своих костылях.
нет здесь \U, может появиться в другом месте или иное. не нужно извращаться с путями, нужно писать так, чтобы работало нормально всегда, а не искать потом баги.
 

Цитата:
Если папку 'selenium' удалить, то при выполнении сценария она создаётся заново.

потому что это локальный кэш

Всего записей: 16817 | Зарегистр. 20-09-2014 | Отправлено: 08:02 11-01-2026 | Исправлено: Mavrikii, 08:14 11-01-2026
LZAA

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
в консоли, если запускается без пути .exe файл
where geckodriver.exe

 
where geckodriver.exe
INFO: Could not find files for the given pattern(s).
 
  Метод по-видимому не очень надёжный, потому что в папке 'geckodriver' 'geckodriver.exe' всё же есть.

Всего записей: 2679 | Зарегистр. 09-01-2010 | Отправлено: 12:06 11-01-2026 | Исправлено: LZAA, 12:10 11-01-2026
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LZAA

Цитата:
Метод по-видимому не очень надёжный, потому что в папке 'geckodriver' 'geckodriver.exe' всё же есть.

метод ищет если находится в PATH или локальной папке.
питоновский пакет может использовать свои дополнительные пути, как тот же кэш и так далее.
написал же, если запускается из консоли без указания пути, тогда where скажет где он.

Всего записей: 16817 | Зарегистр. 20-09-2014 | Отправлено: 05:29 12-01-2026
LZAA

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

     Прошу прощения за непонятливость. Может быть, что я что-то неправильно сделал.
    В 'cmd': 'where geckodriver.exe' или 'ScrapeGoogleGroups where geckodriver.exe'
 
     В обоих случаях 'cmd' не показывает, откуда берётся 'geckodriver.exe'.
 
     

Всего записей: 2679 | Зарегистр. 09-01-2010 | Отправлено: 11:44 12-01-2026
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LZAA

Цитата:
Может быть, что я что-то неправильно сделал.

скорее неправильно читаете, вернее не вникаете в сказанное.
 

Цитата:
откуда берётся 'geckodriver.exe'.

вы же уже нашли, что из папки .cache  

Цитата:
Чтобы полностью избежать ручного управления путями, вы можете использовать webdriver-manager библиотеку (для Python, Java и т. д.), которая автоматически загружает и управляет правильным исполняемым файлом драйвера, размещая его в локальном кэше (обычно ~/.cache/selenium/

 
сделайте иначе поиск по диску.

Всего записей: 16817 | Зарегистр. 20-09-2014 | Отправлено: 11:50 12-01-2026 | Исправлено: Mavrikii, 12:36 12-01-2026
LZAA

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Кое что стало понятно.
 

Цитата:
Я удалил файл 'geckodriver.exe' с диска и путь из 'Переменных сред', а сценарий работает! Оказалось что в директории 'Users\Name\.cache' находится папка 'selenium' c browser в папке 'firefox' и драйвером в папке 'geckodriver'. Если папку 'selenium' удалить, то при выполнении сценария она создаётся заново.
    Допустим, что папка 'firefox' берётся из:
 
     option.binary_location = 'D:\Program Files\Firefox ESR 115 Portable'
 
    Но как и откуда он получает 'geckodriver.exe' совершенно непонятно!

 
   Здесь я спрашиваю откуда он получает 'geckodriver.exe' после удаления папки 'selenium' из 'Users\Name\.cache', если этого файла нет на диске.
    Вы правы - сценарий скачивает его из сети. Я смотрел сетевые запросы.
    Для общего развития.

Цитата:
Чтобы полностью избежать ручного управления путями, вы можете использовать webdriver-manager библиотеку

    Могли бы вы мне показать как это использование записано в этом коде? Спасибо.
 

Всего записей: 2679 | Зарегистр. 09-01-2010 | Отправлено: 12:55 12-01-2026
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LZAA

Цитата:
Могли бы вы мне показать как это использование записано в этом коде

В последних версиях эта функциональность внедрена в сам селениум.
https://www.selenium.dev/documentation/selenium_manager/

Всего записей: 16817 | Зарегистр. 20-09-2014 | Отправлено: 14:21 12-01-2026
LZAA

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

     OK. С этим сценарием - всё. Спасибо за помощь по всем вопросам 'всвязи'.

Всего записей: 2679 | Зарегистр. 09-01-2010 | Отправлено: 14:56 12-01-2026
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Python


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.B0ard 2000-2026

LiteCoin: LgY72v35StJhV2xbt8CpxbQ9gFY6jwZ67r

Рейтинг.ru

Рейтинг.ru