【问题标题】:How to insert a variable in xpath within a for loop?如何在 for 循环中的 xpath 中插入变量?
【发布时间】:2021-08-23 15:16:21
【问题描述】:
for i in range(length):
        # print(i)
        driver.execute_script("window.history.go(-1)")
        range = driver.find_element_by_xpath("(//a[@class = 'button'])[i]").click()


        content2 = driver.page_source.encode('utf-8').strip()
        soup2 = BeautifulSoup(content2,"html.parser")
        name2 = soup2.find('h1', {'data-qa-target': 'ProviderDisplayName'}).text
        phone2 = soup2.find('a', {'class': 'click-to-call-button-secondary hg-track mobile-click-to-call'}).text
        print(name2, phone2)

嘿家伙,我正在尝试为该网站的每个人刮取名字和姓氏,电话:https://www.healthgrades.com/family-marriage-counseling-directory。我希望(l.4)按钮适应变量(i)。如果我手动将 i 更改为数字,则一切正常。但是一旦我放入变量 i 它就不起作用,非常感谢任何帮助!

【问题讨论】:

    标签: python selenium for-loop xpath


    【解决方案1】:

    而不是这个:

    range = driver.find_element_by_xpath("(//a[@class = 'button'])[i]").click()
    

    这样做:

    range = driver.find_element_by_xpath(f"(//a[@class = 'button'])[{i}]").click()
    

    更新 1:

    driver = webdriver.Chrome(driver_path)
    driver.maximize_window()
    driver.implicitly_wait(50)
    driver.get("https://www.healthgrades.com/family-marriage-counseling-directory")
    
    for name in driver.find_elements(By.CSS_SELECTOR, "a[data-qa-target='provider-details-provider-name']"):
      print(name.text)
    

    输出:

    Noe Gutierrez, MSW
    Melissa Huston, LCSW
    Gina Kane, LMHC
    Dr. Mary Marino, PHD
    Emili-Erin Puente, MED
    Richard Vogel, LMFT
    Lynn Bednarz, LCPC
    Nicole Palow, LMHC
    Dennis Hart, LPCC
    Dr. Robert Meeks, PHD
    Jody Davis
    Dr. Kim Logan, PHD
    Artemis Paschalis, LMHC
    Mark Webb, LMFT
    Deirdre Holland, LCSW-R
    John Paul Dilorenzo, LMHC
    Joseph Hayes, LPC
    Dr. Maylin Batista, PHD
    Ella Gray, LCPC
    Cynthia Mack-Ernsdorff, MA
    Dr. Edward Muldrow, PHD
    Rachel Sievers, LMFT
    Dr. Lisa Burton, PHD
    Ami Owen, LMFT
    Sharon Lorber, LCSW
    Heather Rowley, LCMHC
    Dr. Bonnie Bryant, PHD
    Marilyn Pearlman, LCSW
    Charles Washam, BCD
    Dr. Liliana Wolf, PHD
    Christy Kobe, LCSW
    Dana Paine, LPCC
    Scott Kohner, LCSW
    Elizabeth Krzewski, LMHC
    Luisa Contreras, LMFT
    Dr. Joel Nunez, PHD
    Susanne Sacco, LISW
    Lauren Reminger, MA
    Thomas Recher, AUD
    Kristi Smith, LCSW
    Kecia West, LPC
    Gregory Douglas, MED
    Gina Smith, LCPC
    Anne Causey, LPC
    Dr. David Greenfield, PHD
    Olga Rothschild, LMHC
    Dr. Susan Levin, PHD
    Ferguson Jennifer, LMHC
    Marci Ober, LMFT
    Christopher Checke, LMHC
    
    Process finished with exit code 0
    

    更新 2:

    leng = len(driver.find_elements(By.CSS_SELECTOR, "a[data-qa-target='provider-details-provider-name']"))
    for i in range(leng):
      driver.find_element_by_xpath(f"(//a[text()='View Profile'])[{i}]").click()
    

    【讨论】:

    • 嘿,谢谢你的回答,但遗憾的是这个错误代码发生了:UnboundLocalError: local variable 'range' referenced before assignment
    • 查看更新的代码 1,它在我的本地工作
    • range 用于for i in range(length):
    • 嘿,谢谢你的回复,问题是我必须按下按钮(查看个人资料),这样我才能访问电话号码,而不仅仅是名字和姓氏。
    • 不,您在帖子中没有提到这一点。还有你的代码长度是多少?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-06
    • 1970-01-01
    • 2018-08-24
    相关资源
    最近更新 更多