以下是此链接here
中的一小段html<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美元,但我想在this链接中打印$ 575相同的代码
<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 :(得分: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