Szelén

Az XPath és a Selenium használata elem keresésére a HTML oldalon

Az XPath és a Selenium használata elem keresésére a HTML oldalon
Az XPath, más néven XML elérési nyelv, az XML dokumentum elemeinek kiválasztására szolgáló nyelv. Mivel a HTML és az XML ugyanazt a dokumentumstruktúrát követi, az XPath segítségével elemeket is kiválaszthat egy weboldalról.

Az elemek megkeresése és kiválasztása a weboldalról a szelén segítségével történő webes kaparás kulcsa. A weboldal elemeinek megkereséséhez és kijelöléséhez használhatja a Selenium XPath választóit.

Ebben a cikkben bemutatom, hogyan keresse meg és válassza ki a weboldalak elemeit a Selenium XPath választóival a Selenium python könyvtár segítségével. Tehát kezdjük.

Előfeltételek:

A cikk parancsainak és példáinak kipróbálásához rendelkeznie kell,

  1. A számítógépre telepített Linux disztribúció (lehetőleg Ubuntu).
  2. A Python 3 telepítve van a számítógépre.
  3. A PIP 3 telepítve van a számítógépre.
  4. Piton virtualenv számítógépre telepített csomagot.
  5. A számítógépre telepített Mozilla Firefox vagy Google Chrome böngészők.
  6. Tudnia kell a Firefox Gecko illesztőprogram vagy a Chrome internetes illesztőprogram telepítését.

A 4., 5. és 6. követelmény teljesítéséhez olvassa el cikkemet Bevezetés a szelénbe a Python 3-ban. Számos cikket talál a LinuxHint egyéb témáiról.com. Ügyeljen arra, hogy ellenőrizze őket, ha segítségre van szüksége.

Projektkönyvtár beállítása:

Ha mindent rendben szeretne tartani, hozzon létre egy új projektkönyvtárat szelén-xpath / alábbiak szerint:

$ mkdir -pv selenium-xpath / meghajtók

Navigáljon a szelén-xpath / projekt könyvtár az alábbiak szerint:

$ cd szelén-xpath /

Hozzon létre egy Python virtuális környezetet a projektkönyvtárban az alábbiak szerint:

$ virtualenv .venv

Aktiválja a virtuális környezetet az alábbiak szerint:

$ forrás .venv / bin / aktiválás

Telepítse a Selenium Python könyvtárat a PIP3 segítségével az alábbiak szerint:

$ pip3 telepítse a szelént

Töltse le és telepítse az összes szükséges webes illesztőprogramot a járművezetők / a projekt könyvtárát. Cikkemben ismertettem a webes illesztőprogramok letöltésének és telepítésének folyamatát Bevezetés a szelénbe a Python 3-ban.

Töltse le az XPath Selector programot a Chrome Developer Tool segítségével:

Ebben a részben bemutatom, hogyan találhatja meg a Selenium segítségével kiválasztani kívánt weboldal elem XPath választóját a Google Chrome böngésző beépített fejlesztői eszközével.

Ha meg szeretné szerezni az XPath választót a Google Chrome böngészővel, nyissa meg a Google Chrome alkalmazást, és keresse fel azt a webhelyet, amelyről adatokat szeretne kinyerni. Ezután nyomja meg a jobb egérgombot (RMB) az oldal üres részén, majd kattintson a gombra Ellenőrizze hogy kinyissa a Chrome Developer Tool.

Megnyomhatja a gombot is + Váltás + én hogy kinyissa a Chrome Developer Tool.

Chrome Developer Tool meg kell nyitni.

A kívánt weblap elem HTML ábrázolásának megkereséséhez kattintson a gombra Ellenőrizze(

) ikonra, az alábbi képernyőképen látható módon.

Ezután vigye az egérmutatót a kívánt weboldal elem fölé, és nyomja meg az egér bal gombját (LMB) a kiválasztásához.

A kiválasztott webelem HTML reprezentációja ki lesz emelve a Elemek fül a Chrome Developer Tool, ahogy az alábbi képernyőképen láthatja.

A kívánt elem XPath választójának megszerzéséhez válassza ki az elemet a Elemek lapja Chrome Developer Tool és kattintson rá a jobb gombbal (RMB). Ezután válassza ki Másolat > XPath másolása, az alábbi képernyőképen jelölt módon.

Beillesztettem egy szövegszerkesztőbe az XPath választót. Az XPath választó úgy néz ki, mint az alábbi képernyőképen látható.

Töltse le az XPath Selector alkalmazást a Firefox Developer Tool segítségével:

Ebben a részben bemutatom, hogyan találhatja meg a Selenium segítségével kiválasztani kívánt weboldal elem XPath választóját a Mozilla Firefox böngésző beépített fejlesztői eszközével.

Ha meg szeretné szerezni az XPath választót a Firefox böngészővel, nyissa meg a Firefoxot, és keresse fel azt a weboldalt, amelyről adatokat szeretne kinyerni. Ezután nyomja meg a jobb egérgombot (RMB) az oldal üres részén, majd kattintson a gombra Ellenőrizze az elemet (Q) hogy kinyissa a Firefox fejlesztői eszköz.

Firefox fejlesztői eszköz meg kell nyitni.

A kívánt weblap elem HTML ábrázolásának megkereséséhez kattintson a gombra Ellenőrizze(

) ikonra, az alábbi képernyőképen látható módon.

Ezután vigye az egérmutatót a kívánt weboldal elem fölé, és nyomja meg az egér bal gombját (LMB) a kiválasztásához.

A kiválasztott webes elem HTML-ábrázolása ki lesz emelve a Ellenőr lapja Firefox fejlesztői eszköz, ahogy az alábbi képernyőképen láthatja.

A kívánt elem XPath választójának megszerzéséhez válassza ki az elemet a Ellenőr lapja Firefox fejlesztői eszköz és kattintson rá a jobb gombbal (RMB). Ezután válassza ki Másolat > XPath az alábbi képernyőképen jelölt módon.

A kívánt elem XPath választójának ilyennek kell lennie.

Adatok kinyerése weboldalakról az XPath Selector segítségével:

Ebben a részben bemutatom, hogyan válasszon ki weboldal elemeket és vonjon ki belőlük adatokat az XPath választókkal a Selenium Python könyvtár segítségével.

Először hozzon létre egy új Python szkriptet ex01.py és írja be a következő kódsorokat.

a szelénimport-meghajtóról
szelénből.web meghajtó.gyakori.kulcsok importálása kulcsok
szelénből.web meghajtó.gyakori.behozatal által
opciók = webdriver.ChromeOptions ()
opciók.fejetlen = Igaz
böngésző = webdriver.Chrome (végrehajtható_útvonal = "./ drivers / chromedriver ",
opciók = opciók)
böngésző.get ("https: // www.unixtimestamp.com / ")
időbélyeg = böngésző.find_element_by_xpath ('/ html / body / div [1] / div [1]
/ div [2] / div [1] / div / div / h3 [2] ')
nyomtatás ('Aktuális időbélyeg:% s'% (időbélyeg.szöveg.felosztás (") [0]))
böngésző.Bezárás()

Ha elkészült, mentse a ex01.py Python szkript.

Az 1-3. Sor az összes szükséges szelén alkatrészt importálja.

Az 5. sor létrehoz egy Chrome Options objektumot, a 6. sor pedig fej nélküli módot engedélyez a Chrome böngészőben.

A 8. sor létrehoz egy Chrome-ot böngésző objektum a chromedriver bináris a járművezetők / a projekt könyvtárát.

A 10. sor azt mondja a böngészőnek, hogy töltse be a webhely unixtimestamp-jét.com.

A 12. sor megtalálja azt az elemet, amely az időbélyeg adatait tartalmazza az oldalról az XPath választóval, és eltárolja az időbélyeg változó.

A 13. sor elemzi az elem időbélyegének adatait, és kinyomtatja a konzolra.

Másoltam a megjelölt XPath választóját h2 elem unixtimestamp.com a Chrome Developer Tool használatával.

A 14. sor bezárja a böngészőt.

Futtassa a Python szkriptet ex01.py alábbiak szerint:

$ python3 ex01.py

Mint látható, az időbélyeg adatok kinyomtatásra kerülnek a képernyőn.

Itt használtam a böngésző.find_element_by_xpath (választó) módszer. A módszer egyetlen paramétere a választó, amely az elem XPath választója.

Ahelyett böngésző.find_element_by_xpath () módszerrel is használhatja böngésző.find_element (Által, választó) módszer. Ehhez a módszerhez két paraméterre van szükség. Az első paraméter Által lesz Által.XPATH mivel az XPath választót és a második paramétert fogjuk használni választó maga lesz az XPath választó. Az eredmény ugyanaz lesz.

Hogy lássa, hogyan böngésző.find_element () A módszer az XPath választónál működik, hozzon létre egy új Python szkriptet ex02.py, másolja és illessze be az összes sort innen ex01.py nak nek ex02.py és változtass 12. sor az alábbi képernyőképen jelölt módon.

Mint látható, a Python szkript ex02.py ugyanazt az eredményt adja, mint ex01.py.

$ python3 ex02.py

A böngésző.find_element_by_xpath () és böngésző.find_element () módszereket használnak egyetlen elem megkeresésére és kiválasztására a weboldalakról. Ha több elemet akar keresni és kiválasztani az XPath választókkal, akkor használnia kell böngésző.find_elements_by_xpath () vagy böngésző.find_elements () mód.

A böngésző.find_elements_by_xpath () metódus ugyanazt az érvet veszi fel, mint a böngésző.find_element_by_xpath () módszer.

A böngésző.find_elements () metódus ugyanazokat az érveket veszi fel, mint a böngésző.find_element () módszer.

Lássunk egy példát a névlista kivonására az XPath választóval a random-name-generator.info a Selenium Python könyvtárral.

A rendezetlen lista (ol tag) 10-es li belsejében egy véletlenszerű nevet tartalmazó címkék. Az XPath az összes kijelöléséhez li címkék a ol tag ebben az esetben az // * [@ id = ”main”] / div [3] / div [2] / ol // li

Nézzünk át egy példát arra, hogy több elemet jelölünk ki a weboldalról az XPath választókkal.

Hozzon létre egy új Python szkriptet ex03.py és írja be a következő kódsorokat benne.

a szelénimport-meghajtóról
szelénből.web meghajtó.gyakori.kulcsok importálása kulcsok
szelénből.web meghajtó.gyakori.behozatal által
opciók = webdriver.ChromeOptions ()
opciók.fejetlen = Igaz
böngésző = webdriver.Chrome (végrehajtható_útvonal = "./ drivers / chromedriver ",
opciók = opciók)
böngésző.get ("http: // random-name-generator.info / ")
nevek = böngésző.find_elements_by_xpath ('
// * [@ id = "main"] / div [3] / div [2] / ol // li ')
a névhez a nevekben:
nyomtatott név.szöveg)
böngésző.Bezárás()

Ha elkészült, mentse a ex03.py Python szkript.

Az 1–8. Sor megegyezik a ex01.py Python szkript. Tehát nem fogom itt újra elmagyarázni őket.

A 10. sor azt mondja a böngészőnek, hogy töltse be a webhely véletlen-név-generátort.info.

A 12. sor a név segítségével választja ki a névlistát böngésző.find_elements_by_xpath () módszer. Ez a módszer az XPath választót használja // * [@ id = ”main”] / div [3] / div [2] / ol // li hogy megtalálja a névlistát. Ezután a névlista a nevek változó.

A 13. és a 14. sorban a mert ciklust használjuk a nevek listázza és nyomtassa ki a neveket a konzolra.

A 16. sor bezárja a böngészőt.

Futtassa a Python szkriptet ex03.py alábbiak szerint:

$ python3 ex03.py

Mint láthatja, a neveket kivonják a weboldalról és kinyomtatják a konzolra.

Ahelyett, hogy a böngésző.find_elements_by_xpath () módszerrel, használhatja a böngésző.find_elements () módszer, mint korábban. Ennek a módszernek az első érve az Által.XPATH, a második érv pedig az XPath választó.

Kísérletezni böngésző.find_elements () módszerrel hozzon létre egy új Python szkriptet ex04.py, másolja az összes kódot innen ex03.py nak nek ex04.py, és módosítsa a 12. sort az alábbi képernyőképen látható módon.

Ugyanazt az eredményt kell kapnia, mint korábban.

$ python3 ex04.py

Az XPath Selector alapjai:

A Firefox vagy a Google Chrome böngésző Fejlesztői eszköze automatikusan létrehozza az XPath választót. De ezek az XPath választók néha nem elegendőek a projektedhez. Ebben az esetben tudnia kell, hogy egy bizonyos XPath választó mit csinál az XPath választó felépítéséhez. Ebben a részben bemutatom az XPath választók alapjait. Ezután képesnek kell lennie a saját XPath választójának elkészítésére.

Hozzon létre egy új könyvtárat www / a projekt könyvtárban az alábbiak szerint:

$ mkdir -v www

Hozzon létre egy új fájlt web01.html ban,-ben www / könyvtárat, és írja be a fájl következő sorait.






Alap HTML dokumentum


Helló Világ



Ha elkészült, mentse a web01.html fájl.

Futtasson egy egyszerű HTTP-kiszolgálót a 8080-as porton a következő paranccsal:

$ python3 -m http.szerver - www / 8080 könyvtár

A HTTP szervernek el kell indulnia.

Hozzá kell férnie a web01.html fájl a következő URL-címmel: http: // localhost: 8080 / web01.html, amint az az alábbi képernyőképen látható.

Amíg a Firefox vagy a Chrome Developer Tool meg van nyitva, nyomja meg a gombot + F a keresőmező megnyitásához. Itt beírhatja az XPath választót, és megnézheti, hogy mit választ ki nagyon egyszerűen. Ezt az eszközt ebben a szakaszban fogom használni.

Az XPath választó a-val kezdődik perjel (/) az idő nagy részében. Olyan, mint egy Linux könyvtárfa. A / a weboldal összes elemének gyökere.

Az első elem a html. Tehát, az XPath választó / html kiválasztja az egészet html címke.

Benne html tag, van egy test címke. A test tag kiválasztható az XPath választóval / html / body

A h1 fejléc a test címke. A h1 fejléc az XPath választóval választható ki / html / body / h1

Ezt a típusú XPath választót abszolút útválasztónak nevezzük. Az abszolút útválasztóban meg kell haladnia a weblapon az oldal gyökerétől (/). Az abszolút útválasztó hátránya, hogy a weblap felépítésének enyhe módosítása is érvénytelenné teheti az XPath választót. A probléma megoldása egy relatív vagy részleges XPath választó.

Hozzon létre egy új fájlt a relatív elérési út vagy a részleges elérési út működésének megtekintéséhez web02.html ban,-ben www / könyvtárat, és írja be a következő kódsorokat.






Alap HTML dokumentum


Helló Világ



ez üzenet




Helló Világ


Ha elkészült, mentse a web02.html fájlt, és töltse be a webböngészőbe.

Amint láthatja, az XPath választó // div / p kiválasztja a o címke a div címke. Ez egy példa egy relatív XPath választóra.

A relatív XPath választó ezzel kezdődik //. Ezután megadja a kiválasztani kívánt elem felépítését. Ebben az esetben, div / p.

Így, // div / p azt jelenti, hogy válassza ki a o elem belsejében a div elem, nem számít, mi következik előtte.

Az elemeket különféle attribútumok alapján is kiválaszthatja, például id, osztály, típus, stb. az XPath választóval. Lássuk, hogyan kell ezt megtenni.

Hozzon létre egy új fájlt web03.html ban,-ben www / könyvtárat, és írja be a következő kódsorokat.






Alap HTML dokumentum


Helló Világ



ez üzenet


ez egy másik üzenet


2. címsor


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




ez egy lábléc


Ha elkészült, mentse a web03.html fájlt, és töltse be a webböngészőbe.

Tegyük fel, hogy az összeset ki akarja jelölni div elemek, amelyek osztály név tartály1. Ehhez használhatja az XPath választót // div [@ class = 'container1']

Amint láthatja, két elemem van, amelyek megfelelnek az XPath választónak // div [@ class = 'container1']

Az első kiválasztásához div elem a osztály név tartály1, hozzá [1] az XPath végén válassza ki, ahogy az alábbi képernyőképen látható.

Ugyanígy kiválaszthatja a másodikat is div elem a osztály név tartály1 az XPath választóval // div [@ class = 'container1'] [2]

Az elemeket kiválaszthatja id is.

Például annak az elemnek a kiválasztása, amely rendelkezik az id nak,-nek lábléc-üzenet, használhatja az XPath választót // * [@ id = 'lábléc-üzenet']

Itt a * előtt [@ id = 'lábléc-üzenet'] bármely elem kiválasztására szolgál, függetlenül a címkéjüktől.

Ez az XPath választó alapjai. Most létre kell hoznia saját XPath választót a Selenium projektekhez.

Következtetés:

Ebben a cikkben bemutattam, hogyan lehet weblapok elemeit megtalálni és kiválasztani az XPath választóval a Selenium Python könyvtár segítségével. Megbeszéltem a leggyakoribb XPath választókat is. A cikk elolvasása után elég magabiztosnak kell lennie a weblapok elemeinek kiválasztásával az XPath választóval a Selenium Python könyvtár segítségével.

A Doom telepítése és lejátszása Linuxon
Bevezetés a Doom-ba A Doom sorozat a 90-es években keletkezett az eredeti Doom megjelenése után. Azonnali sláger volt, és ettől kezdve a játéksorozat ...
Vulkan Linux felhasználók számára
A grafikus kártyák minden új generációjával azt látjuk, hogy a játékfejlesztők átlépik a grafikus hűség határait, és egy lépéssel közelebb kerülnek a ...
OpenTTD vs Simutrans
Saját közlekedési szimuláció létrehozása szórakoztató, pihentető és rendkívül csábító lehet. Ezért meg kell győződnie arról, hogy a lehető legtöbb ját...