Tôi cần tải xuống trang web sau: http://m.10bet.com/#leage_panel#10096Site scraping: Chờ cho đến khi trang web được tải hoàn toàn
Đây là trang thể thao và tôi cần báo giá. Vì vậy, ở nơi đầu tiên điều này có vẻ khá đơn giản. Tuy nhiên, đây là những gì xảy ra (bạn có thể kiểm tra điều này với ví dụ như công cụ phát triển của trình duyệt của bạn.):
- Mở URL
- Trang tải một HTML ban đầu mà sau đó gọi một yêu cầu ajax để lấy dấu ngoặc kép
- Tuy nhiên, báo giá được chứa trong json NHƯNG chúng được obfruscated như vậy mà nó không thể đơn giản phân tích chúng trực tiếp từ cuộc gọi ajax. Ngoài ra, javascript của trang web được obfruscated là tốt. Vì vậy, không có cơ hội để trực tiếp đọc báo giá từ yêu cầu.
Thay vào đó, tôi sẽ cần sử dụng trình duyệt không có khả năng đánh giá javascript. HtmlUnit cho java là không đủ vì nó không cung cấp chức năng javascript mạnh mẽ. Do đó PhantomJS kết hợp với CasperJS là lựa chọn hiện tại của tôi. Tôi áp dụng CasperJS với tập lệnh sau:
var casper = require('casper').create();
casper.start('http://m.10bet.com/#leage_panel#10096', function() {
var url = 'http://m.10bet.com/#leage_panel#10096';
this.download(url, '10bet.html');
});
casper.run(function() {
this.echo('Done.').exit();
});
Tuy nhiên, tập lệnh này không tải trang đầy đủ. Chỉ là trang inital. Làm cách nào để tải trang web hoàn chỉnh như được trình bày trong trình duyệt?
Tôi không quen với các công cụ đó, nhưng bạn có thể đính kèm mã của mình vào sự kiện 'domready' không? Điều đó có thể làm điều đó. – halfer