Хотя Selenium может показаться заманчивым и полезным, у него есть одна основная проблема, которая не может быть исправлена: производительность. Рассчитывая все, что делает браузер, вам понадобится намного больше энергии. Даже PhantomJS не конкурирует с простым запросом. Я рекомендую вам использовать Selenium только тогда, когда вам действительно нужно нажать кнопки. Если вам нужен только javascript, я рекомендую PyQt (проверьте его https://www.youtube.com/watch?v=FSH77vnOGqU).
Однако, если вы хотите использовать Selenium, я рекомендую Chrome над PhantomJS. У многих пользователей есть проблемы с PhantomJS, где веб-сайт просто не работает в Phantom. Chrome может быть безголовым (не графическим)!
Прежде всего убедитесь, что вы установили ChromeDriver, от которого зависит селен для использования Google Chrome.
Затем убедитесь, что у вас есть Google Chrome версии 60 или выше, проверяя его в URL хромом: // Настройки/помощь
Теперь все, что вам нужно сделать, это следующий код:
from selenium.webdriver.chrome.options import Options
from selenium import webdriver
chrome_options = Options()
chrome_options.add_argument("--headless")
driver = webdriver.Chrome(chrome_options=chrome_options)
Если вы не знаете, как использовать Selenium, вот краткий обзор:
driver.get("https://www.google.com") #Browser goes to google.com
Нахождение элементов: используйте либо элементы или метод ЭЛЕМЕНТ. Примеры:
driver.find_element_by_css_selector("div.logo-subtext") #Find your country in Google. (singular)
- driver.find_element (ы) _by_css_selector (css_selector) # Каждый элемент, который соответствует этот селектор CSS
- driver.find_element (ы) _by_class_name (имя_класса) # Каждый элемент со следующим классом
- driver.find_element (s) _by_id (идентификатор) # Каждый элемент со следующим ID
- driver.find_element (s) _by_link_text (LINK_TEXT) # Каждый с полным текстом ссылки
- привода r.find_element (s) _by_partial_link_text (partial_link_text) # Каждый с частичным текстом ссылки.
- driver.find_element (s) _by_name (имя) # Каждый элемент, где имя = аргумент
- driver.find_element (s) _by_tag_name (tag_name) # Каждый элемент с именем тега аргументу
Ok! Я нашел элемент (или список элементов). Но что мне теперь делать?
Вот методы, которые вы можете сделать на элемент Элем:
- elem.tag_name # Может кнопку возврата в.
- elem.get_attribute ("id") # Возвращает идентификатор элемента.
- elem.text # Внутренний текст элемента.
- elem.clear() # Очищает ввод текста.
- elem.is_displayed() # Истина для видимых элементов, False для невидимых элементов.
- elem.is_enabled() # Истина для разрешенного ввода, False в противном случае.
- elem.is_selected() # Выбран ли этот переключатель или элемент флажка?
- elem.location # Словарь, представляющий местоположение X и Y элемента на экране.
- elem.click() # Щелкните elem.
- elem.send_keys ("thelegend27") # Тип thelegend27 в эль (полезно для текстовых входов)
- elem.submit() # Представить форму, в которой эля принимает участие.
Специальные команды:
- driver.back() # Нажмите кнопку Назад.
- driver.forward() # Нажмите кнопку «Вперед».
- driver.refresh() # Обновить страницу.
- driver.quit() # Закройте браузер, включая все вкладки.
- Foo = driver.execute_script ("возвращение 'привет';") # Выполнить JavaScript (МОГ ПРИНЯТЬ ВОЗВРАТ ЗНАЧЕНИЯ!)
Таким образом, нет никакого способа, чтобы использовать запросы JavaScript. – Ben
Нет, запросы - это http-библиотека. Он не может запускать javascript. – sberry
Куда вы посмотрели и какой инструмент вы использовали, чтобы найти его Бен? Я пытаюсь это прямо сейчас, и я застрял – codyc4321