1

Я пытаюсь загрузить несколько наборов данных из открытого источника, журнала транзакций Европейского Союза.

Я использую инструмент поиска «Распределение / соответствие» (в левой синей панели).

Оттуда я должен выбрать страну и нажать "поиск". Затем у меня есть доступ к различным годам (2010, 2011, 2012 и т.д.). Я хочу скачать файлы для всех стран (28) и всех предыдущих лет (с 2005 по 2013 год), то есть как минимум 252 запроса.

Я попытался выяснить, как я могу напрямую использовать URL загрузки. Окончательный URL-адрес (в данном случае для Болгарии в 2010 году)следующий.

С этого URL я могу:

  • удалите параметр "& installationAllowance = 35266538"
  • удалить параметр "& registryCodeLookup = Bulgaria"
  • изменить параметр "& periodYear = 2010" (чтобы изменить контрольную дату)
  • измените параметр "& registryCode = BG" (чтобы изменить страну).

Моя единственная проблема на данный момент заключается в том, что каждая ссылка требует проверки со страницы загрузки (щелчок по кнопке "ОК").

В исходном коде страницы я вижу, что сработала функция:

<form name="export" method="POST" action="http://ec.europa.eu/environment/ets/export.do">

Код кнопки "ОК" следующий:

<input type="submit" name="OK" value="Ok" class="FormButton" id="btnOK">

В исходной странице также есть блок JavaScript.

Как я мог массово скачать эти файлы? (Я думал о создании группы ссылок, замене лет и стран на RegEx, а затем использовании расширения "DownThemAll" для Firefox с опцией "загрузить из файла").

1 ответ1

1

Я бы определенно подумал об использовании python с модулем под названием selenium.

Вы можете легко автоматизировать любые действия браузера (даже без использования PhantomJS).

Простейший пример:

driver = webdriver.Firefox()
driver.get("http://www.python.org")
assert "Python" in driver.title
elem = driver.find_element_by_name("q")
elem.send_keys("pycon")
elem.send_keys(Keys.RETURN)
assert "No results found." not in driver.page_source
driver.close()

Над кодом откроется веб-страница python.org, найдите элемент q , введите "pycon", нажмите Enter и проверьте, были ли возвращены какие-либо результаты.

Вы можете определить цепочки действий, которые хотите выполнить:

actions = ActionChains(driver)
actions.move_to_element(menu)
actions.click(hidden_submenu)
actions.perform()

Конечно, вы можете найти кнопку "ОК", которую нужно нажать:

button_ok = driver.find_element_by_id('button')

и нажмите на него:

button_ok.click()

Xpath также можно использовать для поиска заданных элементов: /html/body/button .

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .