Cuộn vô hạn là gì? Cơ chế, UX, SEO và thu thập dữ liệu

Cuộn vô hạn là gì? Cơ chế, UX, SEO và thu thập dữ liệu

Trình duyệt thu thập dữ liệu không cần scrap có thể render và cuộn các nguồn cấp dữ liệu điều khiển bằng JavaScript trong một trình duyệt đám mây để các bản ghi mới được thêm vào trở nên khả dụng cho các workflows thu thập dữ liệu.

TL;DR

  • Cuộn vô hạn mô tả một phần có thể quan sát được cách các trang web hoặc hệ thống web hoạt động. Định nghĩa hữu ích kết nối khái niệm với dữ liệu, trạng thái và các yêu cầu mà một workflow có thể xác minh.
  • HTML phản hồi và trạng thái trình duyệt không thể hoán đổi cho nhau. Một số giá trị có sẵn ngay lập tức, trong khi những giá trị khác cần render, tương tác, hoặc phản hồi có cấu trúc sau đó.
  • Chọn phương pháp nhẹ nhất mà có thể trả về dữ liệu đầy đủ. Phân tích HTML khi nó đủ, kiểm tra các yêu cầu có cấu trúc khi phù hợp, và sử dụng trình duyệt khi thực thi trình duyệt là cần thiết.
  • Việc hoàn thành phải được chứng minh bằng chứng nội dung. Những định danh ổn định, các trạng thái kết thúc rõ ràng và các điều kiện sẵn sàng cụ thể theo nguồn an toàn hơn so với các độ trễ cố định.
  • Việc thu thập có trách nhiệm tôn trọng các quy tắc truy cập đã công bố và khả năng. Sự công khai không loại bỏ các điều khoản, nghĩa vụ pháp lý, chỉ đạo của robot, hoặc kiểm soát tỷ lệ.

Cuộn vô hạn là gì?

Cuộn vô hạn là một mẫu giao diện tải hoặc hiển thị một đợt nội dung khác khi người dùng tiếp cận cuối danh sách hiện tại. Trang web ở trong một cái nhìn liên tục, và người dùng không chọn một trang số nào. Dù tên gọi, mỗi tập dữ liệu thực tế và phiên đều có giới hạn thực tiễn, vì vậy việc triển khai vẫn phụ thuộc vào các đợt và một điều kiện kết thúc.

Kích hoạt có thể là một sự kiện cuộn, một Intersection Observer quan sát một phần tử gác, hoặc một thành phần danh sách ảo phản ứng với vị trí viewport. Trang sau đó yêu cầu hoặc hiển thị nhiều bản ghi hơn và cập nhật danh sách. Một số triển khai thêm các nút vĩnh viễn; những cái khác tái chế một bộ hàng nhỏ để kiểm soát việc sử dụng bộ nhớ.

Cuộn vô hạn không phải là một giao thức truy cập dữ liệu. Dưới giao diện, ứng dụng thường sử dụng phân trang theo bù, trang, con trỏ hoặc khóa. Tìm cơ chế tiếp tục cơ bản đó thường đáng tin cậy hơn so với việc lặp lại mô phỏng chuyển động bánh xe mà không hiểu nguyên nhân gây ra đợt tiếp theo.

Sự phân biệt chính là thực tiễn: một workflow dữ liệu nên xác định lớp mà sở hữu giá trị mục tiêu. Lớp đó có thể là phản hồi tài liệu, bộ nhớ trình duyệt, một nút đã render, một phản hồi nền, hoặc một chính sách phía máy chủ. Khi lớp được biết đến, workflow có thể thu thập giá trị với ít giả định hơn và xác minh nó so với hành vi trang mà người dùng thực sự nhận được.

Cách Cuộn Vô Hạn Hoạt Động

Cuộn vô hạn trở nên dễ lý luận hơn khi quy trình được chia thành các giai đoạn có thể quan sát. Mỗi giai đoạn tạo ra bằng chứng có thể được kiểm tra trong phản hồi, trình duyệt, nhật ký mạng hoặc tập hợp bản ghi đã trích xuất.

Một phần tử gác đến gần viewport

Nhiều triển khai quan sát một phần tử nhỏ gần cuối danh sách. Khi nó giao nhau với viewport hoặc một vùng chứa cuộn, ứng dụng lên lịch tải tiếp theo.

Đợt tiếp theo được yêu cầu

Một yêu cầu mang theo giá trị trang, bù, con trỏ, hoặc khóa mục cuối cùng. Phản hồi có thể bao gồm các bản ghi cộng với một mã thông báo tiếp theo hoặc đánh dấu kết thúc.

Danh sách thay đổi

Ứng dụng thêm các mục, thay thế các vị trí giữ chỗ, hoặc tái chế các hàng. Một bộ thu thập dựa trên DOM phải tính đến bất kỳ chiến lược nào được sử dụng.

Chuyển vị trí bố cục

Hình ảnh và thẻ chiều cao biến đổi có thể thay đổi vị trí cuộn sau khi chèn. Do đó, cuộn đến một giá trị pixel cố định ít đáng tin cậy hơn so với việc nhắm mục tiêu đến vùng chứa danh sách và xác nhận các bản ghi mới.

Một trạng thái kết thúc xuất hiện

Một nguồn cấp dữ liệu được thiết kế tốt cuối cùng sẽ báo cáo không còn dữ liệu nữa, loại bỏ phần tử gác, vô hiệu hóa việc tải, hoặc hiển thị một thông báo kết thúc. Việc thu thập nên dừng lại dựa trên bằng chứng thay vì dựa trên một số cuộn tùy ý.

Các giai đoạn này có thể chồng chéo, lặp lại, hoặc được xử lý bởi các hệ thống khác nhau. Kế hoạch thu thập dữ liệu do đó nên theo dõi yêu cầu thực tế và trình tự trạng thái chứ không giả định rằng một sự kiện tải trang nào đó đại diện cho toàn bộ vòng đời. Các công cụ phát triển trình duyệt hữu ích vì chúng đưa tài liệu, mạng, lưu trữ, và chế độ chạy bên cạnh nhau.

Các Hình Thức Chính và Các Khái Niệm Liên Quan

Các sự phân biệt sau đây ngăn chặn các lỗi danh mục phổ biến. Chúng cũng giúp các nhóm chọn một trình phân tích, khách hàng HTTP, trình duyệt, bộ lập lịch, hoặc chính sách thu thập dữ liệu cho công việc.

Khái niệmNó Đại DiệnSử Dụng Điển Hình
Cuộn vô hạnTải tự động gần cuối danh sáchDuyệt liên tục và nguồn cấp dữ liệu phát hiện
Tải thêmNgười dùng yêu cầu rõ ràng đợt tiếp theoNhiều kiểm soát và một thời gian dừng rõ ràng
Phân trang theo sốCác trang và vị trí riêng biệtTruy cập ngẫu nhiên, khả năng tiếp tục, và các chuỗi có thể thu thập dữ liệu
San ảoChỉ các hàng gần gũi còn được gắnDanh sách khách hàng lớn với kích thước DOM được kiểm soát

Một nhãn chỉ hữu ích khi nó dự đoán hành vi. Nếu hai tuyến đường trên cùng một trang trả về dữ liệu qua các lớp khác nhau, hãy coi chúng là các bề mặt trích xuất khác nhau ngay cả khi nhóm sản phẩm mô tả chúng bằng một thuật ngữ kiến trúc. Quan sát ở cấp độ tuyến đường vượt qua một giả định toàn miền.

Tại sao điều này quan trọng đối với việc thu thập dữ liệu và thu thập từ web

Việc thu thập từ web gây thất bại âm thầm khi nó đọc lớp sai. Một parser có thể trả về HTML hợp lệ mà thiếu các bản ghi mục tiêu. Một trình duyệt có thể hiển thị một giao diện thuyết phục trong khi một yêu cầu cần thiết bị từ chối. Một chuỗi có thể trả về các lô đầy đủ trong khi lặp lại các bản ghi giống nhau. Các kiểm tra bên dưới liên kết cuộn vô hạn với chất lượng dữ liệu hơn là sự ưu thích công cụ.

Cuộn đúng container

Nhiều nguồn cấp dữ liệu sống bên trong một bảng điều khiển bên trong thay vì tài liệu. Quy trình làm việc phải xác định phần tử nào sở hữu vị trí cuộn.

Theo dõi các khóa duy nhất

Đếm các định danh bản ghi ổn định sau mỗi lần tải. Đếm nút DOM một mình thì không đáng tin cậy khi ảo hóa loại bỏ các nút cũ hơn.

Chờ thay đổi

Sau khi kích hoạt lô tiếp theo, hãy chờ một khóa mới, một yêu cầu hoàn thành, hoặc một trạng thái kết thúc rõ ràng thay vì sử dụng một giấc ngủ liên tục.

Bảo tồn các lô

Lưu trữ từng bản ghi mới quan sát được trước khi cuộn thêm nếu giao diện tái chế các nút. Điều này ngăn các mục cũ biến mất trước khi trích xuất.

Trình duyệt là một tùy chọn bên trong cây quyết định đó. Trang sản phẩm Trình duyệt thu thập không scrapeless mô tả bề mặt trình duyệt được quản lý, trong khi tài liệu hướng dẫn bắt đầu Trình duyệt thu thập bao gồm các tham số kết nối và phiên. Sử dụng việc hiển thị trình duyệt chỉ cho những trạng thái cần thực thi trình duyệt, và giữ các cách lấy và phân tích đơn giản hơn cho nội dung đã có sẵn trong phản hồi.

Một quy trình chẩn đoán thực tế

Một chẩn đoán đáng tin cậy bắt đầu bằng so sánh, không phải mã tự động hóa. Bảo tồn phản hồi đầu tiên, quan sát giao diện trực tiếp, và kết nối từng trường mục tiêu với sự kiện hoặc tài nguyên tạo ra nó.

  1. Kiểm tra trang cho một bảng điều khiển có thể cuộn và một tín hiệu ở dưới cùng. Xác nhận xem tài liệu hoặc một phần tử bên trong nhận chuyển động cuộn hay không.
  2. Theo dõi các yêu cầu trong một lần cuộn được kiểm soát. Xác định giá trị tiếp tục và trường phản hồi báo hiệu một lô khác.
  3. So sánh số lượng nút DOM với số lượng bản ghi duy nhất qua một vài lần tải. Một số lượng nút phẳng với các khóa thay đổi cho thấy việc ảo hóa.
  4. Kích hoạt một lần tải tại một thời điểm và yêu cầu một thay đổi trạng thái có thể đo lường trước khi di chuyển lần nữa. Điều này tránh việc phát hành các tải chồng chéo và làm lộn xộn các lô.
  5. Kiểm tra sự kết thúc thực sự của một truy vấn nhỏ hoặc danh sách đã được lọc. Tìm hiểu xem trang có hiển thị nhãn kết thúc, loại bỏ tín hiệu, không trả về bản ghi nào, hoặc để điều khiển nằm im không.

Ghi lại kết quả như một hợp đồng trích xuất nhỏ: mô hình URL mục tiêu, bối cảnh công cộng, lớp nguồn, điều kiện sẵn sàng, bộ chọn hoặc trường phản hồi, khóa duy nhất, quy tắc tiếp tục, quy tắc kết thúc, và các kiểm tra xác thực. Hợp đồng này bền hơn một kịch bản mà chứa cùng những giả định mà không nêu tên chúng.

Sử dụng chứng cứ từ tài liệu kỹ thuật chính khi xác định hợp đồng. Các nền tảng liên quan đến chủ đề này bao gồm hướng dẫn cuộn vô hạn và phân trang của Google API Intersection Observer của MDN. Những nguồn này mô tả hành vi nền tảng và giao thức; hành vi trực tiếp của trang mục tiêu vẫn cần quan sát riêng.

Những sai lầm phổ biến

Hầu hết các thất bại xung quanh cuộn vô hạn đến từ việc thay thế một tín hiệu thuận tiện cho trạng thái thực tế mà quy trình làm việc cần. Những sai lầm sau có thể trả về đầu ra hợp lý, điều này làm cho chúng nguy hiểm hơn một lỗi rõ ràng.

  • Cuộn cửa sổ khi nguồn cấp dữ liệu sử dụng một container bên trong không tạo ra nội dung bổ sung nào.
  • So sánh chỉ chiều dài DOM có thể báo cáo sai rằng không có tiến bộ trên danh sách ảo.
  • Nhảy trực tiếp xuống dưới có thể bỏ qua các ngưỡng cắt hoặc bắt đầu vài lần tải cùng một lúc.
  • Dừng lại sau một quan sát không thay đổi có thể kết thúc quá sớm trong khi một yêu cầu hợp pháp vẫn đang chờ xử lý.
  • Bỏ qua một tùy chọn phân trang có thể thu thập được có thể làm cho việc khám phá khó khăn hơn mức cần thiết cho cả công cụ tìm kiếm và công cụ dữ liệu.

Bảo vệ chống lại những thất bại này bằng các tuyên bố ở cấp nội dung. Yêu cầu một container đã biết, ít nhất một khóa ổn định khi có kết quả được mong đợi, không có khóa trùng lặp trong một lô, thứ tự nhất quán nơi thứ tự quan trọng, và một trạng thái trống hoặc kết thúc được công nhận. Lưu giữ đủ bối cảnh để tái tạo một kết quả đáng ngờ mà không ghi lại thông tin xác thực hoặc dữ liệu riêng tư.

Thực hành tốt nhất cho một quy trình làm việc bền vững

Ưu tiên ý nghĩa ổn định hơn vị trí trực quan. Các bộ chọn và quy tắc nên mô tả vai trò của một giá trị, không phải vị trí tạm thời của nó trong một bố cục. Khi một phản hồi có cấu trúc là nguồn công cộng được ủy quyền được sử dụng bởi trang, hãy bảo tồn ánh xạ trường liên quan và xác thực nó so với nhãn đã được hiển thị.

Làm cho trạng thái trở nên rõ ràng. Ghi lại vùng địa lý, viewport, tuyến đường, giả định phiên công cộng, bộ lọc, thứ tự sắp xếp, và các giá trị tiếp tục. Một giá trị không có trạng thái của nó có thể không thể so sánh với một bản ghi sau này.

Tách biệt khám phá, lấy, hiển thị và trích xuất. Mỗi giai đoạn có chi phí và chế độ thất bại khác nhau. Sự tách biệt cho phép một công việc chỉ hiển thị các URL mà nó yêu cầu, xử lý lại các phản hồi đã lưu mà không cần lưu lượng mới, và kiểm tra các bản ghi chưa hoàn thiện trước khi chúng vào các hệ thống phía dưới.

Sử dụng công việc có giới hạn. Định nghĩa số trang tối đa, hành động cuộn, yêu cầu hoạt động và bản ghi cho mỗi lần chạy. Giới hạn bảo vệ cả dịch vụ mục tiêu và hệ thống thu thập khi một vòng điều khiển tiếp theo, một con trỏ lặp lại hoặc một trang tạo ra không gian thu thập không mong đợi.

Tôn trọng nhà xuất bản và người dùng. Kiểm tra robots.txt ở những nơi áp dụng, tuân theo các điều khoản và luật pháp, chỉ thu thập các trường công khai cần thiết cho một mục đích xác định, tránh các khu vực riêng tư hoặc hạn chế, và giữ thể tích yêu cầu trong một phạm vi hợp lý. Quyền truy cập kỹ thuật không giống như quyền ủy quyền cho mọi sử dụng.

Kết luận

Cuộn vô hạn hữu ích nhất như một mô hình vận hành: xác định nơi dữ liệu tồn tại, quan sát cách trạng thái đó được sản xuất, và chọn phương pháp thu thập nhỏ nhất có thể tái tạo điều đó. Quy trình làm việc mạnh nhất so sánh trạng thái nguồn và trạng thái đã hiển thị, theo dõi các tín hiệu tiếp tục rõ ràng, và xác thực các bản ghi với các khóa bền vững.

Bắt đầu với một URL đại diện và viết hợp đồng trích xuất trước khi mở rộng. Bước nhỏ đó phơi bày các giả định về thời gian, định tuyến, phân trang và chính sách trong khi chúng vẫn còn rẻ để sửa chữa. Chỉ mở rộng khi quy trình làm việc có thể giải thích lý do tại sao mỗi bản ghi là hoàn chỉnh và nguồn gốc của từng trường.

Sẵn sàng kiểm tra các trang điều khiển bằng JavaScript?

Sử dụng Scrapeless Scraping Browser khi một trang công khai yêu cầu thực thi trình duyệt, tương tác hoặc kiểm tra trạng thái đã hiển thị.

Bắt đầu miễn phí →

Câu hỏi thường gặp

Cuộn vô hạn là gì theo cách đơn giản?

Cuộn vô hạn tự động thêm một lô nội dung khác khi người dùng gần đến cuối danh sách, giữ cho trải nghiệm trong một trang liên tục.

Cuộn vô hạn có giống như tải lười không?

Cuộn vô hạn là một cách sử dụng của việc tải tăng dần. Tải lười rộng hơn và có thể trì hoãn hình ảnh, mô-đun hoặc các phần cho đến khi chúng cần thiết.

Tại sao cuộn vô hạn khó để thu thập dữ liệu?

Lô tiếp theo có thể yêu cầu một sự kiện trình duyệt, một thùng cuộn bên trong và dữ liệu bất đồng bộ; ảo hóa cũng có thể loại bỏ các nút cũ khỏi DOM.

Cuộn vô hạn nên hỗ trợ SEO như thế nào?

Cung cấp các URL có thể thu thập và các liên kết tuần tự cho nội dung cơ bản vì các công cụ tìm kiếm có thể không kích hoạt hành vi cuộn của người dùng hoặc các điều khiển chỉ script.

Tài liệu tham khảo