Selenium

Korištenje XPath-a i selena za pronalaženje elementa na HTML stranici

Korištenje XPath-a i selena za pronalaženje elementa na HTML stranici
XPath, također poznat i kao XML Path Language, jezik je za odabir elemenata iz XML dokumenta. Kako HTML i XML slijede istu strukturu dokumenta, XPath se također može koristiti za odabir elemenata s web stranice.

Lociranje i odabir elemenata s web stranice ključ je za struganje weba pomoću selena. Za lociranje i odabir elemenata s web stranice možete koristiti XPath selektore u Seleniju.

U ovom članku pokazat ću vam kako locirati i odabrati elemente s web stranica pomoću XPath selektora u Seleniju s bibliotekom Selenium python. Pa, krenimo.

Preduvjeti:

Da biste isprobali naredbe i primjere ovog članka, morate ih imati,

  1. Linux distribucija (po mogućnosti Ubuntu) instalirana na vašem računalu.
  2. Python 3 instaliran na vašem računalu.
  3. PIP 3 instaliran na vašem računalu.
  4. Piton virtualenv paket instaliran na vašem računalu.
  5. Mozilla Firefox ili Google Chrome web preglednici instalirani na vašem računalu.
  6. Morate znati kako instalirati Firefox Gecko Driver ili Chrome Web Driver.

Za ispunjavanje zahtjeva 4, 5 i 6 pročitajte moj članak Uvod u selen u Pythonu 3. Na LinuxHintu možete pronaći mnogo članaka o ostalim temama.com. Svakako ih pregledajte ako trebate pomoć.

Postavljanje direktorija projekta:

Da biste sve organizirali, stvorite novi direktorij projekata selen-xpath / kako slijedi:

$ mkdir -pv selenium-xpath / upravljački programi

Idite na selen-xpath / direktorij projekta kako slijedi:

$ cd selen-xpath /

Stvorite Python virtualno okruženje u direktoriju projekta kako slijedi:

$ virtualenv .venv

Aktivirajte virtualno okruženje na sljedeći način:

$ izvor .venv / bin / aktivirati

Instalirajte biblioteku Selenium Python koristeći PIP3 kako slijedi:

$ pip3 instaliraj selen

Preuzmite i instalirajte sve potrebne upravljačke programe u vozači / direktorij projekta. U svom sam članku objasnio postupak preuzimanja i instaliranja web upravljačkih programa Uvod u selen u Pythonu 3.

Nabavite XPath Selector pomoću Chrome Developer Tool:

U ovom odjeljku pokazat ću vam kako pronaći selektor XPath elementa web stranice koji želite odabrati pomoću selena pomoću ugrađenog alata za programere web preglednika Google Chrome.

Da biste dobili XPath selektor pomoću web preglednika Google Chrome, otvorite Google Chrome i posjetite web mjesto s kojeg želite izvući podatke. Zatim pritisnite desnu tipku miša (RMB) na prazno područje stranice i kliknite na Pregledati otvoriti Alat za razvojne programere Chrome.

Također možete pritisnuti + Shift + Ja otvoriti Alat za razvojne programere Chrome.

Alat za razvojne programere Chrome treba otvoriti.

Da biste pronašli HTML prikaz željenog elementa web stranice, kliknite na Pregledati(

), kao što je označeno na snimci zaslona u nastavku.

Zatim zadržite pokazivač iznad željenog elementa web stranice i pritisnite lijevu tipku miša (LMB) da biste ga odabrali.

HTML prikaz web elementa koji ste odabrali bit će istaknut u Elementi na kartici Alat za razvojne programere Chrome, kao što možete vidjeti na donjoj snimci zaslona.

Da biste dobili XPath selektor željenog elementa, odaberite element iz Elementi karticu Alat za razvojne programere Chrome i desnom tipkom miša kliknite (RMB) na njemu. Zatim odaberite Kopirati > Kopirajte XPath, kako je označeno na snimci zaslona u nastavku.

Zalijepio sam selektor XPath u uređivač teksta. Selektor XPath izgleda kao što je prikazano na snimci zaslona u nastavku.

Nabavite XPath Selector koristeći Firefox Developer Tool:

U ovom odjeljku pokazat ću vam kako pronaći selektor XPath elementa web stranice koji želite odabrati pomoću Selenium pomoću ugrađenog alata za programere web preglednika Mozilla Firefox.

Da biste dobili selektor XPath pomoću web preglednika Firefox, otvorite Firefox i posjetite web mjesto s kojeg želite izvući podatke. Zatim pritisnite desnu tipku miša (RMB) na prazno područje stranice i kliknite na Pregledaj element (Q) otvoriti Alat za razvojne programere Firefoxa.

Alat za razvojne programere Firefoxa treba otvoriti.

Da biste pronašli HTML prikaz željenog elementa web stranice, kliknite na Pregledati(

), kao što je označeno na snimci zaslona u nastavku.

Zatim zadržite pokazivač iznad željenog elementa web stranice i pritisnite lijevu tipku miša (LMB) da biste ga odabrali.

HTML prikaz web elementa koji ste odabrali bit će istaknut u Inspektor karticu Alat za razvojne programere Firefoxa, kao što možete vidjeti na donjoj snimci zaslona.

Da biste dobili XPath selektor željenog elementa, odaberite element iz Inspektor karticu Alat za razvojne programere Firefoxa i desnom tipkom miša kliknite (RMB) na njemu. Zatim odaberite Kopirati > XPath kako je označeno na snimci zaslona u nastavku.

Selektor XPath željenog elementa trebao bi izgledati otprilike ovako.

Izdvajanje podataka s web stranica pomoću XPath Selector:

U ovom odjeljku pokazat ću vam kako odabrati elemente web stranice i iz njih izvući podatke pomoću XPath selektora s bibliotekom Selenium Python.

Prvo stvorite novu Python skriptu ex01.py i unesite sljedeće retke kodova.

s selena za uvoz webdrivera
od selena.mrežni pogonitelj.uobičajen.tipke uvoz ključeva
od selena.mrežni pogonitelj.uobičajen.uvozom By
options = webdriver.ChromeOptions ()
mogućnosti.bez glave = Istina
preglednik = webdriver.Chrome (izvršna_puta = "./ vozači / chromedriver ",
options = mogućnosti)
preglednik.get ("https: // www.unixtimestamp.com / ")
vremenska oznaka = preglednik.find_element_by_xpath ('/ html / body / div [1] / div [1]
/ div [2] / div [1] / div / div / h3 [2] ')
print ('Trenutna vremenska oznaka:% s'% (vremenska oznaka.tekst.podijeliti (") [0]))
preglednik.Zatvoriti()

Kad završite, spremite ex01.py Python skripta.

Linija 1-3 uvozi sve potrebne komponente selena.

Redak 5 stvara objekt Chrome Options, a red 6 omogućuje način bez glave za web preglednik Chrome.

Redak 8 stvara Chrome preglednik objekt pomoću kromedriver binarni iz vozači / direktorij projekta.

Redak 10 govori pregledniku da učita web stranicu unixtimestamp.com.

Redak 12 pronalazi element koji ima podatke o vremenskoj oznaci sa stranice pomoću XPath selektora i pohranjuje ga u vremenska oznaka varijabilna.

Redak 13 analizira podatke vremenske oznake iz elementa i ispisuje ih na konzoli.

Kopirao sam selektor XPath označenog h2 element iz unixtimestamp.com pomoću alata za razvojne programere Chrome.

Redak 14 zatvara preglednik.

Pokrenite Python skriptu ex01.py kako slijedi:

$ python3 ex01.py

Kao što vidite, podaci vremenske oznake ispisuju se na zaslonu.

Evo, koristio sam preglednik.find_element_by_xpath (selektor) metoda. Jedini parametar ove metode je selektor, koji je XPath selektor elementa.

Umjesto preglednik.find_element_by_xpath () metodu, koju također možete koristiti preglednik.find_element (Autor, selektor) metoda. Ova metoda treba dva parametra. Prvi parametar Po bit će Po.XPATH jer ćemo koristiti selektor XPath i drugi parametar selektor bit će sam selektor XPath. Rezultat će biti isti.

Da vidim kako preglednik.pronađi_element () metoda radi za selektor XPath, stvorite novu Python skriptu ex02.py, kopirajte i zalijepite sve retke iz ex01.py do ex02.py i promjena 12. redak kako je označeno na snimci zaslona u nastavku.

Kao što vidite, Python skripta ex02.py daje isti rezultat kao ex01.py.

$ python3 ex02.py

The preglednik.find_element_by_xpath () i preglednik.pronađi_element () metode se koriste za pronalaženje i odabir pojedinog elementa s web stranica. Ako želite pronaći i odabrati više elemenata pomoću XPath selektora, tada morate koristiti preglednik.find_elements_by_xpath () ili preglednik.pronađi_elemente () metode.

The preglednik.find_elements_by_xpath () metoda uzima isti argument kao i preglednik.find_element_by_xpath () metoda.

The preglednik.pronađi_elemente () metoda uzima iste argumente kao i preglednik.pronađi_element () metoda.

Pogledajmo primjer izdvajanja popisa imena pomoću XPath selektora iz generator slučajnih imena.info s bibliotekom Selenium Python.

Neuređeni popis (ol oznaka) ima 10 li oznake unutar svake sadrže slučajno ime. XPath za odabir svih li oznake unutar ol oznaka u ovom slučaju je // * [@ id = ”main”] / div [3] / div [2] / ol // li

Prođimo kroz primjer odabira više elemenata s web stranice pomoću XPath selektora.

Stvorite novu Python skriptu ex03.py i u njega unesite sljedeće retke kodova.

s selena za uvoz webdrivera
od selena.mrežni pogonitelj.uobičajen.tipke uvoz ključeva
od selena.mrežni pogonitelj.uobičajen.uvozom By
options = webdriver.ChromeOptions ()
mogućnosti.bez glave = Istina
preglednik = webdriver.Chrome (izvršna_puta = "./ vozači / chromedriver ",
options = mogućnosti)
preglednik.get ("http: // random-name-generator.info / ")
imena = preglednik.find_elements_by_xpath ('
// * [@ id = "main"] / div [3] / div [2] / ol // li ')
za ime u imenima:
Naziv ispisa.tekst)
preglednik.Zatvoriti()

Kad završite, spremite ex03.py Python skripta.

Linija 1-8 ista je kao u ex01.py Python skripta. Dakle, neću ih ovdje više objašnjavati.

Redak 10 govori pregledniku da učita web stranicu generator slučajnih imena.info.

Redak 12 odabire popis imena pomoću preglednik.find_elements_by_xpath () metoda. Ova metoda koristi selektor XPath // * [@ id = ”main”] / div [3] / div [2] / ol // li pronaći popis imena. Zatim se popis imena sprema u imena varijabilna.

U redovima 13 i 14, a za petlja se koristi za iteraciju kroz imena popisati i ispisati imena na konzoli.

Redak 16 zatvara preglednik.

Pokrenite Python skriptu ex03.py kako slijedi:

$ python3 ex03.py

Kao što vidite, imena se izdvajaju s web stranice i ispisuju na konzoli.

Umjesto da koristite preglednik.find_elements_by_xpath () metodu, također možete koristiti preglednik.pronađi_elemente () metoda kao i prije. Prvi argument ove metode je Po.XPATH, a drugi argument je XPath selektor.

Za eksperimentiranje preglednik.pronađi_elemente () metodu, stvorite novu Python skriptu ex04.py, kopirajte sve kodove iz ex03.py do ex04.py, i promijenite redak 12 kako je označeno na snimci zaslona u nastavku.

Trebali biste dobiti isti rezultat kao i prije.

$ python3 ex04.py

Osnove selektora XPath:

Alat za programere Firefoxa ili web preglednika Google Chrome generira automatski XPath selektor. Ali ti XPath birači ponekad nisu dovoljni za vaš projekt. U tom slučaju, morate znati što određeni selektor XPath radi za izgradnju vašeg XPath selektora. U ovom odjeljku pokazat ću vam osnove XPath selektora. Tada biste mogli stvoriti vlastiti selektor XPath.

Stvorite novi direktorij www / u vašem direktoriju projekta kako slijedi:

$ mkdir -v www

Stvorite novu datoteku web01.html u www / direktorij i unesite sljedeće retke u tu datoteku.






Osnovni HTML dokument


Pozdrav svijete



Kad završite, spremite web01.html datoteka.

Pokrenite jednostavni HTTP poslužitelj na portu 8080 pomoću sljedeće naredbe:

$ python3 -m http.poslužitelj --direktorij www / 8080

Trebao bi se pokrenuti HTTP poslužitelj.

Trebali biste imati pristup web01.html datoteka koristeći URL http: // localhost: 8080 / web01.html, kao što možete vidjeti na donjoj snimci zaslona.

Dok se otvara Firefox ili Chrome Developer Tool, pritisnite + F da biste otvorili okvir za pretraživanje. Ovdje možete upisati svoj XPath selektor i vidjeti što on vrlo lako odabire. Koristit ću ovaj alat u ovom odjeljku.

Birač XPath započinje s kosa crta (/) većinu vremena. To je poput Linux stabla direktorija. The / korijen je svih elemenata na web stranici.

Prvi element je html. Dakle, XPath selektor / html odabire cijelu html označiti.

Unutar html oznaku, imamo a tijelo označiti. The tijelo oznaka se može odabrati pomoću XPath selektora / html / tijelo

The h1 zaglavlje je unutar tijelo označiti. The h1 zaglavlje se može odabrati pomoću XPath selektora / html / body / h1

Ova vrsta XPath selektora naziva se selektor apsolutne putanje. U apsolutnom biraču puta, morate preći web stranicu od korijena (/) stranice. Nedostatak apsolutnog selektora puta je taj što čak i mala promjena strukture web stranice vaš XPath selektor može učiniti nevaljanim. Rješenje ovog problema je relativni ili djelomični selektor XPath.

Da biste vidjeli kako funkcionira relativni put ili djelomični put, stvorite novu datoteku web02.html u www / imenik i u njega unesite sljedeće retke kodova.






Osnovni HTML dokument


Pozdrav svijete



ovo je poruka




Pozdrav svijete


Kad završite, spremite web02.html datoteku i učitajte je u svoj web preglednik.

Kao što vidite, XPath selektor // div / str odabire str oznaka unutar div označiti. Ovo je primjer relativnog XPath selektora.

Relativni XPath selektor započinje s //. Zatim odredite strukturu elementa koji želite odabrati. U ovom slučaju, div / str.

Tako, // div / str znači odabrati str element unutar a div element, nije važno što dolazi prije njega.

Također možete odabrati elemente prema različitim atributima poput iskaznica, razred, tip, itd. pomoću XPath selektora. Pogledajmo kako to učiniti.

Stvorite novu datoteku web03.html u www / imenik i u njega unesite sljedeće retke kodova.






Osnovni HTML dokument


Pozdrav svijete



ovo je poruka


ovo je još jedna poruka


naslov 2


Lorem ipsum dolor sit amet consectetur, gadljiva elitnost. Quibusdam
eligendi doloribus sapiente, molestias quos quae non nam incidunt quis delectus
facilis magnifficiis alias neque atque fuga? Unde, aut natus?




ovo je podnožje


Kad završite, spremite web03.html datoteku i učitajte je u svoj web preglednik.

Recimo da želite odabrati sve div elementi koji imaju razred Ime spremnik1. Da biste to učinili, možete koristiti selektor XPath // div [@ class = 'container1']

Kao što vidite, imam 2 elementa koja se podudaraju s XPath selektorom // div [@ class = 'container1']

Za odabir prvog div element s razred Ime spremnik1, dodati [1] na kraju XPath odabira, kao što je prikazano na snimci zaslona u nastavku.

Na isti način možete odabrati i drugu div element s razred Ime spremnik1 pomoću XPath selektora // div [@ class = 'container1'] [2]

Elemente možete odabrati po iskaznica također.

Na primjer, za odabir elementa koji ima iskaznica od podnožje-msg, možete koristiti XPath selektor // * [@ id = 'footer-msg']

Evo, * prije [@ id = 'footer-msg'] koristi se za odabir bilo kojeg elementa bez obzira na oznaku.

To su osnove XPath selektora. Sada biste mogli stvoriti vlastiti selektor XPath za svoje projekte Selenium.

Zaključak:

U ovom sam vam članku pokazao kako pronaći i odabrati elemente s web stranica pomoću selektora XPath s bibliotekom Selenium Python. Također sam razgovarao o najčešćim XPath selektorima. Nakon čitanja ovog članka, trebali biste se osjećati prilično samouvjereno odabirom elemenata s web stranica pomoću selektora XPath s bibliotekom Selenium Python.

Kako obrnuti smjer pomicanja miša i dodirnih pločica u sustavu Windows 10
Miš i Dodirna pločaRačunarstvo ne samo da olakšava, već i učinkovitije i oduzima puno vremena. Ne možemo zamisliti život bez ovih uređaja, ali činjeni...
Kako promijeniti pokazivač miša i veličinu, boju i shemu pokazivača na sustavu Windows 10
Pokazivač i pokazivač miša u sustavu Windows 10 vrlo su važni aspekti operativnog sustava. To se može reći i za druge operativne sustave, tako da u is...
Besplatni i otvoreni kodni pokretački programi za razvoj Linux igara
Ovaj će članak pokriti popis besplatnih i open source pokretačkih igara koje se mogu koristiti za razvoj 2D i 3D igara na Linuxu. Brojni su takvi moto...