Selenium find_elements_ из тега (xpath или css) - PullRequest
0 голосов
/ 23 мая 2019

Я хочу скинуть цены с Selenium (Python) с веб-сайта (я новичок). Я понял, что цена не всегда совпадает с тегами html, и это следующие теги, в которых хранится цена:

Первый вариант:

<strong class="
price
scarcity_color
" data-et-click="">
<b>
€&nbsp;999
</b>
</strong>

Второй вариант:

<b class="sr_gs_price_total">
€&nbsp;999
</b>

Третий вариант:

<div class="
totalPrice totalPrice_no-rack-rate entire_row_clickable" data-link="/hotel/de/adlon_berlin.de.html?label=gen173nr-1FCAEoggI46AdIM1gEaDuIAQGYAQe4AQfIAQ_YAQHoAQH4AQuIAgGoAgO4AprH5OYFwAIB&amp;sid=d730f1bbb7d4c57cc4185f54d3c12d41&amp;all_sr_blocks=6096409_97405530_4_2_0&amp;checkin=2019-05-23&amp;checkout=2019-05-24&amp;dest_id=-1829149&amp;dest_type=city&amp;fcpilot=0&amp;group_adults=4&amp;group_children=0&amp;hapos=13&amp;highlighted_blocks=6096409_97405530_4_2_0&amp;hpos=13&amp;req_adults=4&amp;req_children=0&amp;room1=A%2CA%2CA%2CA&amp;sr_order=popularity&amp;srepoch=1558637992&amp;srpvid=95ff85944d0201f3&amp;ucfs=1&amp;from=searchresults#maxotelRoomArea" data-target="_blank">
Preis für 4 Erwachsene
für 1 Nacht:
€&nbsp;999
<div class="prd-taxes-and-fees-under-price on-srpage-group blockuid-" data-excl-charges-raw="" data-cur-stage="1"> einschließlich Steuern und Gebühren </div> 
</div>

Четвертый вариант:

<b class="sr_gs_price_total">
€&nbsp;999
</b>

Пятый вариант:

<label class="tpi_price_label tpi_price_label__orange">€&nbsp;999</label>

Я хочу просто извлечь цену (номер 999). Я пробовал это с помощью css selector, например, со следующим кодом:

content.find_elements_by_css_selector('.price')

Но я даже не понимаю эту цену. Как я могу получить доступ к этим ценам? Спасибо!

Ответы [ 2 ]

0 голосов
/ 27 мая 2019

Получить список элементов с помощью cssSelector и затем зациклить его, чтобы получить innerText

List<WebElement> textInWebElement= driver.findElement(By.xpath("//*[contains(@class,'price')]"));
for(WebElement element : textInWebElement)
{
String innerText= element .getText();

innerText = innerText.replace("€&nbsp;", "");

}
0 голосов
/ 23 мая 2019

Надеюсь, я вас хорошо понимаю, вы можете использовать этот xpath // * [содержит (text (), 'nbsp')] Я не очень разбираюсь в python, но в Java я бы сделал что-то вроде этого,

* Я изменил свой ответ, очень похож на ответ Падмы, только не работает с вашим третьим вариантом

List<WebElement> prices = driver.findElements(By.xpath("//*[contains(@class,'price')]"));
           for(WebElement element : prices)
           {
           String innerText= element.getText();

           innerText = innerText.replaceAll("\\D", "");
           }
...