Tình hình là em muốn crawl website khác mà website đó phải mất đến 30s mới load xong dữ liệu, có cách nào tăng thời gian chờ lên 30s cho hàm crawl không ? Em cám ơn ạ.
Tăng thời gian chờ lên 30s cho hàm crawl dữ liệu website
php sleep
- Google Search.
Hoặc bạn cung cấp thêm thông tin
Bạn dùng hàm/thư viện nào đê kéo dữ liệu về?
em xài file_get_contents hoặc curl
thanks bác! [noz1995]
Cá nhân mình thấy, việc để server phải chờ 1 website đến vài giây, tức là phải có 1 request chờ đến vài giây, là không hợp lý. Web sinh ra không phải để làm thế
Nên có một process khác, không phải là PHP, xử lý những trang kiểu như vậy. Process đó sẽ save data crawl được dưới dạng cache, file, database…, PHP chỉ get data từ cache này thôi.
em thử sleep cũng không khả thi bác vì nó đợi sleep xong mới gọi hàm thì vẫn không lấy được
em muốn tìm hàm nào như $(windown).load của jquery ý(tải xong trang mới chạy function)
file_get_contents
hoặc curl
đều chờ trả về dữ liệu đầy đủ mới chạy tiếp mà, bạn chỉ cần đừng để quá timeout thôi, vì quá timeout thì crawl kết thúc.
file_get_contents
hoặc curl
như viewsoure em không lấy được kết quả của jquery, vì phải đợi tầm 10s jquery của trang đó mới trả kết quả
Vậy thì vấn đề không phải do trang đó không trả về mà là vì trang đó sử dụng client side rendering. Bạn cần sử dụng một thư viện có thể xử lý client side render trên PHP để chạy jquery. Mình tìm được link này, nhưng mà chưa hiểu rõ lắm…
cám ơn bác [noz1995] nhé!
bạn dùng thư viện scrapy nhé, nếu muôn crawl các site có ajax cần nhân browser để rendering HTML thì chỉ cần cài thêm Splash là bá đạo luôn
cám ơn bác Hà Mã Tím nhé!