XPathi ja seleeni kasutamine HTML -lehe elemendi leidmiseks

Using Xpath Selenium Find An Element Html Page



XPath, tuntud ka kui XML -tee keel, on keel XML -dokumendi elementide valimiseks. Kuna HTML ja XML järgivad sama dokumendistruktuuri, saab XPathi kasutada ka veebilehe elementide valimiseks.

Veebilehe elementide leidmine ja valimine on seleeni abil veebis kraapimise võti. Veebilehelt elementide leidmiseks ja valimiseks saate kasutada Seleeni XPath -valijaid.





Selles artiklis näitan teile, kuidas leida ja valida veebilehtedelt elemente, kasutades Seleniumi XPath -valijaid koos Selenium pythoni koguga. Niisiis, alustame.



Eeltingimused:

Selle artikli käskude ja näidete proovimiseks peab teil olema,



  1. Teie arvutisse installitud Linuxi distributsioon (eelistatavalt Ubuntu).
  2. Python 3 on teie arvutisse installitud.
  3. PIP 3 on teie arvutisse installitud.
  4. Python virtualenv teie arvutisse installitud pakett.
  5. Teie arvutisse on installitud Mozilla Firefoxi või Google Chrome'i veebibrauserid.
  6. Peab teadma, kuidas Firefox Gecko draiverit või Chrome'i veebidraiverit installida.

Nõuete 4, 5 ja 6 täitmiseks lugege minu artiklit Sissejuhatus seleeni Python 3 -s . Teiste teemade kohta leiate palju artikleid LinuxHint.com . Kontrollige neid kindlasti, kui vajate abi.





Projekti kataloogi seadistamine:

Kõigi organiseeritud hoidmiseks looge uus projektikataloog selenium-xpath/ järgnevalt:

$mkdir -lkseleen-xpath/autojuhid



Liikuge lehele selenium-xpath/ projekti kataloog järgmiselt:

$CDseleen-xpath/

Looge Pythoni virtuaalne keskkond projekti kataloogis järgmiselt.

$virtualenv .venv

Aktiveerige virtuaalne keskkond järgmiselt.

$allikas.venv/olen/aktiveerida

Installige Selenium Pythoni teek PIP3 abil järgmiselt.

$ pip3 install seleen

Laadige alla ja installige kõik vajalikud veebidraiverid autojuhid/ projekti kataloog. Olen oma artiklis selgitanud veebidraiverite allalaadimise ja installimise protsessi Sissejuhatus seleeni Python 3 -s .

Hankige XPathi valija Chrome'i arendustööriista abil:

Selles jaotises näitan teile, kuidas leida veebilehe elemendi XPath valijat, mida soovite Seleniumiga valida, kasutades Google Chrome'i veebibrauseri sisseehitatud arendustööriista.

XPathi valija hankimiseks Google Chrome'i veebibrauseri abil avage Google Chrome ja külastage veebisaiti, kust soovite andmeid hankida. Seejärel vajutage hiire paremat nuppu (RMB) lehe tühjal alal ja klõpsake nuppu Kontrollige avamiseks Chrome'i arendustööriist .

Võite ka vajutada + Vahetus + Mina avamiseks Chrome'i arendustööriist .

Chrome'i arendustööriist tuleks avada.

Soovitud veebilehe elemendi HTML -esituse leidmiseks klõpsake ikooni Kontrollige (

) ikoon, nagu on märgitud alloleval ekraanipildil.

Seejärel hõljutage kursorit soovitud veebilehe elemendi kohal ja vajutage selle valimiseks hiire vasakut nuppu (LMB).

Valitud veebielemendi HTML -esitus tõstetakse esile Elemendid vahekaart Chrome'i arendaja tööriist, nagu näete alloleval ekraanipildil.

Soovitud elemendi XPath -valija hankimiseks valige element Elemendid vahekaart Chrome'i arendustööriist ja paremklõpsake sellel (RMB). Seejärel valige Kopeeri > Kopeeri XPath, nagu on märgitud alloleval ekraanipildil.

Olen kleepinud XPathi valija tekstiredaktorisse. XPathi valija näeb välja nagu alloleval ekraanipildil näidatud.

Hankige XPathi valija Firefoxi arendustööriista abil:

Selles jaotises näitan teile, kuidas leida veebilehe elemendi XPath valijat, mida soovite Seleniumiga valida, kasutades Mozilla Firefoxi veebibrauseri sisseehitatud arendustööriista.

XPathi valija hankimiseks Firefoxi veebibrauseri abil avage Firefox ja külastage veebisaiti, kust soovite andmeid hankida. Seejärel vajutage hiire paremat nuppu (RMB) lehe tühjal alal ja klõpsake nuppu Kontrollige elementi (Q) avamiseks Firefoxi arendustööriist .

Firefoxi arendustööriist tuleks avada.

Soovitud veebilehe elemendi HTML -esituse leidmiseks klõpsake ikooni Kontrollige (

) ikoon, nagu on märgitud alloleval ekraanipildil.

Seejärel hõljutage kursorit soovitud veebilehe elemendi kohal ja vajutage selle valimiseks hiire vasakut nuppu (LMB).

Valitud veebielemendi HTML -esitus tõstetakse esile Inspektor vahekaart Firefoxi arendustööriist, nagu näete alloleval ekraanipildil.

Soovitud elemendi XPath -valija hankimiseks valige element Inspektor vahekaart Firefoxi arendustööriist ja paremklõpsake sellel (RMB). Seejärel valige Kopeeri > XPath nagu on märgitud alloleval ekraanipildil.

Soovitud elemendi XPath valija peaks välja nägema umbes selline.

Andmete väljavõtmine veebilehtedelt XPath Selectori abil:

Selles jaotises näitan teile, kuidas valida veebilehe elemente ja neist andmeid välja võtta, kasutades XPathi valijaid koos Selenium Pythoni koguga.

Esiteks looge uus Pythoni skript ex01.py ja sisestage järgmised koodiridad.

alatesseleenimportveebidraiver
alatesseleen.veebidraiver.levinud.võtmed importVõtmed
alatesseleen.veebidraiver.levinud.kõrval importKõrval
võimalusi=veebidraiver.ChromeOptions()
võimalusi.peata = Tõsi
brauser=veebidraiver.Chrome(käivitatav_tee='./drivers/chromedriver',
võimalusi=võimalusi)
brauser.saada('https://www.unixtimestamp.com/')
ajatempel=brauser.find_element_by_xpath('/html/body/div [1]/div [1]
/div [2]/div [1]/div/div/h3 [2] '
)
printida('Praegune ajatempel: %s'%(ajatempel.teksti.lõhenema('')[0]))
brauser.Sulge()

Kui olete lõpetanud, salvestage ex01.py Pythoni skript.

Rida 1-3 impordib kõik vajalikud seleeni komponendid.

Rida 5 loob Chrome'i suvandite objekti ja rida 6 lubab Chrome'i veebibrauseri jaoks peata režiimi.

8. rida loob Chrome'i brauser objekti kasutades kroomitud draiver binaarne alates autojuhid/ projekti kataloog.

Rida 10 käsib brauseril laadida veebisaidi unixtimestamp.com.

Rida 12 leiab elemendi, millel on lehe ajatempliandmed, kasutades XPathi valijat ja salvestab need kausta ajatempel muutuja.

Rida 13 analüüsib elemendi ajatempli andmeid ja prindib need konsoolile.

Olen kopeerinud märgitud XPath valija h2 element pärit unixtimestamp.com kasutades Chrome'i arendajatööriista.

14. rida sulgeb brauseri.

Käivitage Pythoni skript ex01.py järgnevalt:

$ python3 ex01.py

Nagu näete, prinditakse ajatempli andmed ekraanile.

Siin olen kasutanud browser.find_element_by_xpath (valija) meetod. Selle meetodi ainus parameeter on valija, mis on elemendi XPath valija.

Selle asemel browser.find_element_by_xpath () meetodit, saate ka kasutada browser.find_element (Autor, valija) meetod. See meetod vajab kahte parameetrit. Esimene parameeter Kõrval saab Autor: XPATH nagu me kasutame XPathi valijat ja teist parameetrit valija on XPathi valija ise. Tulemus jääb samaks.

Et näha, kuidas browser.find_element () meetod töötab XPathi valija jaoks, looge uus Pythoni skript ex02.py kopeerige ja kleepige kõik read ex01.py et ex02.py ja muuta rida 12 nagu on märgitud alloleval ekraanipildil.

Nagu näete, on Pythoni skript ex02.py annab sama tulemuse kui ex01.py .

$ python3 ex02.py

The browser.find_element_by_xpath () ja browser.find_element () meetodeid kasutatakse veebilehtedelt ühe elemendi leidmiseks ja valimiseks. Kui soovite XPathi valijate abil leida ja valida mitu elementi, peate seda kasutama browser.find_elements_by_xpath () või browser.find_elements () meetodeid.

The browser.find_elements_by_xpath () meetod kasutab sama argumenti kui browser.find_element_by_xpath () meetod.

The browser.find_elements () meetod kasutab samu argumente kui browser.find_element () meetod.

Vaatame näidet nimede loendi ekstraheerimisest XPathi valija abil juhusliku nime- generaator.info koos Selenium Pythoni raamatukoguga.

Korrastamata nimekiri ( surema sildil) on 10 juures iga märgend sisaldab juhuslikku nime. XPath, et valida kõik juures sildid surema silt on sel juhul //*[@id = main]/div [3]/div [2]/ol // li

Vaatame läbi näite mitme elemendi valimiseks veebilehelt XPathi valijate abil.

Looge uus Pythoni skript ex03.py ja sisestage sellesse järgmised koodiridad.

alatesseleenimportveebidraiver
alatesseleen.veebidraiver.levinud.võtmed importVõtmed
alatesseleen.veebidraiver.levinud.kõrval importKõrval
võimalusi=veebidraiver.ChromeOptions()
võimalusi.peata = Tõsi
brauser=veebidraiver.Chrome(käivitatav_tee='./drivers/chromedriver',
võimalusi=võimalusi)
brauser.saada('http://random-name-generator.info/')
nimed=brauser.find_elements_by_xpath('
//*[@id = 'main']/div [3]/div [2]/ol // li '
)
eestnimisissenimed:
printida(nimi.teksti)
brauser.Sulge()

Kui olete lõpetanud, salvestage ex03.py Pythoni skript.

Rida 1-8 on sama mis ex01.py Pythoni skript. Niisiis, ma ei hakka neid siin uuesti selgitama.

Rida 10 käsib brauseril laadida veebisaidi random-name-generator.info.

Rida 12 valib nimede loendi nupu abil browser.find_elements_by_xpath () meetod. See meetod kasutab XPathi valijat //*[@id = main]/div [3]/div [2]/ol // li nimekirja leidmiseks. Seejärel salvestatakse nimede loend kausta nimed muutuja.

Ridadel 13 ja 14 a eest silmust kasutatakse iteratsiooniks läbi nimed loetlege ja printige nimed konsoolile.

16. rida sulgeb brauseri.

Käivitage Pythoni skript ex03.py järgnevalt:

$ python3 ex03.py

Nagu näete, ekstraheeritakse nimed veebilehelt ja trükitakse konsoolile.

Selle asemel, et kasutada browser.find_elements_by_xpath () meetodit, saate kasutada ka browser.find_elements () meetod nagu varem. Selle meetodi esimene argument on Autor: XPATH, ja teine ​​argument on XPathi valija.

Katsetamiseks browser.find_elements () meetod, looge uus Pythoni skript ex04.py , kopeerige kõik koodid ex03.py et ex04.py ja muutke rida 12, nagu on näidatud alloleval ekraanipildil.

Peaksite saama sama tulemuse nagu varem.

$ python3 ex04.py

XPathi valija põhitõed:

Firefoxi või Google Chrome'i veebibrauseri arendustööriist genereerib XPathi valija automaatselt. Kuid nendest XPathi valijatest ei piisa mõnikord teie projekti jaoks. Sellisel juhul peate teadma, mida teatud XPath -valija teie XPath -valija ehitamiseks teeb. Selles jaotises näitan teile XPathi valijate põhitõdesid. Seejärel peaksite saama luua oma XPathi valija.

Looge uus kataloog www/ oma projekti kataloogis järgmiselt:

$mkdir -vwww

Looge uus fail web01.html aastal www/ kataloog ja tippige sellesse faili järgmised read.


< html lang='peal'>
< pea >
< meta märgistik='UTF-8'>
< meta nimi='vaateava' sisu='laius = seadme laius, esialgne skaala = 1,0'>
< tiitel >Põhiline HTML -dokument</ tiitel >
</ pea >
< keha >
< h1 >Tere, Maailm</ h1 >
</ keha >
</ html >

Kui olete lõpetanud, salvestage web01.html faili.

Käivitage portis 8080 lihtne HTTP -server, kasutades järgmist käsku:

$ python3 -m http.server-kataloog www/8080

HTTP -server peaks käivituma.

Teil peaks olema juurdepääs web01.html faili kasutades URL -i http: // localhost: 8080/web01.html , nagu näete alloleval ekraanipildil.

Kui Firefoxi või Chrome'i arendaja tööriist on avatud, vajutage + F otsingukasti avamiseks. Siin saate sisestada oma XPathi valija ja vaadata, mida see väga hõlpsalt valib. Ma kasutan seda tööriista kogu selles jaotises.

XPathi valija algab tähega kaldkriips (/) enamus ajast. See on nagu Linuxi kataloogipuu. The / on kõigi veebilehe elementide juur.

Esimene element on html . Niisiis, XPathi valija /html valib kogu html silt.

Sees html silt, meil on a keha silt. The keha märgendit saab valida XPath valijaga /html/body

The h1 päis asub keha silt. The h1 päise saab valida XPath valijaga /html/body/h1

Seda tüüpi XPathi valijat nimetatakse absoluutse tee valijaks. Absoluutse tee valijas peate läbima veebilehe lehe juurest (/). Absoluutse tee valija puuduseks on see, et isegi väike muutus veebilehe struktuuris võib muuta teie XPathi valija kehtetuks. Selle probleemi lahendus on suhteline või osaline XPathi valija.

Suhtelise tee või osalise tee toimimise nägemiseks looge uus fail web02.html aastal www/ kataloog ja sisestage sellesse järgmised koodiridad.


< html lang='peal'>
< pea >
< meta märgistik='UTF-8'>
< meta nimi='vaateava' sisu='laius = seadme laius, esialgne skaala = 1,0'>
< tiitel >Põhiline HTML -dokument</ tiitel >
</ pea >
< keha >
< h1 >Tere, Maailm</ h1 >

< div >
< lk >see on sõnum</ lk >
</ div >

< div >
< span >Tere, Maailm</ span >
</ div >
</ keha >
</ html >

Kui olete lõpetanud, salvestage web02.html fail ja laadige see oma veebibrauserisse.

Nagu näete, valib XPath // div/lk valib lk silt sees div silt. See on näide suhtelisest XPathi valijast.

Suhteline XPathi valija algab tähega // . Seejärel määrate elemendi struktuuri, mida soovite valida. Sel juhul, div/lk .

Niisiis, // div/lk tähendab valida lk element a sees div element, pole oluline, mis sellele eelneb.

Samuti saate elemente valida erinevate atribuutide järgi id , klassi , tüüp, jne kasutades XPath valijat. Vaatame, kuidas seda teha.

Looge uus fail web03.html aastal www/ kataloog ja sisestage sellesse järgmised koodiridad.


< html lang='peal'>
< pea >
< meta märgistik='UTF-8'>
< meta nimi='vaateava' sisu='laius = seadme laius, esialgne skaala = 1,0'>
< tiitel > Põhiline HTML -dokument</ tiitel >
</ pea >
< keha >
< h1 > Tere maailm</ h1 >
< div klassi='konteiner1'>
< lk > see on sõnum</ lk >
< span > see on teine ​​sõnum</ span >
</ div >
< div klassi='konteiner1'>
< h2 > rubriik2</ h2 >
< lk > Mõned inimesed
tark on valida valud, mured ja need, mis ei lange väljavalitule
pole lihtsad lennud ja muud suurepärased teenused? Kust või kust ta sündis?</ lk >
</ div >

< span id='footer-msg'> see on jalus</ span >
</jalus>
</ keha >
</ html >

Kui olete lõpetanud, salvestage web03.html fail ja laadige see oma veebibrauserisse.

Oletame, et soovite valida kõik div elemente, millel on klassi nimi konteiner 1 . Selleks saate kasutada XPathi valijat // div [@class = ’container1 ′]

Nagu näete, on mul 2 elementi, mis sobivad XPathi valijaga // div [@class = ’container1 ′]

Esimese valimiseks div element koos klassi nimi konteiner 1 , lisama [1] valige XPathi lõpus, nagu on näidatud alloleval ekraanipildil.

Samamoodi saate valida teise div element koos klassi nimi konteiner 1 kasutades XPathi valijat // div [@class = ’container1 ′] [2]

Saate valida elemente id samuti.

Näiteks elemendi valimiseks, millel on id kohta jaluse-sõnum , saate kasutada XPathi valijat //*[@id = ’footer-msg’]

Siin, * enne [@id = ’footer-msg’] kasutatakse mis tahes elemendi valimiseks olenemata nende märgendist.

See on XPathi valija põhitõed. Nüüd peaksite saama oma Seleeni projektide jaoks luua oma XPathi valija.

Järeldus:

Selles artiklis olen näidanud teile, kuidas leida ja valida veebilehtedelt elemente, kasutades Seleeni Pythoni koguga XPathi valijat. Olen arutanud ka kõige tavalisemaid XPathi valijaid. Pärast selle artikli lugemist peaksite tundma end üsna kindlalt, valides veebilehtedelt elemente, kasutades XPathi valijat koos Selenium Pythoni koguga.