Selenium

Mengesan Elemen oleh Pemilih CSS dengan Selenium

Mengesan Elemen oleh Pemilih CSS dengan Selenium
Mencari dan memilih elemen dari laman web adalah kunci untuk mengikis web dengan Selenium. Untuk mencari dan memilih elemen dari laman web, anda boleh menggunakan pemilih CSS di Selenium.Dalam artikel ini, saya akan menunjukkan kepada anda cara mencari dan memilih elemen dari laman web menggunakan pemilih CSS di Selenium dengan perpustakaan Selenium python. Oleh itu, mari kita mulakan.

Prasyarat:

Untuk mencuba perintah dan contoh artikel ini, anda mesti ada,

1) Sebaran Linux (sebaiknya Ubuntu) dipasang di komputer anda.
2) Python 3 dipasang pada komputer anda.
3) PIP 3 dipasang pada komputer anda.
4) Python virtualenv pakej yang dipasang di komputer anda.
5) Penyemak imbas web Mozilla Firefox atau Google Chrome yang dipasang di komputer anda.
6) Mesti tahu cara memasang Pemacu Firefox Gecko atau Pemacu Web Chrome.

Untuk memenuhi syarat 4, 5, dan 6, baca artikel saya Pengenalan Selenium dengan Python 3 di Linuxhint.com.

Anda boleh menemui banyak artikel mengenai topik lain di LinuxHint.com. Pastikan anda memeriksanya jika anda memerlukan bantuan.

Menyiapkan Direktori Projek:

Untuk memastikan semuanya teratur, buat direktori projek baru selenium-css-pemilih / seperti berikut:

$ mkdir -pv selenium-css-pemilih / pemacu

Navigasi ke selenium-css-pemilih / direktori projek seperti berikut:

$ cd selenium-css-pemilih /

Buat persekitaran maya Python dalam direktori projek seperti berikut:

$ virtualenv .venv

Aktifkan persekitaran maya seperti berikut:

sumber $ .venv / bin / aktifkan

Pasang perpustakaan Selenium Python menggunakan PIP3 seperti berikut:

$ pip3 memasang selenium

Muat turun dan pasang semua pemacu web yang diperlukan di pemandu / direktori projek. Saya telah menerangkan proses memuat turun dan memasang pemacu web dalam artikel saya Pengenalan Selenium dengan Python 3. Sekiranya anda memerlukan bantuan, cari di LinuxHint.com untuk artikel itu.

Dapatkan Pemilih CSS menggunakan Alat Pembangun Chrome:

Pada bahagian ini, saya akan menunjukkan kepada anda cara mencari pemilih CSS elemen laman web yang ingin anda pilih dengan Selenium menggunakan Alat Pembangun bawaan penyemak imbas Google Chrome.

Untuk mendapatkan pemilih CSS menggunakan penyemak imbas web Google Chrome, buka Google Chrome dan lawati laman web dari mana anda ingin mengekstrak data. Kemudian, tekan butang kanan tetikus (RMB) di kawasan kosong halaman dan klik Periksa untuk membuka Alat Pembangun Chrome.

Anda juga boleh menekan + Pergeseran + Saya untuk membuka Alat Pembangun Chrome.

Alat Pembangun Chrome hendaklah dibuka.

Untuk mencari representasi HTML elemen halaman web yang anda inginkan, klik pada Periksa() ikon seperti yang ditandakan pada tangkapan skrin di bawah.

Kemudian, arahkan kursor ke elemen halaman web yang anda inginkan dan tekan butang kiri tetikus (LMB) untuk memilihnya.

Perwakilan HTML elemen web yang anda pilih akan disorot di Unsur tab dari Alat Pembangun Chrome seperti yang anda lihat dalam tangkapan skrin di bawah.

Untuk mendapatkan pemilih CSS elemen yang anda inginkan, pilih elemen dari Unsur tab dari Alat Pembangun Chrome dan klik kanan (RMB) di atasnya. Kemudian, pilih Salinan > Salin pemilih seperti yang ditandakan pada tangkapan skrin di bawah.

Saya telah menampal pemilih CSS dalam penyunting teks. Pemilih CSS kelihatan seperti yang ditunjukkan dalam tangkapan skrin di bawah.

Dapatkan Pemilih CSS menggunakan Firefox Developer Tool:

Di bahagian ini, saya akan menunjukkan kepada anda bagaimana mencari pemilih CSS elemen laman web yang ingin anda pilih dengan Selenium menggunakan Alat Pembangun terbina dalam penyemak imbas web Mozilla Firefox.

Untuk mendapatkan pemilih CSS menggunakan penyemak imbas web Firefox, buka Firefox dan lawati laman web dari mana anda ingin mengekstrak data. Kemudian, tekan butang kanan tetikus (RMB) di kawasan kosong halaman dan klik Periksa Elemen (Q) untuk membuka Alat Pembangun Firefox.

Alat Pembangun Firefox hendaklah dibuka.

Untuk mencari representasi HTML elemen halaman web yang anda inginkan, klik pada Periksa() ikon seperti yang ditandakan pada tangkapan skrin di bawah.

Kemudian, arahkan kursor ke elemen halaman web yang anda inginkan dan tekan butang kiri tetikus (LMB) untuk memilihnya.

Perwakilan HTML elemen web yang anda pilih akan disorot di Pemeriksa tab dari Alat Pembangun Firefox seperti yang anda lihat dalam tangkapan skrin di bawah.

Untuk mendapatkan pemilih CSS elemen yang anda inginkan, pilih elemen dari Pemeriksa tab dari Alat Pembangun Firefox dan klik kanan (RMB) di atasnya. Kemudian, pilih Salinan > Pemilih CSS seperti yang ditandakan pada tangkapan skrin di bawah.

Pemilih CSS elemen yang anda mahukan akan kelihatan seperti ini.

Mengekstrak Data menggunakan CSS Selector dengan Selenium:

Pada bahagian ini, saya akan menunjukkan kepada anda cara memilih elemen halaman web dan mengekstrak data daripadanya menggunakan pemilih CSS dengan perpustakaan Selenium Python.

Pertama, buat skrip Python baru ex00.py dan taipkan baris kod berikut.

dari pemacu web import selenium
dari selenium.pemacu laman web.biasa.kunci import Kekunci
dari selenium.pemacu laman web.biasa.oleh import Oleh
pilihan = pemacu web.Pilihan Chrome ()
pilihan.tanpa kepala = Betul
penyemak imbas = pemacu web.Chrome (executable_path = "./ driver / chromedriver ", options = pilihan)
penyemak imbas.dapatkan ("https: // www.cap unixtimest.com / ")
cap waktu = penyemak imbas.cari_element_by_css_selector ('h3.bahaya teks: anak ke-3 (3) ')
cetak ('Cap waktu semasa:% s'% (cap waktu.teks.berpisah (") [0]))
penyemak imbas.tutup ()

Setelah selesai, simpan ex00.py Skrip Python.

Baris 1-3 mengimport semua komponen Selenium yang diperlukan.

Baris 5 membuat objek Pilihan Chrome dan baris 6 membolehkan mod tanpa kepala untuk penyemak imbas web Chrome.

Baris 8 membuat Chrome penyemak imbas objek menggunakan kromedriver binari dari pemandu / direktori projek.

Baris 10 memberitahu penyemak imbas memuatkan cap laman web unixtimestamp.com.

Baris 12 menemui elemen yang mempunyai data cap waktu dari halaman menggunakan pemilih CSS dan menyimpannya di cap waktu pemboleh ubah.

Baris 13 menguraikan data cap waktu dari elemen dan mencetaknya pada konsol.

Ini adalah bagaimana struktur HTML data cap waktu UNIX di unixtimestamp.com kelihatan seperti.

Baris 14 menutup penyemak imbas.

Jalankan skrip Python ex00.py seperti berikut:

$ python3 ex00.py

Seperti yang anda lihat, data cap waktu dicetak di skrin.

Di sini, saya telah menggunakan penyemak imbas.find_element (Oleh, pemilih) kaedah.

Oleh kerana kita menggunakan pemilih CSS, parameter pertama adalah Oleh.CSS_SELECTOR dan parameter kedua akan menjadi pemilih CSS itu sendiri.

Bukannya penyemak imbas.cari_elemen () kaedah, anda juga boleh menggunakan penyemak imbas.find_element_by_css_selector (pemilih) kaedah. Kaedah ini hanya memerlukan pemilih CSS untuk berfungsi. Hasilnya akan sama.

The penyemak imbas.cari_elemen () dan penyemak imbas.cari_element_by_css_selector () kaedah digunakan untuk mencari dan memilih satu elemen dari laman web. Sekiranya anda ingin mencari dan memilih beberapa elemen menggunakan pemilih CSS, maka anda harus menggunakan penyemak imbas.cari_ elemen () dan penyemak imbas.cari_elemen_by_css_selektor () kaedah.

The penyemak imbas.cari_ elemen () kaedah mengambil hujah yang sama dengan penyemak imbas.cari_elemen () kaedah.

The penyemak imbas.cari_elemen_by_css_selector () kaedah mengambil hujah yang sama dengan penyemak imbas.cari_element_by_css_selector () kaedah.

Mari lihat contoh mengekstrak senarai nama menggunakan pemilih CSS dari penjana nama rawak.maklumat dengan Selenium.

Seperti yang anda lihat, senarai yang tidak disusun mempunyai nama kelas senarai nama. Jadi, kita boleh menggunakan pemilih CSS .namaSenarai li untuk memilih semua nama dari laman web.

Mari kita teliti contoh memilih beberapa elemen dari laman web menggunakan pemilih CSS.

Buat skrip Python baru ex01.py dan taipkan baris kod berikut di dalamnya.

dari pemacu web import selenium
dari selenium.pemacu laman web.biasa.kunci import Kekunci
dari selenium.pemacu laman web.biasa.oleh import Oleh
pilihan = pemacu web.Pilihan Chrome ()
pilihan.tanpa kepala = Betul
penyemak imbas = pemacu web.Chrome (executable_path = "./ driver / chromedriver ", options = pilihan)
penyemak imbas.dapatkan ("http: // rawak-nama-penjana.maklumat / ")
nama = penyemak imbas.find_elements (Oleh.CSS_SELECTOR, '.namaSenarai li ')
untuk nama dalam nama:
mencetak (nama.teks)
penyemak imbas.tutup ()

Setelah selesai, simpan ex01.py Skrip Python.

Baris 1-8 sama seperti di ex00.py Skrip Python. Jadi, saya tidak akan menerangkannya di sini lagi.

Baris 10 memberitahu penyemak imbas untuk memuatkan penjana nama rawak laman web.maklumat.

Baris 12 memilih senarai nama menggunakan penyemak imbas.cari_ elemen () kaedah. Kaedah ini menggunakan pemilih CSS .namaSenarai li untuk mencari senarai nama. Kemudian, senarai nama disimpan di nama-nama pemboleh ubah.

Dalam baris 13 dan 14, a untuk gelung digunakan untuk melakukan lelaran melalui nama-nama senaraikan dan cetak nama pada konsol.

Baris 16 menutup penyemak imbas.

Jalankan skrip Python ex01.py seperti berikut:

$ python3 ex01.py

Seperti yang anda lihat, nama-nama tersebut diekstrak dari laman web dan dicetak di konsol.

Daripada menggunakan penyemak imbas.cari_ elemen () kaedah, anda juga boleh menggunakan penyemak imbas.cari_elemen_by_css_selector () kaedahnya seperti sebelumnya. Kaedah ini hanya memerlukan pemilih CSS untuk berfungsi. Hasilnya akan sama.

Asas Pemilih CSS:

Anda sentiasa dapat mencari pemilih CSS elemen halaman web menggunakan Alat Pembangun Firefox atau penyemak imbas web Chrome. Pemilih CSS yang dihasilkan secara automatik ini mungkin tidak seperti yang anda mahukan. Kadang kala anda mungkin perlu menulis pemilih CSS anda.

Pada bahagian ini, saya akan membincangkan asas-asas pemilih CSS sehingga anda dapat memahami apa yang dipilih oleh pemilih CSS dari laman web dan menulis pemilih CSS tersuai anda jika diperlukan.

Sekiranya anda ingin memilih elemen dari laman web menggunakan ID mesej, pemilih CSS akan #mesej.

Pemilih CSS .hijau akan memilih elemen menggunakan nama kelas hijau.

Sekiranya anda ingin memilih elemen (kelas msg) di dalam elemen lain (kelas bekas), pemilih CSS akan .bekas .msg

Pemilih CSS .msg.kejayaan akan memilih elemen yang mempunyai dua kelas CSS msg dan kejayaan.

Untuk memilih semua hlm tag, anda boleh menggunakan pemilih CSS hlm.

Untuk memilih hanya hlm tag di dalam div tag, anda boleh menggunakan pemilih CSS div p

Untuk memilih hlm tag yang merupakan saudara kandung langsung dari div tag, anda boleh menggunakan pemilih CSS div> p

Untuk memilih semua jangka masa dan hlm tag, anda boleh menggunakan pemilih CSS p, rentang

Untuk memilih hlm tag sejurus selepas div tag, anda boleh menggunakan pemilih CSS div + p

Untuk memilih hlm tanda selepas div tag, anda boleh menggunakan pemilih CSS div ~ p

Untuk memilih semua hlm tag yang mempunyai nama kelas msg, anda boleh menggunakan pemilih CSS hlm.msg

Untuk memilih semua jangka masa tag yang mempunyai nama kelas msg, anda boleh menggunakan pemilih CSS jangka masa.msg

Untuk memilih semua elemen yang mempunyai atribut href, anda boleh menggunakan pemilih CSS [href]

Untuk memilih elemen yang mempunyai atribut nama dan nilai nama atribut adalah nama pengguna, anda boleh menggunakan pemilih CSS [nama = "nama pengguna"]

Untuk memilih semua elemen yang mempunyai atribut alt dan nilai alt atribut yang mengandungi substring vskod, anda boleh menggunakan pemilih CSS [alt ~ = "vscode"]

Untuk memilih semua elemen yang mempunyai href atribut dan nilai href atribut bermula dengan rentetan https, anda boleh menggunakan pemilih CSS [href ^ = "https"]

Untuk memilih semua elemen yang mempunyai href atribut dan nilai href atribut yang diakhiri dengan rentetan .com, anda boleh menggunakan pemilih CSS [href $ = ”.com ”]

Untuk memilih semua elemen yang mempunyai href atribut dan nilai href atribut mempunyai substring google, anda boleh menggunakan pemilih CSS [href * = ”google”]

Sekiranya anda mahu memilih yang pertama li tag di dalam ul tag, anda boleh menggunakan pemilih CSS ul li: anak pertama

Sekiranya anda mahu memilih yang pertama li tag di dalam ul tag, anda juga boleh menggunakan pemilih CSS ul li: anak ke-9 (1)

Sekiranya anda ingin memilih yang terakhir li tag di dalam ul tag, anda boleh menggunakan pemilih CSS ul li: anak terakhir

Sekiranya anda ingin memilih yang terakhir li tag di dalam ul tag, anda juga boleh menggunakan pemilih CSS ul li: anak ke-terakhir (1)

Sekiranya anda mahu memilih yang kedua li tag di dalam ul bermula dari awal, anda boleh menggunakan pemilih CSS ul li: anak ke-9 (2)

Sekiranya anda mahu memilih yang ketiga li tag di dalam ul bermula dari awal, anda boleh menggunakan pemilih CSS ul li: anak ke-9 (3)

Sekiranya anda mahu memilih yang kedua li tag di dalam ul bermula dari akhir, anda boleh menggunakan pemilih CSS ul li: anak ke-terakhir (2)

Sekiranya anda mahu memilih yang ketiga li tag di dalam ul bermula dari akhir, anda boleh menggunakan pemilih CSS ul li: anak ke-terakhir (3)

Ini adalah pemilih CSS yang paling biasa. Anda akan menggunakan ini hampir di setiap projek Selenium. Terdapat banyak lagi pemilih CSS. Anda boleh mendapatkan senarai semuanya di w3schools.com Rujukan Pemilih CSS.

Penyertaan:

Dalam artikel ini, saya telah menunjukkan cara mencari dan memilih elemen laman web menggunakan pemilih CSS dengan Selenium. Saya juga telah membincangkan asas-asas pemilih CSS. Anda seharusnya dapat menggunakan pemilih CSS dengan selesa untuk projek Selenium anda.

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...