Загрузка нескольких CSV-файлов с помощью Selenium / Chrome & Python - PullRequest
0 голосов
/ 17 сентября 2018

У меня проблема с загрузкой нескольких файлов в Chrome с использованием Selenium & Python.Я делаю цикл ниже, но нахожу только последний файл, на который нажали в моей папке загрузок (с Mac):

for x in range(4): 
    driver.execute_script("arguments[0].click()",sub_elements[x])  
    print(sub_elements[x].get_attribute('innerText').strip())

    element = WebDriverWait(driver, 3).until(
            EC.text_to_be_present_in_element((By.ID, 'selectedMonth'), 
    sub_elements[x].get_attribute('innerText').strip() ))                                           

    driver.find_element_by_id("exportCsv").click() #

После поиска в Google я попытался изменить параметры браузера, как показано ниже, но это не сработало:

from selenium.webdriver.chrome.options import Options

chrome_options = Options()
prefs = {'profile.default_content_setting_values.automatic_downloads': 1}
chrome_options.add_experimental_option("prefs",prefs)
driver = webdriver.Chrome(chrome_options=chrome_options)

Спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Извините, но я не вижу ни URL, ни чего-либо связанного с вашим вопросом ... если вы не объединяете несколько CSV из папки на вашем рабочем столе.Если это вопрос, у меня есть несколько решений для вас ... но вы, кажется, делаете это из Интернета ... В любом случае, проверьте это решение.Надеюсь, это заставит вас двигаться в правильном направлении, но опять же ... Я не могу сказать, что вы делаете ...

ad <- read.csv("http://www-bcf.usc.edu/~gareth/ISL/Advertising.csv")
head(ad)

Вот способ ссылки на несколько файлов PDF с URL-адреса, искачать каждый.

library(XML)
library(RCurl)

url <- "https://www.bot.or.th/English/MonetaryPolicy/Northern/EconomicReport/Pages/Releass_Economic_north.aspx"
page   <- getURL(url)
parsed <- htmlParse(page)
links  <- xpathSApply(parsed, path="//a", xmlGetAttr, "href")
inds   <- grep("*.pdf", links)
links  <- links[inds]
0 голосов
/ 17 сентября 2018

Этот exportCsv звучит как RPC, для выполнения которого требуется время.Это всего лишь теория, но, возможно, стоит попробовать.

Бит фона: при нажатии на ссылку отправляется запрос.Если вы нажмете другую ссылку до того, как на первый запрос придет какой-либо ответ, первый запрос будет отменен.Кажется, что здесь происходит то, что вы нажимаете так быстро, что отменяете свои первые три запроса, и только последний проходит (я думаю, что может потребоваться секунда или две, прежде чем вы получите ответ).

После нажатия попытайтесь дождаться начала загрузки.(Я не думаю, что для этого есть метод WebDriver, но вы можете, например, наблюдать за количеством файлов в папке Download). Или просто спать 5 секунд между щелчками, как быстрый и грязный тест.


В качестве дополнительного примечания, возможно, получение ссылки на скачивание (возможно, вместе с файлами cookie) из браузера и загрузка их отдельно без браузера будет более надежным (при загрузке с использованием Selenium может произойти много ошибок, слишком много переменных).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...