Tăng thời gian chờ lên 30s cho hàm crawl dữ liệu website

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 ạ.

1 Like

php sleep - Google Search.

Hoặc bạn cung cấp thêm thông tin

3 Likes

Bạn dùng hàm/thư viện nào đê kéo dữ liệu về?

2 Likes

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ế :smile:

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.

3 Likes

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.

4 Likes

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ả

1 Like

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…

5 Likes

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 :crazy_face::crazy_face::crazy_face:

4 Likes

cám ơn bác Hà Mã Tím nhé!

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?