Имитируйте функции браузера, автоматически выполняйте код JS на веб-страницах и обеспечивайте динамическую загрузку. Сделайте запрос более реальным (как будто это запрос реального браузера)
(1) Используйте адрес загрузки драйвера Google Chrome, оба адреса приемлемы. Он соответствует только основным версиям и обратно совместим.
(2) Проверьте версию Google Chrome. Гугл Хром правый верхний угол‐‐>помощь‐‐>о (3) Установите библиотеку Python и выполните ее в каталоге Scripts каталога установки Python:
pip install selenium -i https://pypi.douban.com/simple/
Неудачная попытка установки обновления pip: python -m pip install --upgrade pip
Система Windows напрямую загружает 32-разрядную версию, не устанавливайте после загрузки
(1) Импорт: из selenium import webdriver
(2) Создайте объект операции Google Chrome:
path = Путь к файлу драйвера Google Chrome
browser = webdriver.Chrome(path)
(3) Посетите веб-сайт
url = URL для посещения
browser.get(url)
Базовый пример использования:
# (1) Импортировать селен
from selenium import webdriver
# Путь к загруженному файлу селена после распаковки помещается в каталог lib/ проекта.
path = 'lib/chromedriver.exe'
# (2) Создайте объект действия браузера
browser = webdriver.Chrome(path)
# (3) Посетите веб-сайт
# url = 'https://www.baidu.com'
#
# browser.get(url)
url = 'https://www.jd.com/'
browser.get(url)
# page_source получает исходный код веб-страницы
content = browser.page_source
print(content)
Автоматизация должна имитировать операции мыши и клавиатуры для управления этими элементами, щелчками, вводом и т. д. Прежде чем приступить к работе с этими элементами, сначала Чтобы их найти, WebDriver предоставляет множество методов поиска элементов.
Синтаксис Google Chrome версии 103
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
s = Service(r'lib/chromedriver.exe')
browser = webdriver.Chrome(service=s)
url = 'https://www.baidu.com'
browser.get(url)
# позиционирование элемента
# Найти объекты по идентификатору Синтаксис старой версии: find_element_by_id
button = browser.find_element(By.ID, 'su')
print(button)
# Получите объект на основе значения атрибута тега. Синтаксис старой версии: find_element_by_name.
button = browser.find_element(By.NAME, 'wd')
print(button)
# Получить объекты на основе операторов XPath Синтаксис старой версии: find_elements_by_xpath
button = browser.find_elements(By.XPATH, '//input[@id="su"]')
print(button)
# Получить объект на основе имени тега Синтаксис старой версии: find_elements_by_tag_name
button = browser.find_elements(By.TAG_NAME, 'input')
print(button)
# Используйте синтаксис bs4 для получения объектов, синтаксис старой версии: find_elements_by_css_selector
button = browser.find_elements(By.CSS_SELECTOR, '#su')
print(button)
# Синтаксис старой версии: find_element_by_link_text.
button = browser.find_element(By.LINK_TEXT, «Сетевой диск»)
print(button)
Синтаксис Google Chrome версии 103
Получить атрибуты элемента
Получить текст элемента
Получить имя тега
Пример:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
s = Service(r'lib/chromedriver.exe')
browser = webdriver.Chrome(service=s)
url = 'http://www.baidu.com'
browser.get(url)
# Получить элемент с идентификатором su
input = browser.find_element(By.ID, 'su')
# Получить свойства метки
print(input.get_attribute('class'))
# Получить название лейбла
print(input.tag_name)
# Получить атрибут значения элемента
print(input.get_attribute('value'))
# Получить текст элемент, который представляет собой текст непосредственно между двумя тегами
a = browser.find_element(By.LINK_TEXT, 'новости')
print(a.text)
Нажмите: нажмите()
Ввод: send_keys()
Обратная операция: браузер.back()
Операция вперед: браузер.forword()
Имитировать прокрутку JS: js='document.documentElement.scrollTop=100000'
browser.execute_script(js) Выполнить js-код
Получите код веб-страницы: page_source
покидать:browser.quit()
Пример:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
import time
# Создать объект браузера
s = Service(r'lib/chromedriver.exe')
browser = webdriver.Chrome(service=s)
# url
url = 'https://www.baidu.com'
browser.get(url)
time.sleep(2)
# Получить объект текстового поля
input = browser.find_element(By.ID, 'kw')
# Введите селен в текстовое поле
input.send_keys('selenium')
time.sleep(2)
# Получить Baidu нажмите кнопку
button = browser.find_element(By.ID, 'su')
# нажмите кнопку
button.click()
time.sleep(2)
# Сползите на дно, Фиксированный метод записи Обычно пишут 100000
js_bottom = 'document.documentElement.scrollTop=100000'
browser.execute_script(js_bottom)
time.sleep(2)
# Кнопка перехода на следующую страницу
next = browser.find_element(By.XPATH, '//a[@class="n"]')
# Нажмите следующую страницу
next.click()
time.sleep(3)
# Вернуться на предыдущую страницу
browser.back()
time.sleep(3)
# Вернитесь снова, идите вперед
browser.forward()
time.sleep(3)
# покидать
browser.quit()
Эффект исполнения:
https://live.csdn.net/v/embed/221168
2022.07.02-15.57.51