Pemasangan Selenium
Sebelum menggunakan SELENIUM modul dalam python, kita mesti memasangnya. Jalankan arahan berikut di terminal untuk memasangnya.
memasang pip seleniumATAU
pip3 memasang seleniumIni 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 sawaPython 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.
- Pertama sekali, tekan F12 Halaman sumber dibuka di sebelah kanan tetingkap seperti yang ditunjukkan di bawah
- Sekarang tekan 'Ctrl + Shift + C'atau klik pada simbol yang terdapat di sudut kiri atas halaman sumber.
- Gerakkan anak panah pada 'Emel atau telefonmedan dan klik. Elemen ini akan dipilih dan kod sumber elemen ini diserlahkan pada halaman sumber seperti yang ditunjukkan di bawah. Dapat dilihat bahawa, kita mempunyai atribut berikut untuk elemen terpilih
- nama = "e-mel"
- class = "inputtext login_form_input_box"
- id = "e-mel"
Kami dapat mencari 'Emel atau telefonelemen dengan menggunakan salah satu atribut di atas.
- Sekiranya kita tidak mempunyai salah satu atribut yang disebutkan di atas maka kita juga dapat memilih elemen menggunakan 'XPath'. Untuk menyalin XPath, klik kanan pada kod sumber yang disorot di halaman sumber. Kemudian pergi ke 'Salin> Salin XPath'.
Mengesan Elemen menggunakan Selenium
Untuk mencari elemen di laman web kami menggunakan 'cari_elemenkaedah. Berikut adalah 'cari_elemenkaedah yang terdapat di SELENIUM.
- cari_element_by_class_name (nama)
- cari_element_by_tag_name (nama)
- cari_element_by_link_text (teks)
- find_element_by_css_selector (pemilih)
- cari_element_by_name (nama)
- cari_element_by_id (id)
- cari_element_by_xpath (XPath)
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 KekunciContohnya, 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 seleniumdari 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 seleniumdari 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 seleniumdari 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 -ePerintah di atas akan membuka fail crontab untuk diedit. Pada akhir fail masukkan arahan berikut.
0 8 * * * python / path / to / python / scriptKami melihat entri sebelum arahan dari kanan ke kiri.
- Tanda bintang pertama, dari kanan, bermaksud perintah ini akan dijalankan setiap hari dalam seminggu.
- Asterisk kedua bermaksud arahan ini akan dijalankan setiap bulan
- Asterisk ketiga menunjukkan bahawa arahan ini akan dijalankan setiap hari dalam sebulan
- Entri keempat adalah '8', yang bermaksud skrip ini akan berjalan pada jam 8 hari
- Entri kelima iaitu '0' bermaksud arahan ini akan dijalankan pada minit ke-0.
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.