代码之家  ›  专栏  ›  技术社区  ›  Sumithran

Selenium WebDriver在写入csv文件时出现意外结果

  •  0
  • Sumithran  · 技术社区  · 6 年前

    我试图通过Python中的SeleniumWebDriver将一些数据写入csv文件。

    调幅使用 Geckodriver v0.21.0 Mozilla v61.0.1

    这是我的密码

    from selenium import webdriver
    from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
    from selenium.common.exceptions import NoSuchElementException
    import csv
    import traceback
    
    
    cap = DesiredCapabilities().FIREFOX
    cap["marionette"] = False
    browser = webdriver.Firefox(capabilities=cap, executable_path="C:\\usr\local\bin\geckodriver.exe")
    browser.get('https://stackoverflow.com/questions?pagesize=10')
    data = []
    while True:
        try:
            elm = browser.find_element_by_link_text("next")
            browser.execute_script("return arguments[0].scrollIntoView();", elm)
            elm.click()
            labels = browser.find_elements_by_xpath('.//a[@class="question-hyperlink"]')
            data.append(labels)
            for label in labels:
                with open('output.csv', 'wb') as data_file:
                    writer = csv.writer(data_file)
                    writer.writerows(data)
        except NoSuchElementException:
            print(traceback.format_exc())
            break
    

    但是在我的csv文件中得到一个有线结果

    "<selenium.webdriver.firefox.webelement.FirefoxWebElement (session=""f45d368b-462d-46b6-b9f5-c28392cdc2eb"", element=""{38980652-52c8-472b-a8a0-3e7909247bd4}"")>","<selenium.webdriver.firefox.webelement.FirefoxWebElement (session=""f45d368b-462d-46b6-b9f5-c28392cdc2eb"", element=""{c1c746e1-58d2-42ec-972f-d35993062200}"")>"
    

    我错过了什么?

    2 回复  |  直到 6 年前
        1
  •  1
  •   T. Ray    6 年前

    try:
        elm = browser.find_element_by_link_text("next")
        browser.execute_script("return arguments[0].scrollIntoView();", elm)
        elm.click()
    
        labels = browser.find_elements_by_xpath('.//a[@class="question-hyperlink"]')
        text = [x.text for x in labels]
        data.append(text)
    
        with open('output.csv', 'w') as data_file:
            writer = csv.writer(data_file)
            writer.writerows(data)
    
    except NoSuchElementException:
        print(traceback.format_exc())
        break
    

    writerows for label in labels: label

        2
  •  1
  •   murali selenium    6 年前

       labels = browser.find_elements_by_xpath('.//a[@class="question-hyperlink"]')
    

       driver.findElement(By.name("btnI")).getText()
    

    for label in labels:
       data.append(label.gettext()) //i am just giving hint, syntax may not correct.