2011-02-03 38 views
6

Tôi muốn nhận danh sách tất cả các url hình ảnh từ nguồn HTML của một trang web (Cả hai abosulte và url tương đối). Tôi đã sử dụng Jsoup để phân tích cú pháp HTML nhưng không cung cấp tất cả hình ảnh. Ví dụ khi tôi phân tích google.com HTML nguồn cho thấy nó không images..In google.com HTML liên kết hình ảnh nguồn ở dạng ..Trích xuất tất cả hình ảnh từ HTML bằng cách sử dụng JAVA

"background:url(/intl/en_com/images/srpr/logo1w.png)

Và trong rediff.com những hình ảnh liên kết ở dạng ..

videoArr[j]=new Array("http://ishare.rediff.com/video/entertainment/bappi-da-the-first-indian-in-grammy-jury/2684982","http://datastore.rediff.com/h86-w116/thumb/5E5669666658606D6A6B6272/v3np2zgbla4vdccf.D.0.bappi.jpg","Bappi Da - the first Indian In Grammy jury","http://mypage.rediff.com/profile/getprofile/LehrenTV/12669275","LehrenTV","(2:33)"); j = 1 videoArr[j]=new Array("http://ishare.rediff.com/video/entertainment/bebo-shahid-jab-they-met-again-/2681664","http://datastore.rediff.com/h86-w116/thumb/5E5669666658606D6A6B6272/ra8p9eeig8zy5qvd.D.0.They-Met-Again.jpg","Bebo-Shahid : Jab they met again!","http://mypage.rediff.com/profile/getprofile/LehrenTV/12669275","LehrenTV","(2:17)");

Tất cả các hình ảnh không có trong "img" tags..I cũng muốn trích xuất hình ảnh mà không phải là ngay cả với trong "img" thẻ như trong nguồn HTML trên.

Làm thế nào tôi có thể làm điều này ..? Xin hãy giúp tôi về vấn đề này .. Cảm ơn

+0

Tại sao lại là Java? Bạn có nghĩ đến việc phát triển plugin trình duyệt không? – fglez

+0

Hoặc thực hiện proxy để lưu mọi hình ảnh? –

Trả lời

1

này sẽ là một chút khó khăn, tôi nghĩ vậy. Về cơ bản, bạn cần một thư viện sẽ tải xuống một trang web, xây dựng DOM của trang và thực thi bất kỳ javascript nào có thể thay đổi DOM. Sau khi tất cả được thực hiện, bạn phải trích xuất tất cả các hình ảnh có thể từ DOM. Một tùy chọn có thể khác là chặn tất cả các cuộc gọi của thư viện để tải xuống tài nguyên, kiểm tra URL và nếu URL là một bản ghi hình ảnh có URL đó.

Đề xuất của tôi sẽ bắt đầu bằng cách chơi với HtmlUnit (http://htmlunit.sourceforge.net/gettingStarted.html.) Công việc tốt là xây dựng DOM. Tôi không chắc chắn những loại móc nó có, để chặn các phương pháp tải xuống tài nguyên. Tất nhiên nếu nó không cung cấp cho bạn các móc, bạn luôn có thể sử dụng AspectJ hoặc đơn giản là sửa đổi mã nguồn HtmlUnit. Chúc may mắn, điều này nghe giống như một vấn đề khá thú vị. Bạn nên đăng giải pháp của bạn, khi bạn tìm ra nó.

0

Nếu bạn chỉ muốn mọi hình ảnh được đề cập trong trang, bạn có thể chỉ cần quét HTML và bất kỳ javascript hoặc CSS được liên kết nào bằng một regex đơn giản không? Khả năng bạn sẽ nhận được [-:_./%a-zA-Z0-9]*(.jpg|.png|.gif) trong HTML/JS/CSS không phải là hình ảnh? Tôi đoán là không có khả năng. Và bạn nên cho phép liên kết bị hỏng anyway.

Đề xuất của Karthik sẽ chính xác hơn, nhưng tôi cho rằng điều quan trọng hơn đối với bạn là chỉ cần có được tất cả mọi thứ và lọc ra những hình ảnh không thú vị.

Các vấn đề liên quan