Selenium

XPath un Selenium izmantošana elementa atrašanai HTML lapā

XPath un Selenium izmantošana elementa atrašanai HTML lapā
XPath, kas pazīstams arī kā XML ceļa valoda, ir valoda elementu izvēlei no XML dokumenta. Tā kā HTML un XML atbilst vienai un tai pašai dokumenta struktūrai, XPath var izmantot arī, lai atlasītu elementus no tīmekļa lapas.

Tīmekļa lapas elementu atrašana un atlase ir atslēga, lai tīmekli nokasītu ar Selenium. Lai atrastu un atlasītu elementus no tīmekļa lapas, selenijā varat izmantot XPath atlasītājus.

Šajā rakstā es parādīšu, kā atrast un atlasīt tīmekļa lapu elementus, izmantojot Selathium XPath selektorus ar Selenium python bibliotēku. Tātad, sāksim darbu.

Priekšnosacījumi:

Lai izmēģinātu šī raksta komandas un piemērus, jums ir jābūt,

  1. Jūsu datorā ir instalēts Linux sadalījums (vēlams Ubuntu).
  2. Python 3 instalēts jūsu datorā.
  3. PIP 3 instalēts jūsu datorā.
  4. Python virtualenv pakotne instalēta jūsu datorā.
  5. Jūsu datorā ir instalētas Mozilla Firefox vai Google Chrome tīmekļa pārlūkprogrammas.
  6. Jāzina, kā instalēt Firefox Gecko draiveri vai Chrome tīmekļa draiveri.

Lai izpildītu 4., 5. un 6. prasību, izlasiet manu rakstu Ievads par selēnu Python 3. Vietnē LinuxHint varat atrast daudz rakstu par citām tēmām.com. Noteikti pārbaudiet tos, ja jums nepieciešama palīdzība.

Projektu direktorijas iestatīšana:

Lai viss būtu sakārtots, izveidojiet jaunu projekta direktoriju selēns-xpath / sekojoši:

$ mkdir -pv selenium-xpath / draiveri

Pārejiet uz selēns-xpath / projekta direktoriju šādi:

$ cd selēns-xpath /

Izveidojiet Python virtuālo vidi projekta direktorijā šādi:

$ virtualenv .venv

Aktivizējiet virtuālo vidi šādi:

$ avots .venv / bin / aktivizēt

Instalējiet Selenium Python bibliotēku, izmantojot PIP3, šādi:

$ pip3 instalējiet selēnu

Lejupielādējiet un instalējiet visu nepieciešamo tīmekļa draiveri vadītāji / projekta direktoriju. Es savā rakstā esmu izskaidrojis tīmekļa draiveru lejupielādes un instalēšanas procesu Ievads par selēnu Python 3.

Iegūstiet XPath selektoru, izmantojot Chrome izstrādātāja rīku:

Šajā sadaļā es jums parādīšu, kā atrast selektora tīmekļa lapu elementu, kuru vēlaties atlasīt, izmantojot Selenium, izmantojot Google Chrome tīmekļa pārlūkprogrammas iebūvēto izstrādātāja rīku.

Lai iegūtu XPath selektoru, izmantojot Google Chrome tīmekļa pārlūkprogrammu, atveriet Google Chrome un apmeklējiet vietni, no kuras vēlaties iegūt datus. Pēc tam tukšā lapas apgabalā nospiediet peles labo pogu (RMB) un noklikšķiniet uz Pārbaudiet lai atvērtu Chrome izstrādātāja rīks.

Varat arī nospiest + Shift + Es lai atvērtu Chrome izstrādātāja rīks.

Chrome izstrādātāja rīks būtu jāatver.

Lai atrastu vēlamā tīmekļa lapas elementa HTML attēlojumu, noklikšķiniet uz Pārbaudiet(

) ikona, kā norādīts zemāk redzamajā ekrānuzņēmumā.

Pēc tam virziet kursoru virs vajadzīgā tīmekļa lapas elementa un nospiediet peles kreiso pogu (LMB), lai to atlasītu.

Atlasītā tīmekļa elementa HTML attēlojums tiks izcelts Elementi cilne Chrome izstrādātāja rīks, kā redzat zemāk redzamajā ekrānuzņēmumā.

Lai iegūtu vēlamā elementa atlasītāju XPath, atlasiet elementu no Elementi cilne Chrome izstrādātāja rīks un ar peles labo pogu noklikšķiniet uz tā (RMB). Pēc tam atlasiet Kopēt > Kopēt XPath, kā norādīts zemāk redzamajā ekrānuzņēmumā.

Esmu ielīmējis XPath selektoru teksta redaktorā. XPath atlasītājs izskatās kā parādīts zemāk esošajā ekrānuzņēmumā.

Iegūstiet XPath selektoru, izmantojot Firefox Developer Tool:

Šajā sadaļā es parādīšu, kā atrast tīmekļa lapas elementa atlasītāju XPath, kuru vēlaties atlasīt, izmantojot Selenium, izmantojot Mozilla Firefox tīmekļa pārlūkprogrammas iebūvēto izstrādātāja rīku.

Lai iegūtu XPath selektoru, izmantojot Firefox tīmekļa pārlūkprogrammu, atveriet Firefox un apmeklējiet vietni, no kuras vēlaties iegūt datus. Pēc tam tukšā lapas apgabalā nospiediet peles labo pogu (RMB) un noklikšķiniet uz Pārbaudīt elementu (Q) lai atvērtu Firefox izstrādātāja rīks.

Firefox izstrādātāja rīks būtu jāatver.

Lai atrastu vēlamā tīmekļa lapas elementa HTML attēlojumu, noklikšķiniet uz Pārbaudiet(

) ikona, kā norādīts zemāk redzamajā ekrānuzņēmumā.

Pēc tam virziet kursoru virs vajadzīgā tīmekļa lapas elementa un nospiediet peles kreiso pogu (LMB), lai to atlasītu.

Atlasītā tīmekļa elementa HTML attēlojums tiks izcelts Inspektors cilne Firefox izstrādātāja rīks, kā redzat zemāk redzamajā ekrānuzņēmumā.

Lai iegūtu vēlamā elementa atlasītāju XPath, atlasiet elementu no Inspektors cilne Firefox izstrādātāja rīks un ar peles labo pogu noklikšķiniet uz tā (RMB). Pēc tam atlasiet Kopēt > XPath kā norādīts zemāk redzamajā ekrānuzņēmumā.

Jūsu vēlamā elementa XPath atlasītājam vajadzētu izskatīties apmēram šādi.

Datu iegūšana no tīmekļa lapām, izmantojot XPath Selector:

Šajā sadaļā es parādīšu, kā atlasīt tīmekļa lapas elementus un iegūt datus no tiem, izmantojot selektoru XPath selektorus ar Selenium Python bibliotēku.

Vispirms izveidojiet jaunu Python skriptu ex01.py un ierakstiet šādas kodu rindas.

no selēna importa tīmekļa draivera
no selēna.tīmekļa draiveris.bieži.atslēgu importēšana
no selēna.tīmekļa draiveris.bieži.pēc importa
opcijas = tīmekļa draiveris.Chrome opcijas ()
iespējas.bez galvas = patiess
pārlūks = tīmekļa draiveris.Chrome (izpildāmā_ceļš = "./ draiveri / chromedriver ",
opcijas = opcijas)
pārlūku.get ("https: // www.unixtimestamp.com / ")
timestamp = pārlūks.find_element_by_xpath ('/ html / body / div [1] / div [1]
/ div [2] / div [1] / div / div / h3 [2] ')
drukāt ('Pašreizējais laika zīmogs:% s'% (laika zīmogs.tekstu.sadalīt (") [0]))
pārlūku.aizvērt ()

Kad esat pabeidzis, saglabājiet ex01.py Python skripts.

1.3.rindā tiek importēti visi nepieciešamie selēna komponenti.

5. rindiņa izveido objektu Chrome opcijas, bet 6. rindiņa ļauj Chrome tīmekļa pārlūkprogrammai izmantot režīmu bez galvas.

8. rindiņa izveido Chrome pārlūku objektu, izmantojot hromedriver binārs no vadītāji / projekta direktoriju.

10. rinda liek pārlūkprogrammai ielādēt vietnes unikxtimestamp.com.

12. Rindā atrod elementu, kuram ir laika zīmoga dati no lapas, izmantojot atlasītāju XPath, un saglabā tos mapē laika zīmogs mainīgais.

13. rinda parsē elementa laika zīmoga datus un izdrukā tos konsolē.

Esmu nokopējis atzīmētā XPath atlasītāju h2 elements no unixtimestamp.com izmantojot Chrome izstrādātāja rīku.

14. rindiņa aizver pārlūku.

Palaidiet Python skriptu ex01.py sekojoši:

$ python3 ex01.py

Kā redzat, laika zīmoga dati tiek drukāti uz ekrāna.

Lūk, es esmu izmantojis pārlūku.find_element_by_xpath (atlasītājs) metodi. Vienīgais šīs metodes parametrs ir selektors, kas ir elementa XPath atlasītājs.

Tā vietā pārlūku.find_element_by_xpath () metodi, varat arī izmantot pārlūku.atrast_elementu (pēc atlasītāja) metodi. Šai metodei ir vajadzīgi divi parametri. Pirmais parametrs Autors būs Autors.XPATH kā mēs izmantosim XPath selektoru un otro parametru selektors būs pats XPath atlasītājs. Rezultāts būs tāds pats.

Lai redzētu kā pārlūku.atrast_elementu () metode darbojas XPath selektorā, izveidojiet jaunu Python skriptu ex02.py, nokopējiet un ielīmējiet visas rindiņas no ex01.py uz ex02.py un mainīt 12. rindiņa kā norādīts zemāk redzamajā ekrānuzņēmumā.

Kā redzat, Python skripts ex02.py dod tādu pašu rezultātu kā ex01.py.

$ python3 ex02.py

The pārlūku.find_element_by_xpath () un pārlūku.atrast_elementu () metodes tiek izmantotas, lai tīmekļa lapās atrastu un atlasītu vienu elementu. Ja vēlaties atrast un atlasīt vairākus elementus, izmantojot XPath selektorus, jums tas jāizmanto pārlūku.find_elements_by_xpath () vai pārlūku.atrast_elementus () metodes.

The pārlūku.find_elements_by_xpath () metode izmanto to pašu argumentu kā pārlūku.find_element_by_xpath () metodi.

The pārlūku.atrast_elementus () metode ņem tos pašus argumentus kā pārlūku.atrast_elementu () metodi.

Apskatīsim piemēru vārdu saraksta izvilkšanai, izmantojot XPath selector from izlases nosaukumu ģenerators.info ar Selenium Python bibliotēku.

Nesakārtotais saraksts (ol tagam) ir 10 li tagi katrā satur nejaušu vārdu. XPath, lai atlasītu visus li tagi iekšpusē ol tag šajā gadījumā ir // * [@ id = ”main”] / div [3] / div [2] / ol // li

Apskatīsim vairāku tīmekļa vietnes elementu atlases piemēru, izmantojot XPath selektorus.

Izveidojiet jaunu Python skriptu ex03.py un tajā ierakstiet šādas kodu rindas.

no selēna importa tīmekļa draivera
no selēna.tīmekļa draiveris.bieži.atslēgu importēšana
no selēna.tīmekļa draiveris.bieži.pēc importa
opcijas = tīmekļa draiveris.Chrome opcijas ()
iespējas.bez galvas = patiess
pārlūks = tīmekļa draiveris.Chrome (izpildāmā_ceļš = "./ draiveri / chromedriver ",
opcijas = opcijas)
pārlūku.get ("http: // izlases nosaukumu ģenerators.info / ")
nosaukumi = pārlūks.find_elements_by_xpath ('
// * [@ id = "main"] / div [3] / div [2] / ol // li ')
vārdam nosaukumos:
drukāt (nosaukums.teksts)
pārlūku.aizvērt ()

Kad esat pabeidzis, saglabājiet ex03.py Python skripts.

1. – 8. Rinda ir tāda pati kā rindā ex01.py Python skripts. Tāpēc es tos šeit vairs nepaskaidrošu.

10. rinda liek pārlūkprogrammai ielādēt vietni random-name-generator.info.

12. rindā tiek atlasīts vārdu saraksts, izmantojot pārlūku.find_elements_by_xpath () metodi. Šajā metodē tiek izmantots atlasītājs XPath // * [@ id = ”main”] / div [3] / div [2] / ol // li lai atrastu vārdu sarakstu. Pēc tam vārdu saraksts tiek saglabāts mapē vārdi mainīgais.

13. un 14. rindā a priekš cilpa tiek izmantota iterācijai caur nosaukumi sarakstu un izdrukājiet vārdus konsolē.

16. rindiņa aizver pārlūku.

Palaidiet Python skriptu ex03.py sekojoši:

$ python3 ex03.py

Kā redzat, vārdi tiek izvilkti no tīmekļa lapas un izdrukāti konsolē.

Tā vietā, lai izmantotu pārlūku.find_elements_by_xpath () metodi, varat izmantot arī pārlūku.atrast_elementus () metodi kā iepriekš. Pirmais šīs metodes arguments ir Autors.XPATH, un otrais arguments ir XPath selektors.

Lai eksperimentētu pārlūku.atrast_elementus () metodi, izveidojiet jaunu Python skriptu ex04.py, kopēt visus kodus no ex03.py uz ex04.py, un mainiet 12. līniju, kā norādīts zemāk redzamajā ekrānuzņēmumā.

Jums vajadzētu iegūt tādu pašu rezultātu kā iepriekš.

$ python3 ex04.py

XPath Selector pamati:

Firefox vai Google Chrome tīmekļa pārlūkprogrammas izstrādātāja rīks automātiski ģenerē XPath atlasītāju. Bet šie XPath atlasītāji dažreiz nav pietiekami jūsu projektam. Tādā gadījumā jums jāzina, ko konkrēts XPath selektors dara, lai izveidotu savu XPath selektoru. Šajā sadaļā es jums parādīšu XPath atlasītāju pamatus. Tad jums vajadzētu būt iespējai izveidot savu XPath selektoru.

Izveidojiet jaunu direktoriju www / projekta direktorijā šādi:

$ mkdir -v www

Izveidojiet jaunu failu web01.html iekš www / direktoriju un ierakstiet nākamās šī faila rindas.






HTML HTML dokuments


Sveika pasaule



Kad esat pabeidzis, saglabājiet web01.html failu.

Palaidiet vienkāršu HTTP serveri portā 8080, izmantojot šādu komandu:

$ python3 -m http.serveris - direktorijs www / 8080

Jāsāk HTTP serveris.

Jums vajadzētu būt iespējai piekļūt web01.html failu, izmantojot vietrādi URL: http: // localhost: 8080 / web01.html, kā redzat zemāk redzamajā ekrānuzņēmumā.

Kamēr Firefox vai Chrome Developer Tool ir atvērts, nospiediet + F lai atvērtu meklēšanas lodziņu. Šeit varat ierakstīt savu XPath selektoru un redzēt, ko tas ļoti viegli izvēlas. Es izmantošu šo rīku visā šajā sadaļā.

XPath selektors sākas ar a slīpsvītra uz priekšu (/) lielāko daļu laika. Tas ir kā Linux direktoriju koks. The / ir visu tīmekļa lapas elementu sakne.

Pirmais elements ir html. Tātad, XPath atlasītājs / html atlasa visu html tagu.

Iekšpusē html tag, mums ir ķermeņa tagu. The ķermeņa tagu var atlasīt ar atlasītāju XPath / html / body

The h1 galvene ir iekšpusē ķermeņa tagu. The h1 galveni var izvēlēties ar XPath selektoru / html / body / h1

Šāda veida XPath selektoru sauc par absolūtā ceļa selektoru. Absolūtā ceļa selektorā jums jāšķērso tīmekļa lapa no lapas saknes (/). Absolūtā ceļa selektora trūkums ir tāds, ka pat nelielas izmaiņas tīmekļa lapas struktūrā var padarīt XPath selektoru nederīgu. Šīs problēmas risinājums ir relatīvs vai daļējs XPath selektors.

Lai redzētu, kā darbojas relatīvais ceļš vai daļējais ceļš, izveidojiet jaunu failu web02.html iekš www / direktoriju un ierakstiet tajā sekojošās kodu rindas.






HTML HTML dokuments


Sveika pasaule



tas ir vēstījums




Sveika pasaule


Kad esat pabeidzis, saglabājiet web02.html failu un ielādējiet to savā tīmekļa pārlūkprogrammā.

Kā redzat, XPath selektors // div / lpp izvēlas lpp tag iekšā div tagu. Šis ir relatīvā XPath selektora piemērs.

Relatīvais XPath atlasītājs sākas ar //. Tad jūs norādāt atlasāmā elementa struktūru. Šajā gadījumā, div / lpp.

Tātad, // div / lpp nozīmē atlasīt lpp elements iekšpusē a div elements, nav svarīgi, kas ir pirms tā.

Varat arī atlasīt elementus pēc dažādiem atribūtiem, piemēram, id, klasē, tips, utt. izmantojot XPath selektoru. Apskatīsim, kā to izdarīt.

Izveidojiet jaunu failu web03.html iekš www / direktoriju un ierakstiet tajā sekojošās kodu rindas.






HTML HTML dokuments


Sveika pasaule



tas ir vēstījums


šī ir vēl viena ziņa


2. virsraksts


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




šī ir kājene


Kad esat pabeidzis, saglabājiet web03.html failu un ielādējiet to savā tīmekļa pārlūkprogrammā.

Pieņemsim, ka vēlaties atlasīt visus div elementi, kuriem ir klasē nosaukums konteiners1. Lai to izdarītu, varat izmantot XPath selektoru // div [@ class = 'container1']

Kā redzat, man ir 2 elementi, kas atbilst XPath selektoram // div [@ class = 'container1']

Lai izvēlētos pirmo div elements ar klasē nosaukums konteiners1, pievienot [1] XPath beigās atlasiet, kā parādīts zemāk esošajā ekrānuzņēmumā.

Tādā pašā veidā jūs varat izvēlēties otro div elements ar klasē nosaukums konteiners1 izmantojot selektoru XPath // div [@ class = 'container1'] [2]

Elementus varat atlasīt pēc id arī.

Piemēram, lai atlasītu elementu, kuram ir id gada kājene-ziņa, varat izmantot XPath selektoru // * [@ id = 'footer-msg']

Lūk, * pirms [@ id = 'footer-msg'] tiek izmantots, lai atlasītu jebkuru elementu neatkarīgi no tā taga.

Tie ir XPath selektora pamati. Tagad jums vajadzētu būt iespējai izveidot savu XPath selektoru saviem Selenium projektiem.

Secinājums:

Šajā rakstā es parādīju, kā atrast un atlasīt elementus no tīmekļa lapām, izmantojot selektoru XPath ar bibliotēku Selenium Python. Esmu apspriedis arī visbiežāk sastopamos XPath atlasītājus. Pēc šī raksta izlasīšanas jums vajadzētu justies diezgan pārliecināti, atlasot elementus no tīmekļa lapām, izmantojot selektoru XPath ar Selenium Python bibliotēku.

Kontrolējiet un pārvaldiet peles kustību starp vairākiem monitoriem sistēmā Windows 10
Dual Display Mouse Manager ļauj kontrolēt un konfigurēt peles kustību starp vairākiem monitoriem, palēninot tās kustību robežas tuvumā. Windows 10/8 ļ...
WinMouse ļauj jums pielāgot un uzlabot peles rādītāja kustību Windows datorā
Ja vēlaties uzlabot peles rādītāja noklusējuma funkcijas, izmantojiet bezmaksas programmatūru WinMouse. Tas pievieno vairāk funkciju, kas palīdzēs jum...
Peles kreisā klikšķa poga nedarbojas operētājsistēmā Windows 10
Ja ar klēpjdatoru vai galddatoru izmantojat īpašu peli, bet nedarbojas peles kreisās klikšķa poga kādu iemeslu dēļ operētājsistēmā Windows 10/8/7 šeit...