0

我通过导航到不同的列表来从站点中提取价格,但是列表之间的类不是恒定的:

清单 1:

<div class="jss238" data-lpos="price-widget">
 <div class="jss57 jss277 jss268">
 $329.00
 <span class="jss269">/Night</span>
 </div>
</div>

清单 2:

<div class="jss501" data-lpos="price-widget">
 <div class="jss57 jss540 jss531">
 $250.00
 <span class="jss269">/Night</span>
 </div>
</div>

每个列表的类都会发生变化。根据我一直在学习的内容,我可以按班级进行选择,但列表之间并不一致。我可以使用“price-widget”作为起点吗?

4

2 回答 2

1

是的你可以。

使用以下 XPATH :

//span[contains(text(), '/Night')]/preceding-sibling::div

获取列表中的所有内容并对其进行迭代并获得所需的元素。如下所示:

price_list = driver.find_elements(By.XPATH, "//span[contains(text(), '/Night')]/preceding-sibling::div")
for price in price_list: 
   print(price.text)
于 2021-05-24T10:48:33.687 回答
1

要获得所有价格,您可以执行以下操作:

prices = driver.find_elements_by_xpath('//div[@data-lpos="price-widget"]')
for price in prices:
    print(price.text.strip())

您也可以使用 css 选择器。在这种情况下,它将是:

prices = driver.find_elements_css_selectro('div[data-lpos="price-widget"]')

我曾经strip()从字符串中删除前导和尾随空格。
如果您想$从字符串中删除符号 use .replace("$", ""),那么它将是

prices = driver.find_elements_by_xpath('//div[@data-lpos="price-widget"]')
for price in prices:
    print(price.text.strip().replace("$", ""))
于 2021-05-24T10:58:35.040 回答