Próbuję pobrać niektóre pliki PDF automatycznie na stronę (http://bibliotecadigitalhispanica.bne.es) za pomocą Pythona.Wykonywanie JavaScript w hrefach łączy z Pythonem
Próbowałem używać modułów urllib/urllib2/mechanize (których używałem w innych serwisach: obejmuje to standardowe funkcje, takie jak urlopen, urlretrieve, itp.), Ale tutaj linki mają wbudowane JavaScript w ich atrybuty href, które przetwarzają niektóre pliki i otwierają plik PDF, który wydaje się nie być w stanie obsłużyć tych modułów, przynajmniej z tego, co przeczytałem tutaj. Na przykład, kiedy należy wykonać następujące czynności:
request = mechanize.Request('the example url below')
response = mechanize.urlopen(request)
po prostu odzyskać zawierającego stronę HTML - Ja po prostu nie może wydawać się, aby wyodrębnić plik PDF (nie ma linki do niego wewnątrz tej stronie, albo).
Wiem, przeglądając nagłówki w prawdziwej przeglądarce (używając rozszerzenia LiveHTTPHeaders w przeglądarce Firefox), że wiele żądań HTTP jest wykonywanych, a ostatecznie plik PDF jest zwracany (i wyświetlany w przeglądarce). Chciałbym móc to przechwycić i pobrać. Konkretnie, otrzymuję serię 302 i 304 odpowiedzi, prowadzących ostatecznie do pliku PDF.
Oto przykład atrybutu linku, który indeksuję: href = 'javascript: open_window_delivery ("http://bibliotecadigitalhispanica.bne.es:80/verylonglinktoaccess");'
Wygląda na to, że jeśli wykonam ten JavaScript osadzony w atrybucie href, w końcu uda mi się dotrzeć do samego dokumentu PDF. Próbowałem z selenem, ale jest to trochę mylące - nie jestem pewien, jak go użyć po przeczytaniu jego dokumentacji. Czy ktoś może zaproponować sposób (albo przez moduł, którego nie próbowałem, albo przez taki, który mam), że mogę to zrobić?
Dziękuję bardzo za pomoc w tej sprawie.
PS: w przypadku chcesz zobaczyć, co staram się replikować, Próbuję uzyskać dostęp do linków PDF wyżej wymienionych na następnej stronie (te z ikonami PDF) :): http://bibliotecadigitalhispanica.bne.es/R/9424CFL1MDQGLGBB98QSV1HFAD2APYDME4GQKCBSLXFX154L4G-01075?func=collections-result&collection_id=1356
możesz użyć wyrażenia regularnego, aby wyodrębnić uri? – max
Próbowałem również zrobić to, wyciągając URI z wewnątrz wywołania funkcji JavaScript, a następnie próbując uzyskać do niego dostęp za pomocą mechanizmu i urllib2, ale bez powodzenia - po prostu daje mi z powrotem stronę zawierającą html: -/From viewing w nagłówkach wygląda na to, że za pomocą tego identyfikatora URI wykonuje się wiele żądań, w tym niektóre przekierowania. Czy istnieje sposób na uzyskanie tych wszystkich odpowiedzi? Być może to może rozwiązać problem. Dziękuję za odpowiedź. – spanport
AKTUALIZACJA: W końcu znalazłem sposób obejścia tego w tej witrynie, znajdując strukturę adresów URL, które znajdowały się najbliżej plików PDF, a następnie przekierowując z nich. Twoje zdrowie! – spanport