2013-01-31 21 views
6

Tôi đang tìm nạp các trang có cURL bằng PHP. Mọi thứ đều hoạt động tốt, nhưng tôi đang tìm nạp một số phần của trang được tính bằng JavaScript một phần sau khi trang được tải. cURL đã gửi nguồn của trang trở lại tập lệnh PHP của tôi trước khi tính toán JavaScript được thực hiện, do đó dẫn đến kết quả cuối cùng sai. Các tính toán trên trang web được tìm nạp bởi AJAX, vì vậy tôi không thể sao chép tính toán đó một cách dễ dàng. Ngoài ra tôi không có quyền truy cập vào mã của trang đích, vì vậy tôi không thể tinh chỉnh trang đích đó để phù hợp với nhu cầu tìm nạp (cURL) của tôi.Có cách nào để cho phép cURL đợi cho đến khi các cập nhật động của trang được thực hiện?

Có cách nào tôi có thể yêu cầu cURL đợi cho đến khi tất cả lưu lượng truy cập động được hoàn tất không? Nó có thể là khó khăn, do một số JavaScripts được tiếp tục gửi dữ liệu trở lại một tên miền khác có thể dẫn đến treo lâu. Nhưng ít nhất tôi có thể kiểm tra sau đó nếu tôi ít nhất có được kết quả chính xác trở lại.

Thanh công cụ dành cho nhà phát triển của tôi trong Safari cho biết trang được thực hiện trong khoảng 1,57 giây. Có lẽ tôi có thể nói cURL tĩnh để chờ 2 giây nữa?

Tôi tự hỏi khả năng là gì :)

Trả lời

4

cURL không thực thi bất kỳ JavaScript nào hoặc tải xuống bất kỳ tệp nào được tham chiếu trong tài liệu. Vì vậy, cURL không phải là giải pháp cho vấn đề của bạn.

Bạn sẽ phải sử dụng trình duyệt ở phía máy chủ, yêu cầu trình duyệt tải trang, đợi X giây và sau đó yêu cầu nó cung cấp cho bạn HTML.

Nhìn vào: http://phantomjs.org/ (bạn sẽ cần phải sử dụng node.js, tôi không biết về bất kỳ giải pháp PHP nào).

+0

May mắn thay, đó chỉ là một đoạn mã nhỏ. Tôi sẽ viết lại mã trong JavaScript và tìm nạp dữ liệu với jQuery và PhantomJS sau đó. Cảm ơn bạn :) –

+0

Có cách nào để bao gồm PhantomJS chỉ rõ ràng trong trang HTML địa phương của tôi, nơi tôi làm jQuery của tôi? –

+0

Không. Phantom.js sử dụng trình duyệt webkit thực bên trong, mà bạn không thể thực hiện trên máy khách. –

2

Không biết nhiều về trang bạn đang truy lục hoặc tính toán bạn muốn bao gồm, nhưng có thể là một tùy chọn để cURL thẳng tới URL phục vụ các yêu cầu ajax đó. Sử dụng một cái gì đó như Firebug để kiểm tra các cuộc gọi Ajax được thực hiện trên trang mục tiêu của bạn và bạn có thể tìm ra URL và bất kỳ thông số nào được chuyển. Nếu bạn cần trang web đầy đủ, có thể bạn có thể cURL cả trang web và URL Ajax và kết hợp cả hai trong mã PHP của bạn, nhưng sau đó nó bắt đầu lộn xộn.

+0

Đây là cách để đi, thay vì sử dụng một chương trình khác. –

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