Как щелкать и скачивать с помощью python selenium

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

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

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

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

    HTML / тело / DIV [2]/ дела [2]/ дела / мкр-содержание / DIV / DIV / дела [1]/ тенденция-виджет / нг-включает в себя / виджете / DIV / DIV / DIV / виджет-действия / дела / кнопка [1]

  • Я пытаюсь использовать Chrome Driver и Firefox.

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

    import sys import time

    из селена импорт веб-драйвера из selenium.webdriver.common.keys импорт ключей из selenium.webdriver.common.action_chains импорт ActionChains из selenium.webdriver.support.ui import Выберите из selenium.webdriver.support.ui импорт WebDriverWait из selenium.webdriver.com.by import By из selenium.webdriver.support import Ожидаемые условия как 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 ()

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")
Другие вопросы по тегам