Selenium

Automasi Penyemak Imbas Menggunakan Selenium (Python)

Automasi Penyemak Imbas Menggunakan Selenium (Python)
SELENIUM adalah alat berasaskan web & sumber terbuka yang digunakan untuk mengawal penyemak imbas web melalui banyak bahasa pengaturcaraan. Ini adalah alat pihak ketiga dan tersedia untuk banyak bahasa pengaturcaraan (e.g. Java, Python, C #, PHP dll.). Ia mempunyai sokongan untuk hampir semua penyemak imbas. Dalam tutorial ini, kita akan melihat cara menggunakan Selenium dengan Python kerana Python menyediakan persekitaran yang selesa untuk menggunakan alat ini. Selenium API untuk Python membolehkan program anda mengendalikan penyemak imbas anda secara langsung dengan cara yang serupa dengan manusia. Ia boleh membuka tab baru untuk anda, mengisi maklumat anda, menghantar borang, klik pada pautan yang berbeza dan tindakan serupa yang lain. Di sini kita akan melihat bagaimana kita mengautomasikan penyemak imbas web kita menggunakan selenium dengan Python.

Pemasangan Selenium

Sebelum menggunakan SELENIUM modul dalam python, kita mesti memasangnya. Jalankan arahan berikut di terminal untuk memasangnya.

memasang pip selenium

ATAU

pip3 memasang selenium

Ini akan dipasang SELENIUM modul dan kini sudah siap digunakan.

Pemacu Web

Sebelum mengautomasikan penyemak imbas web menggunakan modul SELENIUM, pemandu web penyemak imbas pilihan diperlukan. Untuk mengautomasikan Penyemak Imbas Chrome, kita mesti mempunyai pemacu web Chrome. Laluan, di mana fail pemacu web diletakkan, diteruskan sebagai argumen. Pemacu web berinteraksi dengan penyemak imbas web melalui protokol. Pergi ke pautan berikut untuk memuat turun pemacu Web penyemak imbas yang berbeza.

https: // www.seleniumhq.org / muat turun /

Bermula

Setelah memasang modul yang diperlukan, anda dapat membuka python CLI dan mula bermain dengan penyemak imbas anda. Oleh itu mari kita mengimport pemacu web dan modul lain terlebih dahulu, modul dan kelas ini akan membolehkan program Python anda menghantar penekanan kekunci dan maklumat lain ke penyemak imbas anda.

C: \ Users \ Usama Azad> ular sawa
Python 3.6.4 (v3.6.4: d48eceb, 19 Dis 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)] pada win32
Ketik "bantuan", "hak cipta", "kredit" atau "lesen" untuk maklumat lebih lanjut.
>>> dari pemacu web import selenium
>>> dari selenium.pemacu laman web.biasa.kunci import Kekunci
# laluan ke pemacu krom anda
>>> pemacu = pemacu web.Chrome ('C: \ chromedriver')

Ini akan membuka tetingkap penyemak imbas Chrome baru untuk anda. Sekarang anda boleh mendapatkan selenium untuk pergi ke laman web mana pun menggunakan .kaedah (). Kaedah ini membuka laman web dan akan menantinya dimuat, maka anda boleh memasukkan perintah anda yang seterusnya.

>>> pemandu.dapatkan ("https: // www.facebook.com ")

Bagaimana Mencari Elemen dalam Halaman Web

Kita dapat mencari elemen tertentu di laman web dengan mengikuti kaedah.

Mengesan Elemen menggunakan Selenium

Untuk mencari elemen di laman web kami menggunakan 'cari_elemenkaedah. Berikut adalah 'cari_elemenkaedah yang terdapat di SELENIUM.

Dengan menggunakan kaedah di atas, kita dapat mencari elemen di laman web dan menggunakannya dalam kod automasi kita.

Mengklik Elemen laman web yang berbeza

kaedah klik () dalam selenium boleh digunakan untuk mengklik pada pautan dan elemen butang yang anda dapati menggunakan kaedah di atas. Contohnya, anda mahu mengklik “Terlupa akaun?”Di laman Facebook

>>> link_button = pemacu.find_element_by_link_text ('Lupa akaun?')
>>> butang pautan.klik ()

Hantar Kunci Khas

Selenium juga mempunyai modul yang membolehkan anda menghantar kunci khas (e.g, Enter, Escape, Page down, page up dll) semasa melayari laman web. Anda perlu mengimport modul ini menggunakan arahan berikut

>>> dari selenium.pemacu laman web.biasa.kunci import Kekunci

Contohnya, anda sedang membaca artikel di Wikipedia mengenai sejarah Amerika Syarikat, tetapi anda terlalu malas untuk menekan butang DOWN Arrow setelah beberapa ketika. Anda boleh mengautomasikan dengan menghantar kunci ini ke penyemak imbas menggunakan Selenium

dari pemacu web import selenium
dari selenium.pemacu laman web.biasa.kunci import Kekunci
masa import
pemacu = pemacu web.Chrome ('C: \ chromedriver')
#Buka pautan artikel menggunakan kaedah get
pemandu.dapatkan ("https: // en.wikipedia.org / wiki / United_States ")
#Mulakan dari awal halaman
elem = pemandu.cari_element_by_tag_name ('html')
Walaupun Betul:
 
masa.tidur (5)
elem.send_keys (Kekunci.TURUN)

Cara Automatik Penyemak Imbas

Di bahagian ini kita akan melihat bagaimana mengautomasikan penyemak imbas web kita dengan bantuan beberapa kes penggunaan.

Log masuk ke Laman Web Media Sosial Secara Automatik

Dengan automasi web, anda dapat membuat proses log masuk anda secara automatik. Sekiranya anda memeriksa laman web media sosial anda pada waktu tertentu (katakan 8 malam) secara berkala, ada baiknya anda mengotomatisasi proses ini. Berikut ini adalah kod untuk mengotomatisasi proses log masuk menggunakan dua laman media sosial 'facebook' dan 'twitter' SELENIUM modul di Python.

# mengimport pemacu web dari modul selenium
dari pemacu web import selenium
 
# mengimport Kekunci khas dari selenium
dari selenium.pemacu laman web.biasa.kunci import Kekunci
 
# membuat objek 'driver' untuk 'Google-Chrome'
pemacu = pemacu web.Chrome ('jalan ke pemacu Chrome')
 
# memaksimumkan tetingkap
pemandu.memaksimumkan_window ()
 
# membuka facebook
pemandu.dapatkan ('http: // www.facebook.com')
 
# mencari elemen 'E-mel atau Telefon' menggunakan atribut 'id'
userName = pemacu.find_element_by_id ('e-mel')
 
# Memasukkan nama pengguna atau e-mel untuk facebook
Nama pengguna.send_keys ('Masukkan Nama Pengguna / E-mel')
 
# cari elemen 'Kata Laluan' menggunakan atribut 'id'
passWord = pemacu.find_element_by_id ('lulus')
 
# memasukkan kata laluan untuk facebook
kata laluan.send_keys ("Masukkan Kata Laluan")
 
# mencari elemen 'butang log masuk' menggunakan atribut 'id' dan menekan 'Enter'
pemandu.cari_element_by_id ('u_0_b').send_keys (Kekunci.MASUK)
 
# membuka tab baru untuk twitter
pemandu.execute_script ("tetingkap.buka ('http: // www.twitter.com ',' tab2 '); ")
 
# beralih ke tab baru
pemandu.switch_to_window ('tab2')
 
#lokasi elemen 'log in' dan klik padanya
pemandu.cari_element_by_xpath ('// * [@ id = "doc"] / div / div [1] / div [1] / div [2] / div [1]').klik ()
 
# mencari elemen 'Telefon, e-mel atau nama pengguna'
userName = pemacu.find_element_by_xpath ('// * [@ id = "halaman-wadah"] / div / div [1] / borang /
medan medan / div [1] / input ')
 
# memasukkan nama pengguna untuk twitter
Nama pengguna.send_keys ('Masukkan Nama Pengguna')
 
# mencari elemen 'Kata Laluan'
passWord = pemacu.find_element_by_xpath ('// * [@ id = "halaman-wadah"] / div / div [1] / borang /
medan medan / div [2] / input ')
# memasukkan kata laluan untuk twitter
kata laluan.send_keys ('Masukkan Kata Laluan')
# cari butang 'log in' dan klik padanya
pemandu.cari_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form / div [2] / butang')
.klik ()

Kod di atas mengautomasikan penyemak imbas untuk masuk ke laman web media sosial. Pertama sekali kami membuat objek penyemak imbas kegemaran kami. Dalam kes penggunaan ini, kami telah menggunakan 'Chrome' sebagai penyemak imbas. Untuk membuat objek, kami melewati jalan 'chromedriver' kami sebagai hujah. Kemudian kami memasukkan url facebook dan log masuk ke Facebook dengan memilih elemen dan meneruskan nama pengguna dan kata laluan.

Selepas ini kami membuka tab baru dan memasukkan url twitter. Selepas ini kami beralih ke tab baru kerana kawalan kod masih ada di tab pertama walaupun tab kedua terbuka. Kemudian kami log masuk ke twitter dengan memilih elemen dan meneruskan nama pengguna dan kata laluan.

Automasi Membeli-belah dalam talian

Contoh automatik penyemak imbas lain yang baik ialah membeli-belah dalam talian. Contohnya, anda ingin membeli kamera dalam talian tetapi harganya terlalu tinggi. Anda memeriksa setiap hari sama ada harganya berada dalam lingkungan anda atau tidak. Tugas ini dapat digunakan secara automatik SELENIUM dan anda boleh mengelakkan pemeriksaan harga setiap hari. Kod berikut akan memberitahu anda melalui surat sama ada harga produk yang anda mahukan berpatutan atau tidak. Sekiranya produk yang anda inginkan dijual, program akan memberitahu anda melalui e-mel.

# mengimport pemacu web dari modul selenium
dari pemacu web import selenium
 
# mengimport modul smtplib untuk menghantar surat
import smtplib
 
# menentukan fungsi surat untuk dimaklumkan melalui e-mel
mel def ():
 
# mewujudkan sambungan ke pelayan gmail dengan nama domain dan nombor port. 
Ini berbeza dengan setiap penyedia e-mel
sambungan = smtplib.SMTP ('smtp.gmail.com ', 587)
 
# bertanya khabar pelayan
sambungan.ehlo ()
 
# memulakan sambungan TLS yang disulitkan
sambungan.permulaan ()
 
# log masuk ke pelayan gmail dengan alamat dan kata laluan utama anda
sambungan.log masuk ('alamat surat pengirim', 'kata laluan')
 
# menghantar surat kepada diri sendiri yang memberitahu anda mengenai harga kamera
sambungan.sendmail ('alamat surat pengirim', 'alamat surat penerima',
'Subjek: Anda boleh Membeli Kamera')
 
# menamatkan sambungan
sambungan.berhenti ()
# fungsi mel berakhir di sini
 
# melancarkan google chrome dengan memberikan jalan kromedriver sebagai hujah
pemacu = pemacu web.Chrome ('jalan ke chromedriver')
 
# mengurangkan tetingkap krom
pemandu.minimumkan_window ()
 
# membuka draz.laman web pk
pemandu.dapatkan ('https: // www.daraz.pk /')
 
# mencari elemen bar carian menggunakan atribut id untuk mencari kamera
searchBar = pemacu.cari_element_by_id ('q')
 
# menulis kamera di bar carian
cariBar.send_keys ('kamera')
 
#lokasi mencari butang elemen menggunakan xpath elemen
cari = pemandu.cari_element_by_xpath ('// * [@ id = "topActionHeader"] / div / div [2] / div / div [2]
/ form / div / div [2] / butang ')
 
#klik butang carian
cari.klik ()
 
# mengesan elemen produk yang anda mahukan menggunakan atribut xpath
produk = pemacu.cari_element_by_xpath ('// * [@ id = "root"] / div / div [3] / div [1] / div / div [1]
/ div [2] / div [1] / div / div / div [2] / div [2] / a ')
 
# klik pada produk yang anda mahukan
produk.klik ()
 
# mengesan unsur harga menggunakan atribut xpath
harga = pemandu.cari_element_by_xpath ('// * [@ id = "module_product_price_1"] / div / div / span')
 
# mengekstrak teks dari elemen harga. Ini memberikan harga produk seperti 'Rs. 24,500 ''
harga = harga.teks
 
# menukar harga menjadi rentetan
Harga = str (harga)
 
# menentukan susunan kosong. Ini akan digunakan dalam mengekstrak angka dari harga seperti '24500'
borang 'Rs. 24,500 ''
angka = []
 
# membaca semua catatan rentetan harga satu persatu menggunakan loop
untuk harga x:
 
# memeriksa sama ada entri adalah digit atau tidak kerana kami hanya mahukan angka digit
sekiranya x.isdigit ():
 
# Menambah digit hanya pada senarai angka
bilangan.tambahkan (x)
 
# menyertai semua entri senarai nombor. Sekarang harganya adalah rentetan yang hanya mengandungi digit
harga = ".sertai (bilangan)
 
# menukar rentetan harga menjadi integer
harga = int (harga)
 
# memeriksa sama ada harganya berpatutan atau tidak
sekiranya harga <= 25000:
 
# fungsi mel memanggil untuk memberitahu anda mengenai harganya
mel ()
 
# menutup penyemak imbas
pemandu.berhenti ()

Kod di atas membuka daraz.laman pk dan mencari kamera dan memberitahu anda melalui e-mel jika harganya berpatutan. Pertama sekali kami mengimport SELENIUM dan SMTPLIB modul. Kemudian kami menentukan fungsi 'mel' yang menghantar e-mel memberitahu anda bahawa harganya berpatutan, apabila dipanggil.

Selepas ini kami membuka penyemak imbas chrome menggunakan chromedriver dan mencari 'daraz.pk '. Kemudian kami mencari produk yang kami mahukan dengan menggunakan unsur dan sifatnya. Bagaimana unsur dijumpai dan dijumpai, telah dijelaskan di atas. Harga yang kami dapat adalah rentetan jadi kami menukar rentetan ini menjadi integer dan kemudian memeriksa sama ada harganya berpatutan atau tidak. Sekiranya harga berpatutan, hubungi fungsi 'mel'.

Membuat kerja Cron

Di atas dua skrip automasi diperlukan untuk dijalankan sekali sehari pada waktu tertentu. Kita boleh menguruskannya dengan menggunakan cron job. Tugas, yang ditambahkan ke crontab dapat dijalankan pada waktu tertentu berulang kali. Untuk menambahkan tugas di atas di crontab, pertama-tama jalankan arahan berikut di Linux Terminal.

[dilindungi e-mel]: ~ $ crontab -e

Perintah di atas akan membuka fail crontab untuk diedit. Pada akhir fail masukkan arahan berikut.

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

Kami melihat entri sebelum arahan dari kanan ke kiri.

Oleh itu, arahan ini akan dijalankan pada jam 8 Jam setiap hari.

Kesimpulannya

Dalam artikel ini, kami membincangkan bagaimana anda boleh menggunakan SELENIUM bersama dengan Python untuk mengautomasikan penyemak imbas anda menggunakan teknik yang berbeza. Anda boleh mengautomasikan kerja rutin harian anda, mengisi borang, memuat turun barang-barang anda dan banyak barang menggunakannya. Kami hanya membincangkan dua contoh di sini, tetapi anda boleh mengotomatisasi setiap perkara yang dapat dilakukan oleh manusia secara manual dengan penyemak imbas.

Pasang permainan Strategi OpenRA terkini di Ubuntu Linux
OpenRA adalah mesin permainan Strategi Masa Nyata / Bebas yang mencipta semula permainan Westwood awal seperti Command & Conquer klasik: Makluman Mera...
Pasang Dolphin Emulator terkini untuk Gamecube & Wii di Linux
Dolphin Emulator membolehkan anda memainkan permainan Gamecube & Wii pilihan anda di Komputer Peribadi Linux (PC). Menjadi emulator permainan sumber ...
Cara Menggunakan Mesin Cheat GameConqueror di Linux
Artikel ini merangkumi panduan mengenai penggunaan mesin cheat GameConqueror di Linux. Ramai pengguna yang bermain permainan di Windows sering menggun...