Как щелкать и скачивать с помощью 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")