2015-11-08 1 views
3

Вот небольшой фрагмент HTML по этой ссылке hereСелена питона рекурсивного текст скрип

<div class="price-view"> 
    <div class="price component component-3 clearfix list-and-sale-price"> 
    <div class="list-price float-left mR20px striken"> 
     <label>Was</label> 
     <div class="value">$250.00</div> 
    </div> 
    <div class="sale-price float-left"> 
     <label>Now</label> 
     <div class="value">$150.00</div> 
    </div> 
    </div> 
</div> 

Я пытаюсь тянуть цену $ 150 в этом случае, но я хотел бы один и тот же код, чтобы напечатать $ 575 в this ссылка

<div class="price-view"> 
    <div class="price component component-3 clearfix"> 
    <div class="list-price float-left mR20px "> 
     <div class="value">$575.00</div> 
    </div> 
    </div> 
</div> 

По понятным причинам приведенный ниже код xpath не будет работать более чем в одном экземпляре.

price = driver.find_element_by_xpath('//*[@id="saksBody"]/div[4]/div[1]/div[2]/div[1]/div[6]/div/div/div/div').text 

Итак, я пытался смотреть в код так:

price = driver.find_element_by_class_name('value') 

Но это недостаточно конкретны.

Есть ли способ распечатать весь текст в <div class="price-view">? Затем я мог бы использовать регулярное выражение для решения остальных задач.

Этот код не захватить текст внутри тегов в теге

price = driver.find_element_by_class_name('price-view').text 

Чтобы быть очень конкретным, я хотел бы знать, как выводить:

Was$250.00Now$150.00 

и

$575.00 

Для первого и второго ссылок соответственно.

ответ

0

В обоих случаях цена указана в DIV с классом price-view, поэтому мы используем селектор CSS div.price-view для захвата внешнего элемента. Затем он смотрит, существует ли класс list-and-sale-price. Если это так, то у нас есть как список, так и цена продажи, поэтому возьмите продажную цену. В любом случае цена списка существует, поэтому мы ее берем. Таким образом, вам не нужно повторно выставлять куски.

priceView = driver.find_element_by_css_selector("div.price-view") 
if (priceView.find_elements_by_css_selector("div.list-and-sale-price")) 
    # there is a list and sale price, grab the sale price 
    salePrice = priceView.find_element_by_css_selector("div.sale-price > div.value")).text 
# in either case, grab the list price 
listPrice = priceView.find_element_by_css_selector("div.list-price > div.value")).text 
Смежные вопросы