Выполнение JavaScript в ссылках href с помощью Python

Я пытаюсь автоматически загрузить некоторые PDF-файлы с сайта ( http://bibliotecadigitalhispanica.bne.es) с использованием Python

Я пытался использовать модули urllib/urllib2/mechanize (которые я использовал для других сайтов: сюда входят стандартные функции, такие как urlopen, urlretrieve и т. д.), но здесь ссылки имеют JavaScript, встроенный в их атрибуты href, который выполняет некоторую обработку и открывает PDF-файл, который эти модули, похоже, не могут обработать, по крайней мере, из того, что я прочитал здесь, Например, когда я делаю следующее:

request = mechanize.Request('the example url below')
response = mechanize.urlopen(request)

он просто возвращает содержащую HTML-страницу - я просто не могу извлечь PDF-файл (на этой странице также нет ссылок на него).

Я знаю, просматривая заголовки в реальном браузере (используя расширение LiveHTTPHeaders в Firefox), что делается много HTTP-запросов и в конечном итоге возвращается PDF (и отображается в браузере). Я хотел бы иметь возможность перехватить это и загрузить его. Конкретно, я получаю серию ответов 302 и 304, что в конечном итоге приводит к PDF.

Вот пример атрибута ссылки, который я сканирую: href='javascript:open_window_delivery(" http://bibliotecadigitalhispanica.bne.es:80/verylonglinktoaccess");'

Похоже, что если я выполню этот код JavaScript, встроенный в атрибут href, то в конечном итоге смогу получить доступ к самому PDF-документу. Я пробовал с селеном, но это немного сбивает с толку - я не совсем уверен, как его использовать, прочитав его документацию. Может ли кто-нибудь предложить способ (либо через модуль, который я не пробовал, либо через тот, который у меня есть), чтобы я мог это сделать?

Большое спасибо за любую помощь.

P.S.: если вы хотите увидеть, что я пытаюсь воспроизвести, я пытаюсь получить доступ к упомянутым выше ссылкам PDF на следующей странице (со значками PDF):): http://bibliotecadigitalhispanica.bne.es/R/9424CFL1MDQGLGBB98QSV1HFAD2APYDME4GQKCBSLXFX154L4G-01075?func=collections-result&collection_id=1356

6
задан spanport 16 March 2012 в 09:55
поделиться