Web Scraping Hoạt Động Như Thế Nào? Từ Các Trang Web Đến Các Hồ Sơ

Web Scraping Hoạt Động Như Thế Nào?

Trình duyệt Scrapeless Agent chạy các phiên trình duyệt đám mây để trích xuất nội dung từ các trang web yêu cầu rendering JavaScript.

Web scraping hoạt động bằng cách thu hồi một tài nguyên web, xác định thông tin mà một nhiệm vụ cần, và chuyển đổi thông tin đó thành các hồ sơ có cấu trúc. Một quy trình làm việc hoàn chỉnh cũng khám phá các trang cần truy cập, xác thực các trường được trích xuất, và lưu trữ đủ ngữ cảnh nguồn để giải thích mỗi quan sát.

Những sai lầm khó nhất thường xảy ra giữa các giai đoạn đó. Một yêu cầu mạng thành công có thể trả về trang sai. Một trang đúng có thể mang lại giá sai. Một mức giá hợp lý có thể mất đi giá trị tiền tệ trong quá trình chuẩn hóa. Đối xử với mỗi ranh giới một cách rõ ràng làm cho tập dữ liệu cuối cùng dễ tin cậy hơn.

TL;DR

  • Khám phá xác định phạm vi thu thập. Một scraper cần một tập hợp tài nguyên được phép có giới hạn.
  • Thu hồi và rendering là hai giai đoạn khác nhau. JavaScript có thể tạo ra các trường bị thiếu từ HTML ban đầu.
  • Trích xuất cần có một hợp đồng trường. Mỗi giá trị nên có một ý nghĩa và quy tắc xác thực được định nghĩa.
  • Các hồ sơ đã chấp nhận cần có nguồn gốc. Các URL nguồn và điều kiện thu thập giúp giải thích sự thay đổi.

Bắt Đầu Với Một Câu Hỏi và Một Hợp Đồng Trường

Một quy trình web scraping bắt đầu bằng câu hỏi mà dữ liệu ban đầu phải trả lời. Một nhiệm vụ giám sát danh mục có thể cần quan sát giá cả và sự sẵn có của các sản phẩm được chọn trong một thị trường được xác định. Mục đích đó xác định các trang và trường nào thuộc về công việc.

Xác định ý nghĩa của mỗi trường trước khi viết các quy tắc trích xuất. Giá hiển thị có thể là giá khuyến mãi, giá đơn vị, hoặc số tiền tài chính. Tình trạng sẵn có có thể mô tả việc giao hàng trực tuyến hoặc một cửa hàng cụ thể. Một hợp đồng trường nên phân biệt những ý nghĩa đó và quy định xem một giá trị bị thiếu có thể chấp nhận được hay không.

Ghi lại định danh nguồn, URL trang, giá trị quan sát được, và các điều kiện thu thập liên quan. Giữ nguyên văn bản hiển thị ban đầu khi một bước chuẩn hóa có thể làm mất đi ý nghĩa. Ví dụ, chuyển đổi một số tiền địa phương thành số không nên mất đi tiền tệ hoặc trình bổ sung đi kèm với nó.

Thiết kế này cũng hạn chế việc thu thập không cần thiết. Nếu một quan sát giá công khai trả lời nhiệm vụ, tên hoặc thông tin liên lạc của các nhà đánh giá không liên quan không thuộc về hồ sơ. Xác định phạm vi nguồn cho phép và mục đích giữ lại trong khi hợp đồng trường vẫn còn nhỏ.

Khám Phá Các Trang Bạn Được Phép Truy Cập

Khám phá chuyển đổi phạm vi nguồn được phép thành các URL ứng cử viên. Một nhiệm vụ có thể bắt đầu từ danh sách URL đã được thỏa thuận, một sơ đồ trang, hoặc các liên kết công khai trên các trang đã được phê duyệt. Danh sách được khám phá là một tập hợp các ứng cử viên, vì mỗi tài nguyên vẫn cần một phạm vi và kiểm tra truy cập.

Giải quyết các liên kết tương đối với địa chỉ cơ sở chính xác và giữ nguyên liên kết gốc khi cần thiết cho chẩn đoán. Các quy tắc giải quyết URI cung cấp một cách nhất quán để diễn giải các tham chiếu. Một liên kết bắt đầu bằng một đường dẫn tương đối không xác định một tài nguyên hoàn chỉnh cho đến khi việc giải quyết đó diễn ra.

Giữ các liên kết điều hướng, các trang tài khoản, các máy chủ không liên quan, và các tổ hợp bộ lọc không kiểm soát ra khỏi công việc. Một quy tắc khám phá dựa trên một đường dẫn hoặc loại trang có ý nghĩa dễ xem xét hơn so với việc thu thập mọi liên kết một cách tự do. Phân trang cũng cần một điều kiện kết thúc, chẳng hạn như sự vắng mặt của một điều khiển trang tiếp theo hoặc một phạm vi được phê duyệt có giới hạn.

Tôn trọng sở thích thu thập của trang web. Các Giao thức Loại trừ Robots định nghĩa cách các crawler tham gia đọc các quy tắc đường dẫn, nhưng một quy tắc cho phép thu thập không được giải quyết các quyền nội dung hoặc nghĩa vụ riêng tư. Giữ quyền khám phá tách biệt khỏi khả năng kỹ thuật để theo dõi một liên kết.

Thu Hồi Tài Nguyên và Xác Nhận Danh Tính Của Nó

Thu hồi lấy bản đại diện của tài nguyên trả về bởi đích đến. Một khách hàng HTTP có thể thu hồi HTML ban đầu hoặc một loại phản hồi khác được hỗ trợ. Một trình duyệt bổ sung cũng xử lý một tài liệu và có thể chạy các tập lệnh của nó.

Trạng thái phản hồi chỉ là một quan sát. Kiểm tra URL cuối cùng, loại nội dung, và danh tính trang trước khi trích xuất. Một chuyển hướng có thể dẫn đến một trang đăng nhập, và một phản hồi có vẻ thành công có thể chứa một thách thức hoặc một lỗi chung. Một bộ chọn giá áp dụng cho trang đó có thể không trả về gì mà không tiết lộ nguyên nhân thực sự.

Phân loại các phản hồi bằng cách sử dụng chứng cứ liên quan đến mục tiêu. Một tiêu đề sản phẩm và mã định danh sản phẩm ổn định có thể giúp xác nhận một trang chi tiết. Một tiêu đề loại và một thông điệp tình trạng trống rõ ràng có thể khẳng định rằng một trang thực sự không chứa sản phẩm nào. Một kết quả bộ chọn trống một mình không xác lập được bất kỳ trường hợp nào.

Các ngữ nghĩa HTTP giải thích lớp yêu cầu và phản hồi. Quy tắc chấp nhận của bạn phải đi xa hơn và quyết định liệu bản đại diện được trả về có thuộc về nhiệm vụ thu thập hay không. Lưu trữ các danh mục trang bị từ chối để người vận hành có thể xác định nơi pipeline ngừng tạo ra đầu vào hữu ích.

Chỉ Render Khi Nhu Cầu Nội Dung Cần Thiết

Rendering là cần thiết khi các trường hoặc liên kết cần thiết bởi nhiệm vụ được tạo thông qua việc thực thi trình duyệt. Một số trang đặt nội dung hữu ích trong HTML ban đầu. Những trang khác trước tiên trả về một shell, sau đó mới điền nội dung sau khi JavaScript chạy.

So sánh markup đã thu hồi với tài liệu hiển thị trong một trình duyệt tương tác. Nếu trường chỉ tồn tại trong tài liệu đã được rendering, một parser HTML không thể tạo ra nó chỉ bằng cách chờ đợi. Quy trình làm việc cần một trình duyệt hoặc một nguồn có cấu trúc được ủy quyền mà đã mang theo trường đó.

Trình duyệt Scrapeless Agent cung cấp các phiên trình duyệt đám mây cho giai đoạn rendering này. Mô hình thực thi của Trình duyệt Agent là liên quan khi nhiệm vụ phụ thuộc vào các trang động. Ứng dụng vẫn cần xác định thế nào là một trang sẵn sàng và nội dung mà nó dự định trích xuất.

Sử dụng điều kiện sẵn sàng liên quan đến trạng thái hữu ích của trang. Một bộ chứa sản phẩm bắt buộc hoặc một phần tử trạng thái trống đã được xác nhận có ý nghĩa hơn so với việc giả định rằng tất cả hoạt động nền phải dừng lại. Các trang trình duyệt có thể tiếp tục thực hiện phân tích và các yêu cầu mạng khác sau khi nội dung cần thiết để trích xuất đã có sẵn.

Trích xuất các trường trong bản ghi chính xác

Việc trích xuất chọn nội dung dự định và ánh xạ nó vào hợp đồng trường. Các bộ chọn CSS và các biểu thức XPath có thể định vị các phần tử trong một tài liệu đã được phân tích. Lựa chọn thiết kế quan trọng thường là ranh giới bản ghi hơn là ngôn ngữ bộ chọn.

Đối với danh sách sản phẩm, trước tiên xác định mỗi thẻ sản phẩm. Sau đó chọn tiêu đề, URL, giá và tính khả dụng bên trong thẻ đó. Chọn tất cả tiêu đề và tất cả giá một cách độc lập trên toàn bộ tài liệu có thể ghép các giá trị không liên quan khi một thẻ không có giá hoặc một mô-đun được tài trợ thêm một số tiền khác.

Đưa cho các bộ chọn một ý nghĩa vượt ra ngoài vẻ bề ngoài của chúng. Một thuộc tính liên quan đến danh tính sản phẩm có thể bền hơn so với một lớp trình bày được tạo ra. Vẫn cần kiểm tra các trang thực: một thuộc tính chỉ có giá trị nếu nó tồn tại và mô tả nhất quán về bản ghi bạn cần.

Giữ cho sự mơ hồ rõ ràng. Nếu một trường bắt buộc khớp với nhiều phần tử, hãy quyết định sự phân biệt ngữ nghĩa nào giải quyết được sự lựa chọn. Chọn phần tử đầu tiên một cách lặng lẽ có thể chấp nhận một giá phụ hoặc một đề xuất. Quy trình trích xuất trang web cung cấp một bối cảnh thực tế để tách quyền truy cập trang khỏi việc chọn nội dung có thể đọc hoặc có cấu trúc.

Chuẩn hóa, Xác thực và Lưu Trữ Quan sát

Chuẩn hóa chuyển đổi các giá trị nguồn thành một đại diện nhất quán trong khi xác thực quyết định liệu những giá trị đó có đáp ứng được nhiệm vụ hay không. Giữ cho quan sát ban đầu có sẵn cho đến khi bạn biết rằng việc chuyển đổi đã bảo tồn ý nghĩa của nó.

Một chuyển đổi số nên xem xét vị trí nguồn và các tiêu chí của giá trị. Thiếu, không có sẵn và không là những trạng thái khác nhau. Xem xét một giá vắng mặt như một giá trị thiếu rõ ràng hoặc một bản ghi bị từ chối theo hợp đồng trường; đừng chuyển đổi nó thành không chỉ để đáp ứng một cột số.

Xác thực có thể so sánh danh tính trang, các trường bắt buộc, đơn vị và các mối quan hệ cho phép. Một URL sản phẩm nên thuộc về bản ghi đang được trích xuất. Một loại tiền tệ nên phù hợp với thị trường được nêu. Đây là các quy tắc nhiệm vụ, vì vậy hãy gán chúng là tiêu chí chấp nhận của bạn thay vì các thuộc tính phổ quát của mọi trang web.

Lưu trữ nguồn gốc với các bản ghi được chấp nhận và lý do với các bản ghi bị từ chối. Sử dụng các số đếm riêng cho tài nguyên được phát hiện, các trang đã lấy, các trang được nhận diện và các bản ghi được chấp nhận. Một công việc đã lấy mọi URL nhưng không chấp nhận bản ghi nào thì không hoàn thành nhiệm vụ dữ liệu.

Xem lại Giá Scrapeless so với công việc truy xuất và xử lý mà thiết kế của bạn yêu cầu. Một so sánh chi phí có ý nghĩa sử dụng các quan sát được chấp nhận và nỗ lực bảo trì, không chỉ khối lượng yêu cầu.

Một Pipeline Danh mục Minh họa

Một pipeline danh mục có thể kết nối các giai đoạn này mà không kết hợp chúng thành một kịch bản không minh bạch. Ví dụ kế hoạch này mô tả các quyết định; nó không tuyên bố một kết quả thu thập trực tiếp.

Người điều hành bắt đầu với các URL sản phẩm được phê duyệt và một định nghĩa thị trường. Giai đoạn truy xuất truy cập từng tài nguyên, ghi lại URL cuối cùng của nó và phân loại trang đã trả lại. Các trang động vào một giai đoạn trình duyệt với một môi trường đã được tài liệu hóa. Việc trích xuất sau đó chọn bản ghi sản phẩm chính và đọc các trường trong ranh giới đó.

Giai đoạn chuyển đổi giữ nguyên văn bản hiển thị nguồn trong khi chuyển đổi một số tiền thành hình thức số đã thỏa thuận. Xác thực kiểm tra định danh, loại tiền tệ và ý nghĩa tính khả dụng cần thiết. Giai đoạn lưu trữ bổ sung quan sát được chấp nhận với nguồn và bối cảnh thu thập của nó.

Một cảnh báo thay đổi so sánh các điều kiện giống nhau. Nếu thị trường hoặc biến thể sản phẩm đã chọn thay đổi, quan sát cần một nhãn riêng trước khi nó được so sánh với một giá trị trước đó. Nếu trang bị từ chối, giai đoạn cảnh báo nên báo cáo sự không chắc chắn về việc thu thập thay vì sáng tạo một thay đổi thương mại.

Mỗi giai đoạn có thể được kiểm tra độc lập. Một bản ghi bị từ chối vì một giá mơ hồ là một vấn đề trích xuất hoặc định nghĩa; một trang đăng nhập là một vấn đề truy cập hoặc phạm vi. Sự phân biệt đó cho người điều hành một nơi cụ thể để điều tra.

Kết luận

Thu thập dữ liệu web hoạt động thông qua một chuỗi quyết định: xác định tài nguyên được phép, truy xuất đại diện đúng, render khi cần thiết, chọn các trường có ý nghĩa và chấp nhận các bản ghi theo một hợp đồng rõ ràng. Tập dữ liệu chỉ đáng tin cậy như ranh giới không kiểm tra yếu nhất.

Xây dựng phiên bản đầu tiên xung quanh một mẫu có ranh giới và kiểm tra mọi quan sát được chấp nhận. Bảo lưu danh tính trang và bối cảnh thu thập từ đầu. Một khi những kiểm tra đó hoạt động, mở rộng phạm vi phê duyệt với bằng chứng rằng các quy tắc tương tự vẫn miêu tả các trang đang được thu thập.

Xây dựng một Quy trình Thu thập Dữ liệu mà Bạn Có Thể Kiểm Tra

Sử dụng Scrapeless Agent Browser cho lớp render, sau đó áp dụng quy tắc chấp nhận trang và trường của riêng bạn.

Đăng ký hôm nay và nhận $5 tín dụng miễn phí — không yêu cầu thẻ tín dụng.

Nhận Tín Dụng $5 của Bạn →

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

Liệu thu thập dữ liệu web chỉ là tải xuống HTML?

Thu thập dữ liệu web bao gồm việc trích xuất thông tin hữu ích từ nội dung được truy xuất. Tải xuống HTML là một bước truy xuất; một quy trình dữ liệu hoàn chỉnh cũng chọn các trường, xác thực ý nghĩa của chúng và lưu trữ bối cảnh nguồn.

Tại sao một công cụ thu thập dữ liệu có thể không trả về dữ liệu từ một trang có thể nhìn thấy?

Một công cụ thu thập dữ liệu có thể không trả về dữ liệu vì nội dung yêu cầu cần JavaScript, phản hồi là một trang khác, hoặc quy tắc trích xuất là sai. Kiểm tra danh tính trang và đại diện đã truy xuất trước khi thay đổi các bộ chọn.

Liệu một phản hồi HTTP thành công có chứng minh rằng việc thu thập dữ liệu đã thành công không?

Một phản hồi HTTP thành công không chứng minh rằng việc thu thập dữ liệu đã tạo ra dữ liệu hợp lệ. Nội dung phải khớp với trang đã định, và các trường được trích xuất phải đáp ứng các quy tắc chấp nhận của nhiệm vụ.

Làm thế nào mà việc thu thập và scraping có liên quan với nhau?

Thu thập phát hiện và truy cập vào các tài nguyên, trong khi scraping trích xuất thông tin được chọn từ chúng. Một dự án có thể kết hợp cả hai giai đoạn hoặc scraping một danh sách URL đã được phê duyệt mà không cần khám phá đệ quy.

Tài liệu tham khảo