数据提取的一部分是使用XPath查找文本名称。然后在工作表中查找文本名称以查找行号。另外两个XPath数据被提取并添加到行号中。
问题是网页中出现了4次相同的单词"Duet"因此,第一个出现的文本名称(相同的行号)被覆盖4次
我知道Count会告诉我"duet"这个词出现了4次。
是否有一种方法可以找到特定XPath文本名称是文本"duet"的第1、第2、第3或第4次出现?
'Find Name
DIV_Name = .FindElementByXPath("/html/body/ui-view/main/div[1]/div[1]/ui-view/div/ui-view/div[4]/div/section/table[2]/tbody/tr[3]/td[1]").Text
TRow = Sheets("Import").Range("A:A").Find(what:=DIV_Name, LookIn:=xlValues, LookAt:=xlWhole).row
'Extract data
MyString = .FindElementByXPath("/html/body/ui-view/main/div[1]/div[1]/ui-view/div/ui-view/div[4]/div/section/table[2]/tbody/tr[3]/td[2]").Text
Sheets("Import").Range("G" & TRow) = MyString
'Extract data
MyString = .FindElementByXPath("/html/body/ui-view/main/div[1]/div[1]/ui-view/div/ui-view/div[4]/div/section/table[2]/tbody/tr[3]/td[3]").Text
Sheets("Import").Range("H" & TRow) = MyString
计算xPath文本出现次数
您可以使用findElements
方法来计算出现次数。在下面的示例中,您可能需要根据您的需求更改xPath
。
代码# 1:
r = .FindElementsByXPath("//*[text()='Duet']").Count
Debug.Print r
输出# 1:
4
是否有一种方法可以找到特定的XPath文本名称是否为第一次,第二次,第三次或第四次出现文本"二重唱"?
代码# 2:
For i = 1 To r
MyString = .FindElementByXPath("(//*[text()='Duet'])[" & i & "]").Text
Debug.Print MyString & " text at xPath " & i
Next i
输出# 2:
Duet text at xPath 1
Duet text at xPath 2
Duet text at xPath 3
Duet text at xPath 4
您可以创建像
这样的XPath//*[text()="Duet"]
你可以传递索引你需要的出现,例如,你需要第一个出现,然后传递
(//*[text()="Duet"])[1]