【发布时间】:2017-12-12 01:37:30
【问题描述】:
这是表格在网页上的样子(只有一列):
这是我要抓取的表格的 HTML:
如果重要,该表嵌套在另一个表中。
这是我的代码:
def filter_changed_records():
# Scrape webpage for addresses from table of changed properties
row_number = 0
results_frame = locate_element(
'//*[@id="oGridFrame"]'
)
driver.switch_to.frame(results_frame)
while True:
try:
address = locate_element("id('row" + str(row_number) +
"FC')/x:td")
print(address)
changed_addresses.append(address)
row_number += 1
except:
print("No more addresses to add.")
break
如您所见,有一个<tr> 标记,其ID 为row0FC。此表是动态生成的,每个新的<tr> 都会获得一个编号不断增加的 id:row0FC, row1FC, row2FC 等。这就是我计划遍历所有条目并将它们添加到列表中的方式。
我的 locate_element 函数如下:
def locate_element(path):
element = WebDriverWait(driver, 50).until(
EC.presence_of_element_located((By.XPATH, path)))
return element
它总是在 50 秒后从找不到元素开始超时。不确定如何进行。有没有更好的定位元素的方法?
安德森的解决方案
address = locate_element("//tr[@id='row%sFC']/td" % row_number).text
【问题讨论】: