我删了旧帖子,因为它不够清楚。
我正在使用 selenium 抓取网站,我面临的问题是使用
抓取该领域时driver.get('****')
driver.find_element_by_id('fb_submit').click()
driver.find_element_by_id('email').send_keys('')
driver.find_element_by_id('password').send_keys('')
driver.find_element_by_id('btn-login').click()
driver.get('****')
driver.find_elements_by_xpath(//[@class='price'])
是该字段首先填充检索,直到数据填充到页面中。因此,它检索带有 ["retrieving" 而不是定价] 的列表 我该如何解决这种情况,我尝试使用等待驱动器,但它已被填充。\
while tt:
elem =driver.find_elements_by_xpath('.//td[@data-title="Availability"]')
elem =[d.text for d in elem]
Availability = sele.xpath('.//td[@data-title="Availability"]/text()').extract()
# elemList =[d for d in elem]
for i in elem:
if "retreiving" not in i.lower() or "Retreiving" not in i or i != "Retreiving" :
tt = False
print(i,tt)
else:
tt =True
print("else" ,i, tt)
time.sleep(0.5)
更新:
这是我尝试过但仍然无法正常工作的方法...
第二次更新:
WebDriverWait(driver, 10).until_not(EC.text_to_be_present_in_element((By.XPATH, ".//td[@data-title='Availability']"), "Retreiving"))
答案 0 :(得分:0)
如果包含价格的元素与除了它包含的文本之外的所有内容都表示“检索”的元素相同(即该元素在获取价格之前和之后只有 price
类),您可以写一些逻辑来等待元素包含你想要的数据吗?
类似的东西
while True:
element_text = driver.find_elements_by_xpath(//[@class='price']).text
if "retreiving" not in element_text:
break
time.sleep(1)
# element_text might contain the prices at this point
print(element_text)