Làm sao scrape những trang web động như Tiki và Lazada bằng scrapy-splash Python
Hiện tại em đang làm một project nhỏ về Data Science có một bước là cần crawl data về.
Em đã tham khảo nhiều framework thì em quyết định chọn scrapy và splash để thực hiện công việc này. Có một điều đó là, hiện tại em chưa có kiến thức về frontend cũng như JS để có thể tự thực hiện công việc một cách mượt mà nhất, nên khi tiến hành scrape trên Tiki em phát hiện ra nếu chỉ đơn giản dùng mỗi SplashRequest
cho một trang ví dụ như f'https://tiki.vn/nha-sach-tiki/c8322?page={page_no}'
thì cho dù page_no
có giá trị bao nhiêu thì kết quả luôn giống hệt trang 'https://tiki.vn/nha-sach-tiki/c8322?page=1'
. điều này cũng tương tự với Lazada (bên này em thấy còn không render cả tên sản phẩm cho).
Vậy các bác đi trước có thể cho em xin lời khuyên cũng như hướng đi được không ạ. Em xin chân thành cảm ơn ạ. Mọi đóng góp em đều tiếp thu ạ
1 ANSWERS
Bạn có thể xem lại xem có code sai đoạn nào không, chứ lúc trước mình cũng từng crawl data tiki rồi, thì page_no khác --> kết quả khác mà
P/s: Source tham khảo khác (có thể bạn cũng đọc rồi): https://chidokun.github.io/2020/05/crawl-tiki-products/
@tungbuitien dạ em chưa dùng lua script để render thêm nên cũng không rõ lắm ạ! không biết anh có thể thử lại bằng scrapy-splash không ạ.
Em để ý khi dùng scrapy shell để test: scrapy shell 'http://localhost:8050/render.html?url=https://tiki.vn/nha-sach-tiki/c8322?page=..&wait=..'
thì thi thoảng lắm mới ra đúng được trang web còn không sẽ trả về trang đầu tiên như câu hỏi của em hoặc là hiện lên thông báo quay lại thời điểm khác kiểu này 🤣
@raisinbl cái này bạn phải tự vọc code rồi, ngày trước mình chỉ dùng requests để lấy file html, xong dùng BeautifulSoup để lấy id cần thiết thôi, việc còn lại thì gọi API của tiki là có hết rồi
@tungbuitien thế claim voucher. Bạn đã thử chưa?