2009-04-07 27 views
17

Dọn dẹp trang trên Internet dường như đã đánh một phần bức tường cho tôi, vì ngày càng có nhiều trang web phụ thuộc vào JavaScript để hiển thị các phần của màn hình.Có công cụ dòng lệnh hoặc thư viện nào để hiển thị các trang web sử dụng JavaScript không?

Dường như với tôi rằng với rất nhiều bố trí nguồn mở và kết xuất đồ họa JavaScript phát hành (như WebKit, GeckoChromium + V8) rằng ai đó phải làm một công cụ để tải về một trang và render JavaScript của nó mà không cần phải chạy một thực tế trình duyệt. Tuy nhiên, tôi không bật lên những gì tôi đang tìm kiếm với các tìm kiếm của tôi - Tôi đã tìm thấy các công cụ như Selenium-rc, nhưng chúng phụ thuộc vào một trình duyệt đang chạy. Tôi quan tâm đến bất kỳ công cụ hoặc thư viện nào có thể thực hiện một (hoặc cả hai) nội dung sau:

  1. Chương trình có thể chạy từ dòng lệnh (* nix), được cung cấp nguồn của trang , trả về nguồn của trang như được hiển thị bởi một số công cụ JS.

  2. Hỗ trợ tích hợp bằng một ngôn ngữ cụ thể cho phép một (dễ dàng) chuyển nguồn của trang cho nó và trả về nguồn của trang như được hiển thị bởi một số công cụ JS.

Tôi nghĩ # 1 thích hợp hơn, nhưng # 2 sẽ hữu ích hơn nếu công cụ tồn tại bằng ngôn ngữ tôi muốn làm việc. Ngoài ra, tôi không quan tâm đến công cụ JS cụ thể - mọi người tương đối hiện đại sẽ làm. Có gì ngoài kia?

+0

Bạn có nghĩa là, làm thế nào tôi có thể ăn cắp javascript của bạn, cũng như nội dung của bạn? Đừng quên css. – kennebec

+2

Và tôi cũng đã bỏ qua nó, nếu không phải là bạn can thiệp vào trẻ em! –

+1

Vâng, javascript là REALLY cũng ẩn thông qua http bạn biết. Nó không phải là một yêu cầu GET đi hoặc bất cứ điều gì. –

Trả lời

0

Có Cobra Engine cho Java (http://lobobrowser.org/cobra.jsp), xử lý Javascript (nó cũng có trình kết xuất đồ họa, nhưng đó là tùy chọn). Tôi đã không bao giờ sử dụng nó, nhưng đã nghe những điều tốt đẹp nói về nó.

2

Bạn có thể xem HTMLUnit. Mục đích chính của nó là thử nghiệm web tự động, nhưng tôi nghĩ nó có thể cho phép bạn có được trang được hiển thị.

1

Chúng tôi đã sử dụng Rhino đôi khi trước đây để thực hiện một số thử nghiệm tự động từ Java. Dường như nó sẽ thực hiện công việc cho bạn :)

2

Vâng, có công cụ DumpRenderTree được sử dụng như một phần của bộ thử nghiệm WebKit. Tôi không chắc nó thích hợp như thế nào để biến thành một công cụ độc lập, nhưng nó làm những gì bạn yêu cầu (render HTML, chạy JavaScript, và đổ cây render của nó ra đĩa).

1

tôi nghĩ rằng có một mã ví dụ cho Qt sử dụng WebKit được bao gồm để hiển thị một trang cho một bản đồ pixmap. từ đó đến một tiện ích CLI đầy đủ chỉ là xác định nhu cầu của bạn.

tất nhiên, đối với hầu hết màn hình scraping cần bạn muốn văn bản, không phải là một pixmap ... nếu đó là những gì bạn muốn, kiểm tra tốt hơn Rhino

0

Nó rất ít mã để có một WebView làm cho một trang mà không hiển thị bất cứ điều gì, nhưng nó phải là một ứng dụng GUI. Họ cũng có thể lấy đối số dòng lệnh và ẩn cửa sổ. Sử dụng WebKit trực tiếp nó có thể là có thể trong một công cụ.

Ngoài việc truy cập DOM phức tạp trong Objective-C WebKit cũng có thể tiêm JavaScript và cùng với jQuery tạo ra giải pháp cạo tốt đẹp. Tuy nhiên, tôi không biết bất kỳ ứng dụng phổ dụng nào làm điều đó.

2

Vì JavaScript có thể thực hiện rất nhiều thao tác đối với mô hình đối tượng tài liệu của trang web (DOM), có vẻ như để xóa chính xác nội dung của một trang tùy ý, bạn không cần phải chạy một công cụ JavaScript. cũng cần một bản trình bày DOM đầy đủ và chính xác của trang. Đó là một cái gì đó bạn sẽ chỉ nhận được nếu bạn có một công cụ trình duyệt thực sự instantiated. Có thể sử dụng một công cụ WebKit hoặc Gecko được nhúng, không hiển thị cho điều này, sau đó sau khi tải trễ phù hợp để cho phép thực thi tập lệnh, chỉ cần đổ nội dung DOM ở dạng HTML.

+0

Đó là chính xác những gì tôi muốn, xin lỗi nếu tôi không giải thích nó một cách chính xác trong bài viết của tôi. Tôi hiểu rằng bạn sẽ cần cả một công cụ DOM và JS để có được những gì tôi muốn. Nếu bạn có thể giải thích phần cuối cùng chi tiết hơn để được đánh giá cao. –

+0

"(...) sau đó sau khi tải trễ phù hợp để cho phép thực thi tập lệnh (...)" Đó chính là vấn đề tôi không thể giải quyết được nên tôi đã hỏi câu hỏi này http://stackoverflow.com/questions/1302874/ how-to-know-khi-a-web-trang-được-nạp-khi-sử dụng-qtwebkit –

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