Коришћење КСПатх -а и Селениум -а за проналажење елемента на ХТМЛ страници

Using Xpath Selenium Find An Element Html Page



КСПатх, такође познат као КСМЛ Патх Лангуаге, је језик за избор елемената из КСМЛ документа. Како ХТМЛ и КСМЛ прате исту структуру документа, КСПатх се такође може користити за одабир елемената са веб странице.

Лоцирање и одабир елемената са веб странице кључ је за гребање веба помоћу Селениум -а. За лоцирање и одабир елемената са веб странице, можете користити КСПатх селекторе у Селениум -у.





У овом чланку ћу вам показати како лоцирати и одабрати елементе са веб страница помоћу КСПатх селектора у Селениум -у са библиотеком Селениум питхон. Дакле, почнимо.



Предуслови:

Да бисте испробали команде и примере овог чланка, морате имати,



  1. Линук дистрибуција (по могућности Убунту) инсталирана на вашем рачунару.
  2. Питхон 3 инсталиран на вашем рачунару.
  3. ПИП 3 инсталиран на вашем рачунару.
  4. Питхон виртуаленв пакет инсталиран на вашем рачунару.
  5. Мозилла Фирефок или Гоогле Цхроме веб прегледачи инсталирани на вашем рачунару.
  6. Морате знати како да инсталирате Фирефок Гецко управљачки програм или Цхроме веб управљачки програм.

Да бисте испунили услове 4, 5 и 6, прочитајте мој чланак Увод у селен у Питхону 3 . Можете пронаћи многе чланке о другим темама на ЛинукХинт.цом . Обавезно их проверите ако вам је потребна помоћ.





Постављање директоријума пројекта:

Да бисте све организовали, направите нови директоријум пројекта селениум-кпатх/ као што следи:

$мкдир -пвселениум-кпатх/возачи



Идите до селениум-кпатх/ директоријум пројекта на следећи начин:

$ЦДселениум-кпатх/

Направите Питхон виртуелно окружење у директоријуму пројекта на следећи начин:

$виртуаленв .венв

Активирајте виртуелно окружење на следећи начин:

$извор.венв/сам/активирати

Инсталирајте библиотеку Селениум Питхон користећи ПИП3 на следећи начин:

$ пип3 инсталирајте селен

Преузмите и инсталирајте сав потребан веб управљачки програм у возачи/ именик пројекта. У свом чланку сам објаснио процес преузимања и инсталирања веб управљачких програма Увод у селен у Питхону 3 .

Набавите КСПатх Селецтор помоћу Цхроме алатке за програмере:

У овом одељку ћу вам показати како да пронађете селектор КСПатх елемента веб странице који желите да изаберете помоћу Селениум-а помоћу уграђеног алата за програмере веб прегледача Гоогле Цхроме.

Да бисте добили КСПатх бирач помоћу веб прегледача Гоогле Цхроме, отворите Гоогле Цхроме и посетите веб локацију са које желите да извучете податке. Затим притисните десни тастер миша (РМБ) на празном делу странице и кликните на Прегледајте да отворите Цхроме алатка за програмере .

Такође можете притиснути + Смена + И да отворите Цхроме алатка за програмере .

Цхроме алатка за програмере треба отворити.

Да бисте пронашли ХТМЛ приказ жељеног елемента веб странице, кликните на Прегледајте (

), како је означено на слици испод.

Затим пређите курсором преко жељеног елемента веб странице и притисните леви тастер миша (ЛМБ) да бисте га изабрали.

ХТМЛ приказ веб елемента који сте изабрали биће истакнут у Елементи картицу Цхроме алатка за програмере, као што можете видети на слици испод.

Да бисте добили КСПатх селектор жељеног елемента, изаберите елемент из Елементи таб оф Цхроме алатка за програмере и кликните десним тастером миша (РМБ) на њега. Затим изаберите Цопи > Копирајте КСПатх, као што је означено на слици испод.

Залепио сам КСПатх селектор у уређивач текста. Бирач КСПатх изгледа како је приказано на слици испод.

Набавите КСПатх Селецтор помоћу Фирефок алата за програмере:

У овом одељку ћу вам показати како да пронађете селектор КСПатх елемента веб странице који желите да изаберете помоћу Селениум-а помоћу уграђеног алата за програмере Мозилла Фирефок веб прегледача.

Да бисте добили КСПатх бирач помоћу Фирефок веб прегледача, отворите Фирефок и посетите веб локацију са које желите да извучете податке. Затим притисните десни тастер миша (РМБ) на празном делу странице и кликните на Прегледајте елемент (К) да отворите Фирефок алатка за програмере .

Фирефок алатка за програмере треба отворити.

Да бисте пронашли ХТМЛ приказ жељеног елемента веб странице, кликните на Прегледајте (

), како је означено на слици испод.

Затим пређите курсором преко жељеног елемента веб странице и притисните леви тастер миша (ЛМБ) да бисте га изабрали.

ХТМЛ приказ веб елемента који сте изабрали биће истакнут у Инспекторе таб оф Фирефок алатка за програмере, као што можете видети на слици испод.

Да бисте добили КСПатх селектор жељеног елемента, изаберите елемент из Инспекторе таб оф Фирефок алатка за програмере и кликните десним тастером миша (РМБ) на њега. Затим изаберите Цопи > КСПатх као што је означено на слици испод.

Бирач КСПатх жељеног елемента би требао изгледати отприлике овако.

Издвајање података са веб страница помоћу КСПатх селектора:

У овом одељку ћу вам показати како да изаберете елементе веб странице и из њих извучете податке помоћу КСПатх селектора са библиотеком Селениум Питхон.

Прво креирајте нову Питхон скрипту ек01.пи и откуцајте следеће редове кодова.

фромселенаувозвебдривер
фромселена.вебдривер.заједнички.кључеве увозКључеви
фромселена.вебдривер.заједнички.од стране увозОд стране
Опције=вебдривер.ЦхромеОптионс()
Опције.без главе = Истина
прегледач=вебдривер.Хром(екецутабле_патх='./дриверс/цхромедривер',
Опције=Опције)
прегледач.добити('хттпс://ввв.униктиместамп.цом/')
временска ознака=прегледач.финд_елемент_би_кпатх('/хтмл/боди/див [1]/див [1]
/див [2]/див [1]/див/див/х3 [2] '
)
принт('Тренутна временска ознака: %с'%(временска ознака.текст.разделити('')[0]))
прегледач.Близу()

Када завршите, сачувајте ек01.пи Питхон скрипта.

Линија 1-3 увози све потребне компоненте селена.

Ред 5 ствара објекат Цхроме опција, а ред 6 омогућава режим без главе за Цхроме веб прегледач.

Ред 8 ствара Цхроме прегледач објект користећи хромирани управљач бинарни из возачи/ именик пројекта.

Ред 10 каже претраживачу да учита веб локацију униктиместамп.цом.

Ред 12 проналази елемент који има податке о временској ознаци са странице помоћу КСПатх селектора и складишти га у временска ознака променљива.

Ред 13 анализира податке временске ознаке из елемента и штампа их на конзоли.

Копирао сам КСПатх селектор означених х2 елемент из униктиместамп.цом помоћу Цхроме алатке за програмере.

Ред 14 затвара прегледач.

Покрените Питхон скрипту ек01.пи као што следи:

$ питхон3 ек01.пи

Као што видите, подаци о временској ознаци се штампају на екрану.

Овде сам користио бровсер.финд_елемент_би_кпатх (селектор) метода. Једини параметар ове методе је селектор, који је КСПатх селектор елемента.

Уместо бровсер.финд_елемент_би_кпатх () метод, такође можете користити бровсер.финд_елемент (Би, селектор) метода. Ова метода захтева два параметра. Први параметар Од стране биће Би.КСПАТХ као што ћемо користити КСПатх селектор, а други параметар селектор биће сам КСПатх селектор. Резултат ће бити исти.

Да видите како бровсер.финд_елемент () метода ради за КСПатх селектор, креирајте нову Питхон скрипту ек02.пи , копирајте и залепите све редове из ек01.пи до ек02.пи и промените ред 12 као што је означено на слици испод.

Као што видите, Питхон скрипта ек02.пи даје исти резултат као ек01.пи .

$ питхон3 ек02.пи

Тхе бровсер.финд_елемент_би_кпатх () и бровсер.финд_елемент () методе се користе за проналажење и одабир једног елемента са веб страница. Ако желите да пронађете и изаберете више елемената помоћу КСПатх селектора, морате их користити бровсер.финд_елементс_би_кпатх () или бровсер.финд_елементс () методе.

Тхе бровсер.финд_елементс_би_кпатх () метода узима исти аргумент као и бровсер.финд_елемент_би_кпатх () метода.

Тхе бровсер.финд_елементс () метода узима исте аргументе као и бровсер.финд_елемент () метода.

Погледајмо пример издвајања листе имена помоћу КСПатх селектора из рандом-наме-генератор.инфо са библиотеком Селениум Питхон.

Неуређена листа ( умрети ознака) има 10 у ознаке унутар сваке садрже насумично име. КСПатх за избор свих у ознаке унутар умрети ознака у овом случају је //*[@ид = маин]/див [3]/див [2]/ол // ли

Идемо кроз пример одабира више елемената са веб странице помоћу КСПатх селектора.

Креирајте нову Питхон скрипту ек03.пи и унесите следеће редове кодова у њега.

фромселенаувозвебдривер
фромселена.вебдривер.заједнички.кључеве увозКључеви
фромселена.вебдривер.заједнички.од стране увозОд стране
Опције=вебдривер.ЦхромеОптионс()
Опције.без главе = Истина
прегледач=вебдривер.Хром(екецутабле_патх='./дриверс/цхромедривер',
Опције=Опције)
прегледач.добити('хттп://рандом-наме-генератор.инфо/')
имена=прегледач.финд_елементс_би_кпатх('
//*[@ид = 'маин']/див [3]/див [2]/ол // ли ​​'
)
заимеуимена:
принт(име.текст)
прегледач.Близу()

Када завршите, сачувајте ек03.пи Питхон скрипта.

Ред 1-8 је исти као у ек01.пи Питхон скрипта. Дакле, нећу их овде поново објашњавати.

Ред 10 каже претраживачу да учита веб локацију рандом-наме-генератор.инфо.

Ред 12 бира листу имена помоћу бровсер.финд_елементс_би_кпатх () метода. Ова метода користи селектор КСПатх //*[@ид = маин]/див [3]/див [2]/ол // ли да бисте пронашли листу имена. Затим се листа имена чува у имена променљива.

У редовима 13 и 14, а за лооп се користи за понављање кроз имена пописати и одштампати имена на конзоли.

Ред 16 затвара прегледач.

Покрените Питхон скрипту ек03.пи као што следи:

$ питхон3 ек03.пи

Као што видите, имена се издвајају са веб странице и штампају на конзоли.

Уместо да користите бровсер.финд_елементс_би_кпатх () метод, можете користити и бровсер.финд_елементс () метод као и раније. Први аргумент ове методе је Аутор.КСПАТХ, а други аргумент је КСПатх селектор.

За експериментисање са бровсер.финд_елементс () метод, креирајте нову скрипту Питхон ек04.пи , копирајте све кодове из ек03.пи до ек04.пи и промените ред 12 како је означено на слици испод.

Требало би да добијете исти резултат као и раније.

$ питхон3 ек04.пи

Основе програма КСПатх Селецтор:

Алат за програмере Фирефока или Гоогле Цхроме веб прегледача аутоматски генерише КСПатх селектор. Али ови КСПатх селектори понекад нису довољни за ваш пројекат. У том случају морате знати шта одређени бирач КСПатх -а чини да изгради ваш бирач КСПатх -а. У овом одељку ћу вам показати основе КСПатх селектора. Затим бисте требали моћи да направите сопствени КСПатх бирач.

Креирајте нови директоријум ввв/ у директоријуму вашег пројекта на следећи начин:

$мкдир ввв

Креирајте нову датотеку веб01.хтмл у ввв/ директоријума и откуцајте следеће редове у тој датотеци.


< хтмл ланг='на'>
< глава >
< мета цхарсет=„УТФ-8“>
< мета име='виевпорт' садржај='видтх = девице-видтх, инитиал-сцале = 1.0'>
< наслов >Основни ХТМЛ документ</ наслов >
</ глава >
< тело >
< х1 >Здраво Свете</ х1 >
</ тело >
</ хтмл >

Када завршите, сачувајте веб01.хтмл филе.

Покрените једноставан ХТТП сервер на порту 8080 помоћу следеће команде:

$ питхон3 -м хттп.сервер--директоријум ввв/8080

ХТТП сервер би требало да се покрене.

Требало би да имате приступ веб01.хтмл датотеку користећи УРЛ хттп: // лоцалхост: 8080/веб01.хтмл , као што можете видети на слици испод.

Док је Фирефок или Цхроме Девелопер Тоол отворен, притисните + Ф. да бисте отворили оквир за претрагу. Овде можете унети свој КСПатх бирач и врло лако видети шта одабире. Користићу овај алат у овом одељку.

Бирач КСПатх почиње са коса црта (/) већину времена. То је као дрво директоријума за Линук. Тхе / је корен свих елемената на веб страници.

Први елемент је хтмл . Дакле, КСПатх селектор /хтмл бира целину хтмл таг.

Унутар хтмл ознака, имамо а тело таг. Тхе тело ознака се може изабрати помоћу КСПатх селектора /хтмл/боди

Тхе х1 заглавље је унутар тело таг. Тхе х1 заглавље се може изабрати помоћу КСПатх селектора /хтмл/боди/х1

Ова врста КСПатх селектора назива се апсолутни бирач путање. У апсолутном бирачу путање морате прећи веб страницу од корена (/) странице. Недостатак апсолутног бирача путање је што чак и мала промена у структури веб странице може учинити ваш КСПатх бирач неважећим. Решење овог проблема је релативни или делимични КСПатх бирач.

Да бисте видели како функционише релативна путања или делимична путања, направите нову датотеку веб02.хтмл у ввв/ именик и унесите следеће редове кодова у њега.


< хтмл ланг='на'>
< глава >
< мета цхарсет=„УТФ-8“>
< мета име='виевпорт' садржај='видтх = девице-видтх, инитиал-сцале = 1.0'>
< наслов >Основни ХТМЛ документ</ наслов >
</ глава >
< тело >
< х1 >Здраво Свете</ х1 >

< див >
< п >ово је порука</ п >
</ див >

< див >
< спан >Здраво Свете</ спан >
</ див >
</ тело >
</ хтмл >

Када завршите, сачувајте веб02.хтмл датотеку и учитајте је у веб прегледач.

Као што видите, КСПатх селектор // див/стр бира п ознака унутар див таг. Ово је пример релативног КСПатх селектора.

Бирач релативног КСПатх -а почиње са // . Затим одређујете структуру елемента који желите да изаберете. У овом случају, див/п .

Тако, // див/стр значи изаберите п елемент унутар а див елемент, није важно шта долази пре њега.

Такође можете бирати елементе према различитим атрибутима, попут ид , класа , тип, итд. помоћу КСПатх селектора. Да видимо како то учинити.

Креирајте нову датотеку веб03.хтмл у ввв/ именик и унесите следеће редове кодова у њега.


< хтмл ланг='на'>
< глава >
< мета цхарсет=„УТФ-8“>
< мета име='виевпорт' садржај='видтх = девице-видтх, инитиал-сцале = 1.0'>
< наслов > Основни ХТМЛ документ</ наслов >
</ глава >
< тело >
< х1 > Хелло Ворлд</ х1 >
< див класа='цонтаинер1'>
< п > ово је порука</ п >
< спан > ово је друга порука</ спан >
</ див >
< див класа='цонтаинер1'>
< х2 > наслов2</ х2 >
< п > Неки људи
мудро изабрати болове, невоље, оне које не падају на изабраног
лаки летови или друге одличне услуге? Одакле или одакле је рођен?</ п >
</ див >

< спан ид='фоотер-мсг'> ово је подножје</ спан >
</фоотер>
</ тело >
</ хтмл >

Када завршите, сачувајте веб03.хтмл датотеку и учитајте је у веб прегледач.

Рецимо да желите да изаберете све див елементи који имају класа име контејнер1 . Да бисте то урадили, можете користити КСПатх бирач // див [@цласс = ’цонтаинер1 ′]

Као што видите, имам 2 елемента који одговарају КСПатх селектору // див [@цласс = ’цонтаинер1 ′]

Да бисте изабрали први див елемент са класа име контејнер1 , додати [1] на крају КСПатх -а изаберите, као што је приказано на слици испод.

На исти начин можете изабрати други див елемент са класа име контејнер1 помоћу КСПатх селектора // див [@цласс = ’цонтаинер1 ′] [2]

Елементе можете изабрати према ид такође.

На пример, да бисте изабрали елемент који има ид оф фоотер-мсг , можете користити КСПатх бирач //*[@ид = ’фоотер-мсг’]

Овде, * пре него што [@ид = ’фоотер-мсг’] се користи за избор било ког елемента без обзира на његову ознаку.

То су основе КСПатх селектора. Сада бисте требали моћи да креирате сопствени КСПатх селектор за своје Селениум пројекте.

Закључак:

У овом чланку сам вам показао како да пронађете и изаберете елементе са веб страница помоћу КСПатх селектора са библиотеком Селениум Питхон. Такође сам расправљао о најчешћим КСПатх селекторима. Након што прочитате овај чланак, требало би да се осећате прилично самоуверено при одабиру елемената са веб страница помоћу КСПатх селектора са библиотеком Селениум Питхон.