загрузка файла с веб-страницы с использованием скрипта python без URL-адреса, вызов функции onClick

Существует веб-страница, на которой есть ссылка «Нажмите, чтобы загрузить», нажав на которую загружается файл. Я могу загрузить этот файл вручную, перейдя на веб-страницу и нажав на эту ссылку, однако мне нужно загрузить этот файл через скрипт python.

Если я вижу источник, я вижу, что тэг anchor запускает функцию js

Download in csv 

Но я не знаю URL-адрес файла csv, и я ищу способ загрузить его через python.

Я знаю, что мы можем загрузить файл, если у нас есть url, использующий httplib, но не могу понять, как получить файл без URL-адреса.

Пробовал несколько вещей, например, в заголовке добавлено «Content-Disposition»: ‘attachment; filename = “data.csv”‘}

но он, похоже, работает. Есть идеи ?

Здесь могут быть применены два основных варианта:

  • имитировать логику, dataform с dataform onclick() – в вашем случае, сделать dataform формы формы данных с помощью requests или mechanize
  • высокоуровневый подход – автоматизировать настоящий браузер, безголовый ( PhantomJS ) или нет, используя selenium – найдите ссылку и нажмите на нее:

     from selenium import webdriver driver = webdriver.PhantomJS() driver.get('url here') driver.find_element_by_class_name('download-data-link1').click() 

Хотя, насколько я понимаю, нажатие ссылки приведет к появлению диалогового windows браузера «Загрузить», а затем PhantomJS не является вариантом, так как он не поддерживает загрузку. В случае Chrome или Firefox вам необходимо настроить возможности браузера для автоматической загрузки файлов, не открывая всплывающее окно, см.

  • Доступ к диалоговому окну загрузки файлов в Firefox
  • Firefox + Selenium WebDriver и автоматически загружайте файл csv

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

  1. Прежде всего вы можете создать профиль firefox. Для этого:
  2. Закрыть все браузеры Firefox
  3. перейдите в командную строку cmd и выполните firefox.exe -P
  4. создайте профиль и запишите имя папки, в которой создан новый профиль.

Вы можете установить некоторые параметры для своего профиля, например: автоматически загружать эти файлы из контента и т. Д.

Теперь загрузите selenium для python и используйте ниже код

 import os from selenium import webdriver download_dir="D:\a" fp = webdriver.FirefoxProfile() fp.set_preference("browser.download.dir", download_dir) fp.set_preference("browser.download.manager.showWhenStarting",False) fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream"); browser = webdriver.Firefox(firefox_profile=fp) browser.get("http://pypi.python.org/pypi/selenium") # you can use your url here browser.find_element_by_partial_link_text("selenium-2").click() # Use your method to identify class or link text here browser.close(); 

Надеюсь, это может помочь другим 🙂