Sto cercando di scaricare alcuni PDF automaticamente su un sito (http://bibliotecadigitalhispanica.bne.es) utilizzando Python.Esecuzione JavaScript a href dei link con Python
Ho provato a utilizzare i moduli urllib/urllib2/mechanize (che ho utilizzato per altri siti: questo include le funzioni standard come urlopen, urlretrieve, ecc.), Ma qui i link hanno JavaScript incorporato nella loro attributi href che fa un po 'di elaborazione e si apre il file PDF, che questi moduli non sembrano essere in grado di gestire, almeno da quello che ho letto qui. Per esempio, quando faccio la seguente:
request = mechanize.Request('the example url below')
response = mechanize.urlopen(request)
solo tornare la pagina HTML contenente - io proprio non riesco ad estrarre il PDF (non ci sono collegamenti ad esso all'interno di quella pagina, o).
Conosco guardando le intestazioni in un vero browser (usando l'estensione LiveHTTPHeaders in Firefox) che vengono fatte molte richieste HTTP e alla fine il PDF viene restituito (e visualizzato nel browser). Mi piacerebbe essere in grado di intercettare questo e scaricarlo. Concretamente, ottengo una serie di 302 e 304 risposte, che alla fine portano al PDF.
Ecco un esempio di un attributo di collegamento che sto strisciando: href = 'javascript: open_window_delivery ("http://bibliotecadigitalhispanica.bne.es:80/verylonglinktoaccess");'
Sembra che se eseguo questo JavaScript incorporato nel href, posso finalmente raggiungere il documento PDF stesso. Ho provato con il selenio, ma è un po 'confuso - non sono abbastanza sicuro di come usarlo leggendo la sua documentazione. Qualcuno può suggerire un modo (sia attraverso un modulo che non ho provato o attraverso uno che ho) che posso farlo?
Grazie mille per qualsiasi aiuto con questo.
PS: nel caso in cui si desidera vedere quello che sto cercando di replicare, sto cercando di accedere ai link di cui sopra in formato PDF della pagina seguente (quelli con le icone in formato PDF) :): http://bibliotecadigitalhispanica.bne.es/R/9424CFL1MDQGLGBB98QSV1HFAD2APYDME4GQKCBSLXFX154L4G-01075?func=collections-result&collection_id=1356
si potrebbe usare un'espressione regolare per estrarre l'uri? – max
Ho provato a fare anche questo, tirando fuori l'URI da dentro la chiamata di funzione JavaScript e poi cercando di accedere a quella con Mechanize e urllib2, ma senza fortuna finora - semplicemente mi restituisce la pagina html contenente: -/Da visualizzazione le intestazioni, sembra che siano state fatte molte richieste con questo URI, inclusi alcuni reindirizzamenti. C'è un modo per afferrare tutte queste risposte? Forse potrebbe anche risolvere il problema. Grazie per la risposta, a proposito. – spanport
UPDATE: Alla fine ho trovato un modo per aggirarlo su questo particolare sito trovando la struttura degli URL che erano più vicini ai file PDF e quindi reindirizzandoli da quelli. Saluti! – spanport