Nội dung động là gì? Cách các trang web thay đổi sau khi tải

Nội dung động là gì? Cách các trang web thay đổi sau khi tải

Trình duyệt thu thập dữ liệu không cần scrap chạy JavaScript của trang trong một trình duyệt đám mây để các quy trình làm việc có thể tiếp cận nội dung động không có trong phản hồi HTML ban đầu.

TL;DR

  • Nội dung động mô tả một phần quan sát được về 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à yêu cầu mà một quy trình làm việc có thể xác minh.
  • Phản hồi HTML và trạng thái trình duyệt không thể thay thế cho nhau. Một số giá trị có sẵn ngay lập tức, trong khi những giá trị khác yêu cầu phải được 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 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 thích hợp và sử dụng trình duyệt khi việc thực thi trình duyệt là thiết yếu.
  • Việc hoàn thành phải được chứng minh bằng chứng từ nội dung. Các định danh ổn định, trạng thái kết thúc rõ ràng và các điều kiện sẵn sàng cụ thể cho nguồn an toàn hơn so với độ 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 công bố và khả năng. Khả năng hiển thị công cộng không loại bỏ các điều khoản, nghĩa vụ pháp lý, chỉ dẫn cho robot hoặc kiểm soát tỷ lệ.

Nội dung động là gì?

Nội dung động là nội dung trang thay đổi theo dữ liệu, thời gian, đầu vào của người dùng, trạng thái phiên, vị trí hoặc logic ứng dụng thay vì giữ nguyên như phản hồi tài liệu gốc. Sự thay đổi có thể thay thế một giá cả, thêm một nhóm kết quả khác, mở một bảng điều khiển, phát một thông điệp hoặc xây dựng lại hầu hết giao diện.

Động không tự động có nghĩa là chỉ JavaScript. Một máy chủ có thể tạo HTML khác nhau cho mỗi yêu cầu, đó là nội dung động phía máy chủ. Một trình duyệt cũng có thể nhận một shell ứng dụng nhỏ và lấy dữ liệu sau đó, đó là nội dung động phía khách. Nhiều trang web sản xuất kết hợp cả hai phương pháp và thêm các phần đã được lưu cache hoặc tạo tĩnh.

Đối với công việc dữ liệu, câu hỏi quan trọng là nơi giá trị mong muốn trở nên khả dụng. Nó có thể đã có trong phản hồi HTML, được nhúng như trạng thái tuần tự, được trả về bởi yêu cầu JSON nền hoặc chỉ được tạo ra sau một tương tác. Vị trí đó xác định phương pháp trích xuất đáng tin cậy ít tốn kém nhất.

Sự phân biệt chính là thực tiễn: một quy trình làm việc 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, nút đã render, phản hồi nền hoặc chính sách phía máy chủ. Khi lớp đã được biết đến, quy trình có thể thu thập giá trị với ít giả định hơn và xác minh nó với hành vi trang mà người dùng thực sự nhận được.

Cách Nội dung Động Hoạt Động

Nội dung động trở nên dễ dàng hơn để lý luận khi quy trình được tách 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ồ sơ đã được trích xuất.

Một yêu cầu thiết lập ngữ cảnh

URL, cookie, tiêu đề, ngôn ngữ và vị trí có thể ảnh hưởng đến phản hồi đầu tiên. Hai người sử dụng do đó có thể nhận nội dung khác nhau trước khi bất kỳ mã trình duyệt nào chạy.

Kịch bản yêu cầu hoặc suy diễn dữ liệu

Mã khách có thể gọi các điểm cuối HTTP, đọc trạng thái được lưu cache, tính toán giá trị, hoặc đăng ký một luồng. Kết quả sau đó được ánh xạ vào các thành phần giao diện người dùng.

DOM được cập nhật

Các bản ghi mới xuất hiện dưới dạng các nút đã được chèn hoặc thay đổi. Một số ứng dụng tái sử dụng một tập hợp cố định các nút khi người dùng cuộn, vì vậy danh sách hiển thị sẽ thay đổi mặc dù DOM không bao giờ giữ toàn bộ tập dữ liệu một lần.

Tương tác thay đổi trạng thái ứng dụng

Các từ khóa tìm kiếm, bộ lọc, sắp xếp, tab và điều khiển phân trang cập nhật trạng thái. Trạng thái đó có thể kích hoạt thay đổi lộ trình, yêu cầu mạng, tính toán cục bộ, hoặc một số hoạt động đó cùng nhau.

Khả năng sẵn sàng là cụ thể cho ứng dụng

Một trang có thể hoàn thành tải ban đầu trong khi một biểu đồ, bảng hoặc nguồn cấp vẫn đang chờ. Tự động hóa đáng tin cậy chờ bằng chứng liên quan đến nội dung mục tiêu thay vì một khoảng thời gian tổng quát.

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 trích xuất do đó nên theo dõi yêu cầu thực tế và trình tự trạng thái thay vì giả định rằng một sự kiện tải trang đại diện cho toàn bộ vòng đời. Các công cụ phát triển trình duyệt rất hữu ích vì chúng đặt 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 phân biệt sau đây ngăn chặn các lỗi phân loại 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, lịch trình hoặc chính sách thu thập cho công việc.

Khái niệmNó Đại Diện ChoSử Dụng Điển Hình
Nội dung phản hồi tĩnhCó mặt trong HTML ban đầuLấy và phân tích phản hồi
Nội dung động phía máy chủĐược tạo trên máy chủ theo yêu cầuBảo tồn ngữ cảnh yêu cầu và phân tích HTML
Nội dung động phía kháchĐược thêm hoặc thay đổi bởi JavaScript trình duyệtRender, tương tác hoặc gọi điểm cuối dữ liệu
Nội dung phát trực tuyếnXuất hiện từng phần qua một kênh mởQuan sát sự hoàn thành và ghi lại các trạng thái ổn định

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 web trả dữ liệu qua các lớp khác nhau, hãy coi chúng như 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.

Tại sao điều đó quan trọng cho việc thu thập dữ liệu và lấy dữ liệu từ web

Việc thu thập dữ liệu từ web thất bại một cách yên lặng khi nó đọc sai lớp. Một trình phân tích cú pháp có thể trả về HTML hợp lệ nhưng thiếu các bản ghi mục tiêu. Một trình duyệt có thể tạo ra 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 nội dung động với chất lượng dữ liệu thay vì sở thích công cụ.

Giám sát danh mục

Giá cả, khả năng sẵn có, chương trình khuyến mãi và các biến thể có thể thay đổi theo vùng hoặc tùy chọn được chọn. Quy trình làm việc phải ghi lại trạng thái đã tạo ra mỗi giá trị.

Tìm kiếm và nguồn cấp dữ liệu

Kết quả có thể đến theo lô sau khi thực hiện tìm kiếm, cuộn hoặc sự kiện bộ lọc. Việc thu thập cần một quy tắc dừng dựa trên các mục độc nhất mới hoặc một trạng thái kết thúc rõ ràng.

Bảng điều khiển

Biểu đồ thường trực quan hóa dữ liệu được giữ trong phản hồi của mạng hoặc trạng thái của khách hàng. Đọc cấu trúc payload có thể chính xác hơn là sao chép các nhãn đã định dạng từ canvas hoặc DOM.

Các trang cá nhân hóa

Trạng thái đã đăng nhập và lịch sử người dùng có thể thay đổi nội dung. Quy trình làm việc với dữ liệu công khai nên tránh các phiên riêng tư và ghi lại bối cảnh công khai được sử dụng cho mỗi quan sát.

Một trình duyệt là một tùy chọn trong cây quyết định đó. Trang sản phẩm Scrapeless Scraping Browser miêu tả bề mặt trình duyệt được quản lý, trong khi tài liệu Scraping Browser getting-started documentation bao gồm các tham số kết nối và phiên. Sử dụng việc kết xuất trình duyệt chỉ cho các trạng thái cần thực thi trình duyệt, và giữ các con đường lấy và phân tích đơn giản hơn cho nội dung đã có sẵn trong các phản hồi.

Một quy trình chuẩn đoán thực tiễn

Một chẩn đoán đáng tin cậy bắt đầu bằng việc 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 mỗi trường mục tiêu với sự kiện hoặc tài nguyên tạo ra nó.

  1. Lưu lại phản hồi thô và so sánh nó với trang đã được kết xuất. Văn bản mục tiêu thiếu trong phản hồi là tín hiệu rõ ràng nhất rằng giá trị cuối cùng được sản xuất sau đó.
  2. Tải lại với bảng mạng mở và lọc các yêu cầu Fetch hoặc XHR. Khớp các trường phản hồi với các thẻ, hàng hoặc nhãn nhìn thấy trước khi chọn phương pháp dựa trên điểm cuối.
  3. Thay đổi một đầu vào tại một thời điểm, chẳng hạn như bộ lọc hoặc thứ tự sắp xếp, và quan sát xem URL, payload yêu cầu, hoặc DOM có thay đổi không. Điều này tiết lộ trạng thái nào thực sự điều khiển nội dung.
  4. Kiểm tra các trạng thái đang tải, trống, thành công, và lỗi. Một quy trình làm việc nên phân biệt không có kết quả với những kết quả chưa đến.
  5. Chọn một quy tắc hoàn thành có giới hạn. Ví dụ bao gồm một dấu hiệu trang cuối, một điều khiển tải thêm đã tắt, một số lượng mục duy nhất ổn định, hoặc một phản hồi ứng dụng báo cáo không có con trỏ tiếp theo.

Tài liệu kết quả như một hợp đồng trích xuất nhỏ: mẫu URL mục tiêu, bối cảnh công khai, 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 vững hơn một kịch bản chứa cùng những giả định mà không nêu tên chúng.

Sử dụng bằng chứng 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 cho chủ đề này bao gồm MDN Fetch API reference MDN hướng dẫn về các cập nhật DOM của trình duyệt. 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 web 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 nội dung động đến từ việc thay thế một tín hiệu tiện lợi 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 có vẻ hợp lý, điều này làm cho chúng nguy hiểm hơn so với một lỗi rõ ràng.

  • Chờ một số giây cố định khiến việc hoàn thành phụ thuộc vào timing mạng và máy chủ chứ không phải trạng thái trang.
  • Gọi một điểm cuối dữ liệu không được tài liệu mà không hiểu bối cảnh cần thiết có thể sản xuất các kết quả khác nhau so với giao diện công khai.
  • Giả định mọi nút DOM đại diện cho một bản ghi duy nhất thất bại trên các danh sách ảo kích hoạt các nút.
  • Bỏ qua ngôn ngữ địa phương, tiền tệ, kích thước thiết bị, hoặc cookie làm cho việc lấy lại nhiều lần khó khăn để so sánh.
  • Thu thập trong quá trình hoạt hình hoặc luồng trung gian có thể lưu lại văn bản chưa viết và các giá trị giữ chỗ.

Bảo vệ chống lại những thất bại này với các khẳng định cấp nội dung. Cần một container đã biết, ít nhất một khóa ổn định khi kết quả được mong đợi, không có khóa trùng lặp bên trong một lô, thứ tự nhất quán nơi mà thứ tự quan trọng, và một trạng thái trống hoặc trạng thái kết thúc được công nhận.

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

Thích ý 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 địa điểm 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 khai đượ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ó với nhãn được kết xuất.

Làm rõ trạng thái. Ghi lại ngôn ngữ địa phương, vùng nhìn, tuyến đường, giả định phiên công khai, bộ lọc, thứ tự sắp xếp, và giá trị tiếp tục. Một giá trị thiếu trạng thái của nó có thể không thể so sánh với một lần lấy sau đó.

Tách biệt phát hiện, lấy dữ liệu, kết xuất, 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ỉ kết xuất các URL cần thiết, 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 thành trước khi chúng vào các hệ thống hạ nguồn.

Sử dụng công việc có giới hạn. Định nghĩa các 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 một 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 khi áp dụng, tuân theo các điều khoản và luật, 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ữ khối lượng yêu cầu trong giới hạn bảo thủ. Truy cập kỹ thuật không giống như việc ủy quyền cho mọi sử dụng.

Kết luận

Nội dung động hữu ích nhất như một mô hình hoạt động: 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 nó. 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 đã rendered, 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.

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 những thời điểm ẩn, định tuyến, phân trang và giả định chính sách trong khi chúng vẫn còn rẻ để sửa chữa. Mở rộng chỉ sau 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à mỗi trường đến từ đâu.

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

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 đã rendered.

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

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

Tất cả nội dung động có được tải bằng JavaScript không?

Không. Các máy chủ có thể tạo HTML động trước khi phản hồi được gửi, trong khi JavaScript thường xử lý các thay đổi xảy ra bên trong trình duyệt sau khi tải.

Làm thế nào bạn có thể biết nội dung có phải là động hay không?

So sánh phản hồi thô với trang trực tiếp, quan sát hoạt động mạng và thay đổi các điều khiển trang. Nội dung xuất hiện, biến mất hoặc thay đổi mà không có phản hồi tài liệu đầy đủ là động phía khách hàng.

Các trang động có luôn cần một trình duyệt không?

Không. Nếu dữ liệu cần thiết đã có trong HTML hoặc một điểm cuối ổn định đã được ủy quyền, một yêu cầu trực tiếp có thể là đủ. Một trình duyệt hữu ích khi JavaScript, tương tác hoặc trạng thái trình duyệt là cần thiết.

Cách an toàn nhất để biết nội dung động đã hoàn chỉnh là gì?

Sử dụng một điều kiện gắn liền với mục tiêu, chẳng hạn như một bộ chọn cuối cùng, một phản hồi hoàn thành hoặc một số lượng bản ghi duy nhất ổn định. Tránh giả định rằng một sự kiện tải chung bao trùm mọi tác vụ bất đồng bộ.

Tài liệu tham khảo