Tôi đang cố tải xuống một số tệp PDF tự động trên trang web (http://bibliotecadigitalhispanica.bne.es) bằng cách sử dụng Python.Thực thi JavaScript trong href liên kết với Python
Tôi đã thử sử dụng các mô-đun urllib/urllib2/mechanize (mà tôi đã sử dụng cho các trang web khác: điều này bao gồm các hàm chuẩn như urlopen, urlretrieve, v.v.), nhưng ở đây, các liên kết có JavaScript được nhúng trong href thuộc tính mà làm một số chế biến và mở ra các PDF, mà các mô-đun này dường như không thể xử lý, ít nhất là từ những gì tôi đã đọc ở đây. Ví dụ: khi tôi làm như sau:
request = mechanize.Request('the example url below')
response = mechanize.urlopen(request)
nó chỉ lấy lại trang HTML có chứa - Tôi dường như không thể trích xuất PDF (không có liên kết nào bên trong trang đó).
Tôi biết bằng cách xem qua các tiêu đề trong trình duyệt thực (sử dụng phần mở rộng LiveHTTPHeaders trong Firefox) có rất nhiều yêu cầu HTTP được thực hiện và cuối cùng là PDF được trả lại (và được hiển thị trong trình duyệt). Tôi muốn có khả năng ngăn chặn điều này và tải xuống. Cụ thể, tôi nhận được một loạt các câu trả lời 302 và 304, cuối cùng dẫn đến tệp PDF.
Dưới đây là ví dụ về thuộc tính liên kết mà tôi đang thu thập dữ liệu: href = 'javascript: open_window_delivery ("http://bibliotecadigitalhispanica.bne.es:80/verylonglinktoaccess");'
Dường như nếu tôi thực thi JavaScript này được nhúng trong thuộc tính href, cuối cùng tôi có thể tiếp cận tài liệu PDF. Tôi đã thử với selen, nhưng nó là một chút khó hiểu - Tôi không hoàn toàn chắc chắn làm thế nào để sử dụng nó khi đọc tài liệu của nó. Ai đó có thể đề nghị một cách (hoặc thông qua một mô-đun tôi đã không cố gắng hoặc thông qua một mà tôi có) mà tôi có thể làm điều này?
Cảm ơn bạn rất nhiều vì đã giúp đỡ về điều này.
PS: trong trường hợp bạn muốn nhìn thấy những gì tôi đang cố gắng để tái tạo, tôi đang cố gắng để truy cập vào liên kết PDF nêu trên ở trang sau (những người với các biểu tượng PDF) :): http://bibliotecadigitalhispanica.bne.es/R/9424CFL1MDQGLGBB98QSV1HFAD2APYDME4GQKCBSLXFX154L4G-01075?func=collections-result&collection_id=1356
bạn có thể sử dụng cụm từ thông dụng để trích xuất uri không? – max
Tôi cũng đã thử làm điều này, kéo URI từ bên trong lời gọi hàm JavaScript và sau đó cố gắng truy cập với cơ chế hóa và urllib2, nhưng không may mắn cho đến nay - nó chỉ cho tôi trở lại trang chứa html: -/Từ xem các tiêu đề, có vẻ như rất nhiều yêu cầu được thực hiện với URI này, bao gồm một số chuyển hướng. Có cách nào để lấy tất cả các phản ứng này không? Có lẽ điều đó cũng có thể giải quyết vấn đề. Cảm ơn bạn đã phản ứng, bằng cách này. – spanport
CẬP NHẬT: Tôi đã kết thúc tìm một cách xung quanh nó trên trang web cụ thể này bằng cách tìm cấu trúc của URL gần nhất với tệp PDF và sau đó chuyển hướng từ những tệp đó. Chúc mừng! – spanport