Как щелкнуть и загрузить с помощью python selenium

Я пытаюсь загрузить данные CSV из GoogleTrend с помощью селена (python).

Раньше я пытался распечатать исходную страницу и извлечь данные, которые мне понадобятся позже. Некоторое время это работало, но сейчас не работает.

Я пытаюсь нажать кнопку загрузки, чтобы получить файл CSV, но ничего не происходит. У вас есть идеи по этому делу?

  • Я получил путь к кнопке от firebug + firepath (плагин firefox).

    html / body / div [2] / div [2] / div / md-content / div / div / div [1] / тенденции-виджет / ng-include / widget / div / div / div / widget-actions / div / кнопка [1]

  • Я пробую хромированный драйвер и firefox drive.

  • Этот код; введите 1 (слово) аргумент, что вы хотите получить тенденцию поиска.

    import sys время импорта

    from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.support.ui import Select from selenium.webdriver.support.monui import WebDriverWait from seriverWait from serilenium.com .by import By from selenium.webdriver.support импортировать ожидаемые_условия как 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
    

    if name == 'main': run_text_extract (sys.argv [1]) time.sleep (8) # run_text_extract ()


person user3214044    schedule 11.01.2018    source источник
comment
Вам действительно нужно правильно отформатировать свой вопрос ...   -  person Goralight    schedule 11.01.2018
comment
Извините, я уже исправил.   -  person user3214044    schedule 11.01.2018


Ответы (1)


Я перешел по предоставленной вами ссылке. Если вы выполните поиск по любому запросу, вы увидите, что справа появится ссылка на кнопку загрузки csv. Но будет 3 кнопки загрузки csv с тем же классом или селектором 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")
person Dinesh Khanna V    schedule 30.03.2018
comment
Привет! Не могли бы вы также немного объяснить, почему ваш код помогает? Добавьте краткое объяснение того, что делает ваш код, чтобы мы понимали, что происходит. - person techfly; 30.03.2018
comment
@Aenadon. Я обновил свой код подробными инструкциями. Надеюсь, теперь все понимают. - person Dinesh Khanna V; 30.03.2018