Selenium

XPathi ja seleeni kasutamine elemendi leidmiseks HTML-lehelt

XPathi ja seleeni kasutamine elemendi leidmiseks HTML-lehelt
XPath, tuntud ka kui XML-teekeel, on keel XML-dokumendist elementide valimiseks. Kuna HTML ja XML järgivad sama dokumendistruktuuri, saab XPathi kasutada ka veebisaidilt elementide valimiseks.

Veebilehelt elementide leidmine ja valimine on seleeniga veebi kraapimise võti. Veebilehelt elementide leidmiseks ja valimiseks võite kasutada seleenis XPathi valijaid.

Selles artiklis näitan teile, kuidas leida ja valida elemente veebilehtedelt, kasutades Seleniumi XPathi valijaid Selenium pythoni teegiga. Alustame siis.

Eeldused:

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

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

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

Projektikataloogi seadistamine:

Et kõik oleks korrastatud, looge uus projektikataloog seleen-xpath / järgnevalt:

$ mkdir -pv selenium-xpath / draiverid

Navigeerige lehele seleen-xpath / projekti kataloog järgmiselt:

$ cd seleen-xpath /

Looge projekti kataloogis Pythoni virtuaalne keskkond järgmiselt:

$ virtualenv .venv

Aktiveerige virtuaalne keskkond järgmiselt:

allikas $ .venv / bin / aktiveeri

Installige Selenium Pythoni teek PIP3 abil järgmiselt:

$ pip3 installige 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 arendaja tööriista abil:

Selles jaotises näitan teile, kuidas leida Google Chrome'i veebibrauseri sisseehitatud arendaja tööriista abil Seleniumi abil valitud veebilehe elemendi XPath valija.

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

Võite ka vajutada + Shift + Mina avamiseks Chrome'i arendaja tööriist.

Chrome'i arendaja tööriist tuleks avada.

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

) ikooni, 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 XPathi valija saamiseks valige element Elemendid vahekaart Chrome'i arendaja töö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 arendaja tööriista abil:

Selles jaotises näitan teile, kuidas leida selle veebisaidi elemendi XPath valija, mille soovite seleeniga valida, kasutades Mozilla Firefoxi veebibrauseri sisseehitatud arendaja tööriista.

XPathi valija saamiseks Firefoxi veebibrauseri abil avage Firefox ja külastage veebisaiti, kust soovite andmeid eraldada. Seejärel vajutage hiire paremat nuppu (RMB) lehe tühjale alale ja klõpsake nuppu Kontrollige elementi (Q) avamiseks Firefoxi arendaja tööriist.

Firefoxi arendaja tööriist tuleks avada.

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

) ikooni, 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 arendaja tööriist, nagu näete alloleval ekraanipildil.

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

Teie soovitud elemendi XPathi valija peaks välja nägema umbes selline.

Andmete eraldamine veebilehtedelt XPath Selectori abil:

Selles jaotises näitan teile, kuidas valida veebilehtede elemente ja neist andmeid välja võtta, kasutades Selathi Pythoni teegi XPath-i valijaid.

Kõigepealt looge uus Pythoni skript ex01.py ja sisestage järgmised koodiread.

seleeni impordi veebidraiverilt
seleenist.veebidraiver.tavaline.võtmed impordivad võtmeid
seleenist.veebidraiver.tavaline.impordi teel
valikud = veebidraiver.ChromeOptions ()
valikud.peata = tõsi
brauser = veebidraiver.Chrome (käivitatava_tee = "./ draiverid / chromedriver ",
valikud = valikud)
brauser.get ("https: // www.unixtimestamp.com / ")
ajatempel = brauser.find_element_by_xpath ('/ html / body / div [1] / div [1]
/ div [2] / div [1] / div / div / h3 [2] ')
print ('Praegune ajatempel:% s'% (ajatempel.teksti.jaotus (") [0]))
brauser.Sulge()

Kui olete valmis, salvestage ex01.py Pythoni skript.

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

5. rida loob objekti Chrome Options ja 6. rida võimaldab Chrome'i veebibrauseril peata režiimi.

8. rida loob Chrome'i brauser objekt, kasutades kromedriver binaarne autojuhid / projekti kataloog.

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

Rida 12 leiab elemendi, millel on lehel ajatempli andmed, kasutades XPathi valijat, ja salvestab selle kausta ajatempel muutuv.

Rida 13 sõelub elemendi ajatempli andmed ja prindib need konsoolile.

Olen kopeerinud märgitud XPathi valija h2 element pärit unixtimestamp.com kasutades Chrome'i arendaja töö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 brauser.find_element_by_xpath (valija) meetod. Selle meetodi ainus parameeter on valija, mis on elemendi XPath valija.

Selle asemel brauser.find_element_by_xpath () meetodit, võite kasutada ka brauser.find_element (Autor, valija) meetod. See meetod vajab kahte parameetrit. Esimene parameeter Kõrval saab Kõrval.XPATH kuna kasutame valijat XPath ja teist parameetrit valija saab XPathi valija ise. Tulemus on sama.

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

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

$ python3 ex02.py

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

The brauser.find_elements_by_xpath () meetod võtab sama argumendi nagu brauser.find_element_by_xpath () meetod.

The brauser.find_elements () meetod võtab samad argumendid nagu brauser.find_element () meetod.

Vaatame näidet nimede loendi väljavõtmiseks, kasutades XPath selektorit juhuslik-nimegeneraator.info Selenium Pythoni teegiga.

Tellimata loend (ol silt) on 10 li märgendid, mis sisaldavad juhuslikku nime. XPath, et valida kõik li sildid ol silt on sel juhul // * [@ id = ”main”] / div [3] / div [2] / ol // li

Läheme läbi näite mitme elemendi valimisest veebilehelt XPathi valijate abil.

Looge uus Pythoni skript ex03.py ja tippige sinna järgmised koodiread.

seleeni impordi veebidraiverilt
seleenist.veebidraiver.tavaline.võtmed impordivad võtmeid
seleenist.veebidraiver.tavaline.impordi teel
valikud = veebidraiver.ChromeOptions ()
valikud.peata = tõsi
brauser = veebidraiver.Chrome (käivitatava_tee = "./ draiverid / chromedriver ",
valikud = valikud)
brauser.get ("http: // juhuslik-nimi-generaator.info / ")
nimed = brauser.find_elements_by_xpath ('
// * [@ id = "main"] / div [3] / div [2] / ol // li ')
nimi nimedes:
Prindi nimi.tekst)
brauser.Sulge()

Kui olete valmis, salvestage ex03.py Pythoni skript.

Rida 1–8 on sama, mis joonisel ex01.py Pythoni skript. Nii et ma ei hakka neid siin uuesti lahti seletama.

Rida 10 käsib brauseril veebisaidi juhuslike nimede generaatorit laadida.info.

Rida 12 valib nimede loendi, kasutades brauser.find_elements_by_xpath () meetod. See meetod kasutab XPathi valijat // * [@ id = ”main”] / div [3] / div [2] / ol // li nimede loendi leidmiseks. Seejärel salvestatakse nimede loend kausta nimed muutuv.

Ridades 13 ja 14 a eest silmust kasutatakse iteratsiooni kaudu nimed nimekiri ja printige nimed konsoolile.

16. rida sulgeb brauseri.

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

$ python3 ex03.py

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

Selle asemel, et kasutada brauser.find_elements_by_xpath () meetodit, saate kasutada ka brauser.find_elements () meetodit nagu varem. Selle meetodi esimene argument on Kõrval.XPATH, ja teine ​​argument on XPathi valija.

Katsetamiseks brauser.find_elements () meetodi abil looge uus Pythoni skript ex04.py, kopeerige kõik koodid aadressilt ex03.py kuni ex04.py, ja muutke rida 12, nagu on märgitud alloleval ekraanipildil.

Sa peaksid saama sama tulemuse nagu varem.

$ python3 ex04.py

XPath Selektori põhitõed:

Firefoxi või Google Chrome'i veebibrauseri arendaja tööriist genereerib XPathi valija automaatselt. Kuid neist XPathi valijatest ei piisa mõnikord teie projekti jaoks. Sellisel juhul peate teadma, mida teatud XPathi valija teeb teie XPathi valija ehitamiseks. 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 -v www

Looge uus fail veeb01.HTML aastal www / kataloog ja tippige selle faili järgmised read.






Põhiline HTML-dokument


Tere, Maailm



Kui olete valmis, salvestage veeb01.HTML faili.

Käivitage porti 8080 lihtne HTTP-server järgmise käsuga:

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

HTTP-server peaks käivituma.

Teil peaks olema juurdepääs sellele veeb01.HTML fail, 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. Siia saate sisestada oma XPathi valija ja vaadata, mida see valib. Kasutan seda tööriista kogu selles jaotises.

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

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

Toas HTML silt, meil on keha silt. The keha sildi saab valida XPathi valija abil / html / body

The h1 päis on keha silt. The h1 päise saab valida XPath valija abil / html / body / h1

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

Kui soovite näha, kuidas suhteline tee või osaline tee töötab, looge uus fail veeb02.HTML aastal www / kataloog ja tippige sinna järgmised koodiread.






Põhiline HTML-dokument


Tere, Maailm



see on sõnum




Tere, Maailm


Kui olete valmis, salvestage veeb02.HTML fail ja laadige see oma veebibrauserisse.

Nagu näete, XPathi valija // div / lk valib lk silt sildi sees div silt. See on XPathi suhtelise valija näide.

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

Niisiis, // div / lk tähendab valida lk element a sees div element, pole vahet, mis selle ette jõuab.

Elemente saate valida ka erinevate atribuutide järgi id, klass, tüüp, jne. XPathi valijat kasutades. Vaatame, kuidas seda teha.

Looge uus fail veeb03.HTML aastal www / kataloog ja tippige sinna järgmised koodiread.






Põhiline HTML-dokument


Tere, Maailm



see on sõnum


see on veel üks sõnum


2. rubriik


Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quibusdam
qualendi doloribus sapiente, molestias quos quae non nam incidunt quis delectus
facilis magni officiis alias neque atque fuga? Unde, aut natus?




see on jalus


Kui olete valmis, salvestage veeb03.HTML fail ja laadige see oma veebibrauserisse.

Oletame, et soovite valida kõik div elemendid, millel on klass nimi konteiner1. Selleks saate kasutada XPathi valijat // div [@ class = 'container1']

Nagu näete, on mul XPathi valijaga kaks elementi // div [@ class = 'container1']

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

Samamoodi saate valida teise div element koos klass nimi konteiner1 kasutades XPathi valijat // div [@ class = 'container1'] [2]

Elemente saate valida järgmiselt id samuti.

Näiteks elemendi valimiseks, millel on id kohta jalus-msg, saate kasutada XPathi valijat // * [@ id = 'jalus-msg']

Siin, * enne [@ id = 'jalus-msg'] kasutatakse ükskõik millise 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 teile näidanud, kuidas leida ja valida elemente veebilehtedelt, kasutades selektorit XPath koos Selenium Pythoni teegiga. Olen arutanud ka levinumaid XPathi valijaid. Pärast selle artikli lugemist peaksite end üsna kindlalt veebilehtedelt elemente valima, kasutades selektorit XPath koos Selenium Pythoni teegiga.

Kuidas muuta hiire vasakut ja paremat nuppu Windows 10 PC-s
On üsna tavaline, et kõik arvutihiirte seadmed on ergonoomiliselt mõeldud parempoolsete kasutajate jaoks. Kuid on olemas hiire seadmeid, mis on spetsi...
Jäljendage hiireklikke, hõljutades hiirega klõpsutut hiirt Windows 10-s
Hiire või klaviatuuri kasutamine liigses kasutamises vales asendis võib põhjustada palju terviseprobleeme, sealhulgas tüve, karpaalkanali sündroom ja ...
Nende tasuta tööriistade abil lisage Windows 10-le hiire liigutused
Viimastel aastatel on arvutid ja operatsioonisüsteemid palju arenenud. Oli aeg, mil kasutajad pidid failihaldurites navigeerimiseks kasutama käske. Na...