这是一种有点落后的Web抓取方法。我需要在使用text()= identifier找到Web元素之后定位它的xpath
因为xpath值根据显示的信息而不同,所以我需要在行中使用可预测标签来定位find元素旁边的span文本,我发现一个简单可靠的方法是定位关键字标签,然后在xpath中将td整数加1。
def x_label(self, contains):
mls_data_xpath = f"//span[text()='{contains}']"
string = self.driver.find_element_by_xpath(mls_data_xpath).get_attribute("xpath")
digits = string.split("td[")[1]
num = int(re.findall(r'(\d+)', digits)[0]) + 1
labeled_data = f'{string.split("td[")[0]}td[{num}]/span'
print(labeled_data)
labeled_text = self.driver.find_element_by_xpath(labeled_data).text
return labeled_text
我找不到太多关于.get_attribute()和get_property()的信息,所以我希望有类似.get_attribute(“xpath”)的东西,但我一直无法找到它。
基本上,我接受了一个字符串,比如“ApprxTotalLivArea”,然后将td[0]后面的整数加1,以查找来自隔壁单元格的span数据。我希望有一个类似get_attributes(“xpath”)的函数,可以从我通过text()='{contains}'搜索找到的元素中找到xpath字符串。
3条答案
按热度按时间xqk2d5yq1#
远程WebElement包含以下方法:
但是**
xpath
不是WebElement的有效属性。因此get_attribute("xpath")
将始终返回*NULL
***li9yvcax2#
我在另一个论坛找到了一个python版本的execute脚本from this post,它是基于JavaScript答案的。我不得不对这个函数创建的字符串进行大量的.replace()调用,但我能够普遍地找到我需要的标签字符串,并将td/span xpath增加+1来找到列数据并检索它,而不管不同页面列表上xpath值的差异。
py49o6xq3#
此函数迭代地获取的父元素,直到找到顶部的html元素
希望这有帮助!