Изменение юзер агента:
from selenium.webdriver import Firefox, FirefoxProfile
ff_profile = FirefoxProfile()Изменение прокси:
ff_profile.set_preference('general.useragent.override', ' нужный user agent ')
browser = Firefox(firefox_profile=ff_profile)
browser.get('http://www.whatsmyuseragent.com/')
from selenium.webdriver import Firefox
from selenium.webdriver.common import proxy, desired_capabilities
ff_proxy = proxy.Proxy({ 'proxyType' : proxy.ProxyType().MANUAL,Изменения accept-languages:
'httpProxy' : ' нужный прокси ' })
modif_capabilities = desired_capabilities.DesiredCapabilities().FIREFOX
ff_proxy.add_to_capabilities(modif_capabilities)
browser = Firefox(capabilities=modif_capabilities)
browser.get('http://hideme.ru/ip/')
from selenium.webdriver import Firefox, FirefoxProfile
ff_profile = FirefoxProfile()Изменение директории для cache:
ff_profile.set_preference('intl.accept_languages', 'ru') # ru/en
browser = Firefox(firefox_profile=ff_profile)
browser.get('http://www.vk.com')
from selenium.webdriver import Firefox, FirefoxProfile
ff_profile = FirefoxProfile()
ff_profile.set_preference('browser.cache.disk.parent_directory', ' путь ')
browser = Firefox(firefox_profile=ff_profile)
browser.get('http://www.vk.com')
Спасибо. Как вывести данные полученные не подскажешь?)
ОтветитьУдалитьИ вам спасибо.
ОтветитьУдалитьВ каком смысле вывести?
Для получения данных с одного элемента можно использовать метод get_attribute('value')
Например при одном элементе, или просто нахождении первого:
print browser.find_element_by_xpath('//input').get_attribute('value')
Можно пропустить все через итерацию, используя цикл for и методы selenium - find_elements_by_...
Также можно использовать модуль lxml для построения/анализа dom и получать тело документа через browser.page_source
Спасибо=)
Удалитьне подскажите как HTTP_ACCEPT_LANGUAGE(заголовок) изменить?
ОтветитьУдалитьЭтот заголовок вы можете изменять, пропуская все запросы через прокси-сервер, который будет их модифицировать.
УдалитьЕсли вам нужно его изменить программными средствами, то прямого доступа к заголовках нету. Но есть доступ к опциям браузера и потому я добавил в статью способ изменения языка.
Спасибо большое. Чувствуется опыт=)
УдалитьЕще у меня проблема возникла с tmp, которые плодятся в разделе /tmp, а там всего 1гб, а разбивать раздел заново это ну нереально можно сказать. В общем как перенести временные файлы в другой раздел, наука нашла ответ?
И еще не могу поймать ошибку, чтобы при ошибке корректно закрыть браузер.
пробовал
try:
# Код
except WebDriverException as e:
driver.quit()
Но ошибка видимо не та.
Добавил в статью способ изменения директории для cache.
УдалитьПо ошибке смотрите в логах, там должно быть типа:
selenium.common.exceptions.NoSuchElementException вот здесь и содержится класс ошибки. Потому просто его импортируете и используете в коде.
Вы также можете все пропустить через глобальный except:
try:
#действие
except:
driver.close()
Вряд ли там выскочат значительные внешние ошибки, которые смогут повлиять на логику работы...
Спасибо=) ваши советы очень помогают. А хром экономнее лисы и в чем? Озу или ЦП? Лиса озу не много ест, но вот ЦП нагружает.
УдалитьВы правы, firefox больше грузит cpu, в chrome - упор идет на память.
УдалитьВ связке с selenium, мне chrome намного больше нравится. Особенно это заметно на скриптах, цель которых работать по несколько часов. Например у меня есть реализация многопочного скрипта, который работает с очень сложным сайтом. ff - убивает рабочий ноут в 4 потока, а chrome работает стабильно в 10+ потоков...
К тому же я заметил, что ff иногда криво строит dom-дерево, опять же при длительной работе. И это вываливается в ошибки, когда нужно по xpath получить часть данных. Конечно это все можно пропустить через try/except, но иногда нужно получать данные точно.
Правда даже с этими минусами, все равно использую чаще firefox :) Реализация функционала для selenium намного шире и это уже зависит не от selenium, а от самого браузера, который предоставляет намного больше возможностей для драйвера.
Спасибо за детальный ответ.
УдалитьА реализация изменения браузера и прокси в хроме имеется?
Документация вообще скудная.