如何使用python selenium单击和下载

时间:2018-01-11 09:40:34

标签: python csv selenium google-trends

我尝试通过selenium(python)从GoogleTrend下载CSV数据。

之前,我尝试打印源页面并提取我想要的数据。 它工作了一段时间,但现在它不起作用。

我尝试点击下载按钮获取CSV文件但没有任何反应。 你对这个案子有什么想法吗?

  • 我从firebug + firepath(firefox插件)获得了按钮路径。

    的HTML /体/格[2] / DIV [2] / DIV / MD-含量/ DIV / DIV / DIV [1] /趋势-插件/ NG-包括/插件/ DIV / DIV / DIV /小窗口动作/ DIV /按钮[1]

  • 我尝试使用chrome驱动程序和firefox驱动程序。

  • 此代码;把1(单词)参数想要得到搜索趋势。

    导入系统 进口时间

    来自selenium import webdriver 来自selenium.webdriver.common.keys导入密钥 来自selenium.webdriver.common.action_chains导入ActionChains 来自selenium.webdriver.support.ui import选择 来自selenium.webdriver.support.ui导入WebDriverWait 来自selenium.webdriver.common.by导入 从selenium.webdriver.support导入expected_conditions作为EC

    def run_text_extract(search_word):

            try:
                         print(search_word)
    
    
                         driver = webdriver.Firefox('/home/noah/Desktop/Google_Trend_downloader/chromedriver/geckodriver')
             #            driver = webdriver.Chrome('/home/noah/Desktop/Google_Trend_downloader/chromedriver')
    
                         driver.get("https://trends.google.com/trends/explore?date=all&geo=TH&q="+search_word)
                         driver.find_element_by_xpath('html/body/div[2]/div[2]/div/md-content/div/div/div[1]/trends-widget/ng-include/widget/div/div/div/widget-actions/div/button[1]').click()
    
    
    
                         try: 
    
                              driver.manage().deleteAllCookies()
                              clear_cache(driver)
    
                         except TimeoutException as ex:
                                isrunning = 0
                                print("Exception has been thrown. " + str(ex))
                                print("Timeout line is", line ,".")
                                driver.close()
    
                         except Exception:
                                print ("Here 5")
                                pass
    
                         time.sleep(2) 
                         driver.close()
                         print("======== END_OF_FILE ===============")
    
    
            except:
                   pass
    

    如果名称 ==' 主要':     run_text_extract(sys.argv中[1])     time.sleep(8)   #run_text_extract()

1 个答案:

答案 0 :(得分:1)

我已导航到您提供的链接。 如果您搜索任何术语,您可以看到下载csv按钮链接将出现在右侧。但是会有3个下载csv buttton链接与同一个类或css选择器存在。因此,您需要收集所有元素并循环遍历它,以便您可以单击特定元素。在您的情况下,我假设您要单击第一个元素。所以下面的代码应该工作。如果您想要单击第2个或第3个元素,请相应地更改索引。

def run_text_extract(search_word):
    from selenium import webdriver
    from selenium.webdriver.firefox.firefox_profile import FirefoxProfile
    import time
    profile = webdriver.FirefoxProfile()
    profile.set_preference("browser.download.folderList", 2)
    profile.set_preference("browser.download.manager.showWhenStarting", False)
    profile.set_preference("browser.download.dir", 'C:\\Python27')
    profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "text/csv")
    driver = webdriver.Firefox(firefox_profile=profile,executable_path=r'C:\\Python27\\geckodriver.exe')
    driver.get("https://trends.google.com/trends/explore?date=all&geo=TH&q="+ search_word)
    time.sleep(7)
    lst = driver.find_elements_by_css_selector(".widget-actions-item.export")
    lst[0].click()

run_text_extract("selenium")