Базовый скрипт Python для веб-скрейпинга (автоматизация веб) с помощью Selenium

  • Автор темы ceviche
  • Дата начала
  • Просмотров 582 Просмотров
  • Внимание! В разделе большое количество не проверенных программ. Мы не рекомендуем использовать их на основном ПК, без предварительной проверки.

ceviche

Новорег
3
0
18 Янв 2025
Всем привет,

Если кто еще не в курсе о такой штуке как Selenium -библиотека Python позволяет открывать сайты удаленно, собирать с них информацию, имитировать мышку и клавиатуру. В условиях нынешних блокировок и детектеров ВПН на многих сайтах работает например в связке VPS + firefox -headless + selenium.

Грамотно написанная программа не детектится как crawler (робот-ползун), поскольку сидим на firefox

То есть, арендуем самый простенький сервер с ОС Линукс, где нам необходимо, и далее:
(примеры кода с системы Debian 10)

Bash:
root@me:~$ apt install python3-pip
root@me:~$ pip3 install selenium
root@me:~$ apt install firefox


Пример скрипта:
Python:
import time
from time import sleep
from time import time

import sys

from selenium import webdriver
from selenium.webdriver import FirefoxOptions
from selenium.webdriver import Keys, ActionChains
from selenium.webdriver.common.actions.action_builder import ActionBuilder
from selenium.webdriver.common.by import By
from selenium.common import NoSuchElementException, ElementNotInteractableException
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

options = FirefoxOptions()
options.add_argument("-headless")
options.add_argument("--width=1920")
options.add_argument("--height=1080")
with webdriver.Firefox(options=options) as driver:

   driver.get("https://example.com")
   #print(driver.page_source)
  
   wait = WebDriverWait(driver, timeout=10)

   wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[class='input")))
   driver.save_screenshot('/root/client/page1.png')
   sleep(1)
   ActionChains(driver)\
       .key_down(Keys.TAB)\
       .key_up(Keys.TAB)\
       .perform()
   sleep(1)
   ActionChains(driver)\
       .send_keys("SECReT")\
       .perform()
   sleep(1)
   ActionChains(driver)\
       .key_down(Keys.ENTER)\
       .key_up(Keys.ENTER)\
       .perform()
   sleep(10)

То есть в примере данной программы наша программа делает сама по себе следующие шаги:
1) driver.get() - загружает сайт
2) WebDriverWait() ждет 10 секунд чтобы страница прогрузилась
3) wait.until(EC.element_to_be_clickable()) рассмотрев нужный нам элемент разметки в режиме разработчика в нормальном браузере - убеждаемся что элемент загрузился (в нашем случае это кнопка, button)
4) driver.save_screenshot() сохраняем скриншот страницы
5) ActionChains - нажимаем клавиши с задержкой в 1 секунду между нажатиями, перемещаясь между элементами страницы с помощью клавиши TAB
6) sleep(10) - после отправки формы ждем 10 секунд для загрузки дальнейшего динамического контента страницы
Библиотека включает в себя многие другие функции, управление мышью, колесиком мыши, клавишами мыши. Здесь только ваше воображение является пределом

По большому счету работаем "в перчатках", программа выполняет действия за вас
 
Последнее редактирование:

Похожие темы