Селен

Автоматизация на браузъра с помощта на селен (Python)

Автоматизация на браузъра с помощта на селен (Python)
СЕЛЕН е уеб базиран инструмент с отворен код, който се използва за управление на уеб браузъра чрез много езици за програмиране. Това е инструмент на трета страна и е достъпен за много езици за програмиране (напр.ж. Java, Python, C #, PHP и т.н.). Той има поддръжка за почти всички браузъри. В този урок ще разгледаме как да използваме Selenium с Python, защото Python осигурява удобна среда за използване на този инструмент. API за селен за Python позволява на вашата програма директно да контролира вашия браузър по подобен начин, както го прави човек. Той може да отваря нови раздели за вас, да попълва вашата информация, да изпраща формуляри, да кликва върху различни връзки и други подобни действия. Тук ще видим как автоматизираме нашия уеб браузър, използвайки селен с Python.

Инсталация на селен

Преди да използвате СЕЛЕН модул в python, трябва да го инсталираме. Изпълнете следната команда в терминала, за да го инсталирате.

pip инсталирайте селен

ИЛИ

pip3 инсталиране на селен

Това ще инсталира СЕЛЕН модул и вече е готов за използване.

Уеб драйвери

Преди да автоматизирате уеб браузъра с помощта на модула SELENIUM, е необходим уеб драйвер на избрания браузър. За да автоматизираме браузъра Chrome, трябва да имаме уеб драйвер за Chrome. Пътят, където е поставен файлът на уеб драйвера, се предава като аргумент. Уеб драйверът взаимодейства с уеб браузъра чрез протокол. Отидете на следната връзка, за да изтеглите уеб драйвери на различни браузъри.

https: // www.селен hq.org / изтегляне /

Приготвяме се да започнем

След като инсталирате необходимите модули, можете да отворите python CLI и да започнете да играете с вашия браузър. Така че нека първо импортираме webdriver и други модули, тези модули и класове ще позволят на вашата програма Python да изпраща натискания на клавиши и друга информация към вашия браузър.

C: \ Потребители \ Usama Azad> python
Python 3.6.4 (v3.6.4: d48eceb, 19 декември 2017 г., 06:54:40) [MSC v.1900 64 бита (AMD64)] на win32
Напишете "помощ", "авторско право", "кредити" или "лиценз" за повече информация.
>>> от webdriver за импортиране на селен
>>> от селен.уеб драйвер.често срещани.ключове за импортиране
#path към вашите chrome драйвери
>>> драйвер = webdriver.Chrome ('C: \ chromedriver')

Това ще отвори нов прозорец на браузъра Chrome за вас. Сега можете да получите селен, за да отидете на всеки уебсайт, който използвате .get () метод. Този метод отваря уебсайта и ще изчака да се зареди, след което можете да въведете следващата си команда.

>>> драйвер.get ("https: // www.facebook.com ")

Как да намерите елементи в уеб страница

Можем да намерим конкретен елемент на уеб страница, като следваме метода.

Намиране на елементи с помощта на селен

За да намерим елементи на уеб страница, използваме 'намери_елемент'метод. Следват "намери_елемент'методи, налични в СЕЛЕН.

Използвайки горните методи, можем да намерим елемент на уеб страница и да го използваме в нашия код за автоматизация.

Кликване върху различни елементи на уеб страница

Методът click () в селен може да се използва за щракване върху различни връзки и елементи на бутони, които сте намерили, използвайки горните методи. Например искате да кликнете върху „Забравен акаунт?”На страницата във Facebook

>>> link_button = драйвер.find_element_by_link_text ('Забравен акаунт?')
>>> бутон за връзка.щракнете ()

Изпратете специални ключове

Селенът също има модул, който ви позволява да изпращате специални ключове (напр.g, Enter, Escape, Page down, page up etc и др.), докато сърфирате в мрежата. Трябва да импортирате този модул, като използвате следната команда

>>> от селен.уеб драйвер.често срещани.ключове за импортиране

Например четете статия в Уикипедия за историята на Съединените щати, но сте мързеливи да натиснете стрелката НАДОЛУ след известно време. Можете да автоматизирате, като изпратите този ключ на браузъра с помощта на Selenium

от webdriver за импортиране на селен
от селен.уеб драйвер.често срещани.ключове за импортиране
време за импортиране
драйвер = webdriver.Chrome ('C: \ chromedriver')
# Отворете връзката към статията, като използвате метода get
шофьор.get ("https: // en.wikipedia.org / wiki / United_States ")
# Започнете от началото на страницата
elem = драйвер.find_element_by_tag_name ('html')
докато е вярно:
 
време.сън (5)
елем.send_keys (Клавиши.НАДОЛУ)

Как да автоматизирате браузъра

В този раздел ще видим как да автоматизираме нашия уеб браузър с помощта на някои случаи на употреба.

Влезте автоматично в уебсайтовете на социалните медии

С уеб автоматизацията можете лесно да направите автоматичното си влизане в процес. Ако редовно проверявате уебсайтовете си в социалните медии (да речем 20:00), добре е да автоматизирате този процес. Следва кодът за автоматизиране на регистрирането в процеса на използване на два сайта за социални медии „facebook“ и „twitter“ СЕЛЕН модул в Python.

# импортиране на webdriver от модул селен
от webdriver за импортиране на селен
 
# импортиране на специални ключове от селен
от селен.уеб драйвер.често срещани.ключове за импортиране
 
# създаване на обект „драйвер“ за „Google-Chrome“
драйвер = webdriver.Chrome („път към драйвера на Chrome“)
 
# максимизиране на прозореца
шофьор.maximize_window ()
 
# отваряне на facebook
шофьор.получи ('http: // www.facebook.com')
 
# намиране на елемент „Имейл или телефон“ с помощта на атрибут „id“
userName = драйвер.find_element_by_id ('имейл')
 
# Въвеждане на потребителско име или имейл за facebook
потребителско име.send_keys ('Въведете потребителско име / имейл')
 
# намиране на елемент „Парола“ с помощта на атрибут „id“
passWord = драйвер.find_element_by_id ('pass')
 
# въвеждане на парола за facebook
passWord.send_keys ("Въведете парола")
 
# намиране на елемент „бутон за вход“ с помощта на атрибута „id“ и натискане на „Enter“
шофьор.find_element_by_id ('u_0_b').send_keys (Клавиши.ENTER)
 
# отваряне на нов раздел за Twitter
шофьор.execute_script ("прозорец.отворен ('http: // www.Twitter.com ',' tab2 '); ")
 
# превключване към нов раздел
шофьор.switch_to_window ('tab2')
 
#locating 'log in' елемент и щракване върху него
шофьор.find_element_by_xpath ('// * [@ id = "doc"] / div / div [1] / div [1] / div [2] / div [1]').щракнете ()
 
# намиране на елемент „Телефон, имейл или потребителско име“
userName = драйвер.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form /
fieldset / div [1] / input ')
 
# въвеждане на потребителско име за Twitter
потребителско име.send_keys ('Въведете потребителско име')
 
# намиране на елемент „Парола“
passWord = драйвер.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form /
fieldset / div [2] / input ')
# въвеждане на парола за Twitter
passWord.send_keys ('Въведете парола')
# намиране на бутон 'log in' и кликване върху него
шофьор.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form / div [2] / button')
.щракнете ()

Горният код автоматизира браузъра за влизане в уебсайтове на социални медии. Преди всичко създадохме обект от любимия ни браузър. В този случай на използване сме взели „Chrome“ като браузър. За да създадем обект, ние преминахме пътя на нашия 'chromedriver' като аргумент. След това въведохме URL адреса на facebook и влязохме във Facebook, като избрахме елементи и предадохме потребителско име и парола.

След това отворихме нов раздел и въведохме URL адреса на Twitter. След това преминахме към новия раздел, тъй като контролът на кода все още беше на първия раздел, въпреки че вторият раздел беше отворен. След това влязохме в Twitter, като избрахме елементи и предадохме потребителско име и парола.

Автоматизация на онлайн пазаруването

Друг добър пример за автоматизация на браузъра може да бъде онлайн пазаруването. Например искате да закупите камера онлайн, но цените са твърде високи. Всеки ден проверявате дали цената е във вашия диапазон или не. Тази задача може да бъде автоматизирана с помощта СЕЛЕН и можете да избегнете проверката на цената всеки ден. Следващият код ще ви информира по пощата дали цената на желания от вас продукт е достъпна или не. Ако желаният от вас продукт се продава, програмата ще ви уведоми по имейл.

# импортиране на webdriver от модул селен
от webdriver за импортиране на селен
 
# импортиране на smtplib модул за изпращане на поща
внос smtplib
 
# дефиниране на пощенска функция за информиране чрез имейл
def mail ():
 
# установяване на връзка с gmail сървъра с име на домейн и номер на порт. 
Това се различава при всеки доставчик на електронна поща
връзка = smtplib.SMTP ('smtp.gmail.com ', 587)
 
# поздравете сървъра
Връзка.ehlo ()
 
# стартиране на криптирана TLS връзка
Връзка.starttls ()
 
# влезте в gmail сървъра с вашия основен адрес и парола
Връзка.вход ('имейл адрес на подателя', 'парола')
 
# изпращане на поща до себе си с информация за цената на камерата
Връзка.sendmail ('пощенски адрес на подателя', 'пощенски адрес на получателя',
„Тема: Можете да закупите камерата“)
 
# завършваща връзка
Връзка.изход ()
# функцията за поща завършва тук
 
# стартиране на google chrome чрез предоставяне на път на chromedriver като аргумент
драйвер = webdriver.Chrome („път към chromedriver“)
 
# минимизиране на хромирания прозорец
шофьор.minimize_window ()
 
# отваряне на драз.pk сайт
шофьор.получи ('https: // www.daraz.pk /')
 
# локализиране на елемент от лентата за търсене с помощта на атрибут id за търсене на камера
searchBar = драйвер.find_element_by_id ('q')
 
#writing камера в лентата за търсене
searchBar.send_keys ('камера')
 
#locating елемент на бутона за търсене с помощта на xpath на елемента
търсене = драйвер.find_element_by_xpath ('// * [@ id = "topActionHeader"] / div / div [2] / div / div [2]
/ form / div / div [2] / бутон ')
 
# кликване върху бутона за търсене
Търсене.щракнете ()
 
# намиране на елемент на желания от вас продукт с помощта на атрибут xpath
продукт = драйвер.find_element_by_xpath ('// * [@ id = "root"] / div / div [3] / div [1] / div / div [1]
/ div [2] / div [1] / div / div / div [2] / div [2] / a ')
 
# щракване върху желания от вас продукт
продукт.щракнете ()
 
# локализиране на елемент на цената с помощта на атрибут xpath
цена = драйвер.find_element_by_xpath ('// * [@ id = "module_product_price_1"] / div / div / span')
 
# извличане на текст от ценовия елемент. Това дава цена на продукта като „Rs. 24 500 '
цена = цена.текст
 
# преобразуване на цената в низ
Цена = str (цена)
 
# дефиниране на празен масив. Това ще се използва за извличане на цифри от цена като '24500'
форма 'Rs. 24 500 '
num = []
 
# четене на всички записи на ценови низ един по един с помощта на цикъл for
за x в цена:
 
# проверяваме дали записът е цифров или не, тъй като искаме само цифри в цената
ако x.isdigit ():
 
# добавяне само на цифри към списъка с номера
брой.добавяне (x)
 
# присъединяване към всички записи на списъка с номера. Сега цената е низ, съдържащ само цифри
цена = ".присъединяване (брой)
 
# преобразуване на низ от цена в цяло число
цена = int (цена)
 
# проверка дали цената е достъпна или не
ако цена <= 25000:
 
# функция за повикване на поща, за да ви информира за цената
поща ()
 
# затваряне на браузъра
шофьор.изход ()

Над кода се отваря daraz.pk сайт и търси камерата и ви информира по имейл дали цената е достъпна. Преди всичко внесохме СЕЛЕН и SMTPLIB модули. След това дефинирахме функцията „поща“, която ви изпраща поща, която ви информира, че цената е достъпна, когато бъде извикана.

След това отворихме браузъра chrome с помощта на chromedriver и потърсихме „daraz.pk '. След това намираме желания от нас продукт, като използваме елементи и техните атрибути. Как се намират и намират елементи, е описано по-горе. Цената, която получихме, беше низ, така че преобразувахме този низ в цяло число и след това проверихме дали цената е достъпна или не. Ако цената е достъпна, извикайте функцията „поща“.

Създаване на Cron работа

Над два автоматични скрипта се изискват да се изпълняват веднъж на ден в точно определено време. Можем да управляваме това с помощта на cron job. Задачите, които се добавят към crontab, могат да се изпълняват в определен момент многократно. За да добавите горните задачи в crontab, първо изпълнете следната команда в терминала на Linux.

[имейл защитен]: ~ $ crontab -e

Горната команда ще отвори crontab файл за редактиране. В края на файла въведете следната команда.

0 8 * * * python / path / to / python / script

Виждаме записи преди команда отдясно наляво.

Така че тази команда ще се изпълнява в 8 часа всеки ден.

Заключение

В тази статия обсъдихме как можете да използвате СЕЛЕН заедно с Python за автоматизиране на браузъра ви, използвайки различни техники. Можете да автоматизирате ежедневната си рутинна работа, да попълвате формуляри, да изтегляте нещата си и много неща, като го използвате. Тук обсъдихме само два примера, но можете да автоматизирате всяко нещо, което човек може да направи ръчно с браузъра.

Бутонът на левия бутон на мишката не работи в Windows 10
Ако използвате специална мишка с вашия лаптоп или настолен компютър, но бутонът на левия бутон на мишката не работи на Windows 10/8/7 по някаква причи...
Курсорът скача или се движи произволно, докато пишете в Windows 10
Ако установите, че курсорът на вашата мишка скача или се движи самостоятелно, автоматично, произволно, докато пишете в лаптоп или компютър на Windows,...
Как да обърнете посоката на превъртане на мишката и тъчпада в Windows 10
Мишка и Тъчпадs не само правят изчисленията лесни, но и по-ефективни и отнемат по-малко време. Не можем да си представим живот без тези устройства, но...