使用Selenium Python获取嵌入在反应文本代码中的值

时间:2018-04-26 16:14:06

标签: python selenium-webdriver

enter image description here我在Python中使用Selenium从我的作品中抓取一些来自互联网的数据。 但是,我无法通过此HTML源代码获取电话号码(即04 81 68 30 45):

'<a class="_2sNbI ObuDQ GXQkc _2BP2c" href="tel:0481683045" title="Contact le vendeur" ><!-- react-text: 619 -->04 81 68 30 45<!-- /react-text --></a>'

我尝试了该代码,但它不适用于react-text代码。我有一个空字符串

from selenium import webdriver

driver = webdriver.Chrome('chromedriver')
driver.get('https://www.leboncoin.fr/locations/1107498086.htm/')

try:
    elem = driver.find_element_by_xpath('//div[@class="_2sPVF"]//button')
    elem.click()
except:
    pass

elem = driver.find_element_by_xpath('//span[@class="_28rnK"]/a')
tel = elem.text
print('Contact:', tel)

如果有人知道如何做到这一点,我将非常感激。

***感谢JeffC的回答,问题解决了,结果是xpath中有5个隐藏元素(电话号码是第4个)。

1 个答案:

答案 0 :(得分:1)

在这种情况下,我通常会调查页面并确保我使用的定位器找到我想要的元素。我通常使用Chrome中的开发控制台并使用<div class="wrapper"> <div class="template"> <h1>header #1</h1> <p>some text for #1</p> <div class="static-container"> <div> <p>a b c 1 2 3</p> <p>d e f 4 5 6</p> </div> </div> </div> </div> <button>change template</button> <div class="new-template"> <h1>header #2</h1> <p>some text for #2</p> <div class="static-container"></div> </div>测试CSS选择器和$$()来测试XPath。

正如您所发现的那样,您要查找的元素不是返回的元素,因为它在页面上不是唯一的,并且不是与定位器匹配的第一个元素集合。