这是表格在网页上的外观(仅一列):
这是我要抓取的表的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都有一个递增的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
您XPath
似乎不正确。
请尝试以下方法:
address = locate_element("//tr[@id='row%sFC']/td" % row_number)
另请注意,这address
是一个WebElement
。如果要获取其文本内容,则应使用
address = locate_element("//tr[@id='row%sFC']/td" % row_number).text
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句