如何使用Python遍历xml路径字符串(表行-tr [1],tr [2],tr [3] ...)?

时间:2018-08-01 15:48:08

标签: python html xml selenium web-scraping

我有这个html xml路径:

"//*[@id="example"]/tbody/tr[2]/td[1]"

它必须由我的find_element()算法处理为字符串 但是我需要迭代tr [2](例如tr [2],tr [3],tr [4] ...),以便我的网络抓取算法可以扩展html表中的可点击按钮。

要实现这一目标的策略/实现有哪些?

(我正在将Selenium python库用于webscraper)

2 个答案:

答案 0 :(得分:0)

如果您想遍历它,

只需像这样使xpath动态化:

我假设您有5行。

for i in range(5):
 driver.find_element_by_xpath("//*[@id="example"]/tbody/tr['"+i+"']/td[1]").click()   

或者使用WebDriverWait,它将是:

wait = WebDriverWait(driver,30)

for i in range(5): 
  wait.until(EC.element_to_be_clickable((By.XPATH, "//*[@id="example"]/tbody/tr['"+i+"']/td[1]"))).click()  

请注意,以防万一您必须导入以下内容:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC 

答案 1 :(得分:0)

您可以使用以下代码获取所有所需元素(行)的集合:

def extractFeatures(self,inputFile):
    self.openSMILEsettings.append("-I " + inputFile)

    outputFile = os.path.dirname(inputFile) + "/featuresOf_" +os.path.basename(inputFile)[0:-3] + "arff"
    self.openSMILEsettings.append("-O " + outputFile)
    print self.openSMILEsettings[2]
    print ' '.join(self.openSMILEsettings)
    # print subprocess.check_output(['SMILExtract'] + self.openSMILEsettings)

extractFeatures("/media/USERNAME/MountPOINT/Dir1/Dir2/Dir3/02003_SomeSesssionNumber1_and2_2323123/audioFile.wav")

然后,您可以遍历元素集合并执行所需的操作。