Colly là gì?
Proxy không bị cạo cung cấp cơ sở hạ tầng proxy cho các quy trình thu thập HTTP được xây dựng bằng các công cụ Go như Colly.
Colly là một framework cạo dữ liệu trên web cho Go, tổ chức việc thu thập HTTP quanh một Bộ thu thập và các callback sự kiện. Nó có thể yêu cầu các trang, xử lý phản hồi, chọn nội dung HTML hoặc XML, và theo dõi các liên kết được phát hiện theo các quy tắc đã định cấu hình. Ứng dụng của bạn cung cấp logic trích xuất và quyết định kết quả nào là hợp lệ.
Colly hữu ích khi một dự án Go cần nhiều sự phối hợp hơn là một yêu cầu HTTP đơn giản và bộ phân tích cung cấp. Framework mang các hoạt động mạng và các callback xử lý trang vào một chu kỳ sống duy nhất. Nó vẫn là một bộ thu thập định hướng HTTP, vì vậy một trang mà nội dung cần thiết của nó chỉ xuất hiện sau khi thực thi JavaScript cần một phương pháp thu thập bổ sung.
Bộ thu thập Colly làm gì?
Một Bộ thu thập Colly quản lý giao tiếp mạng và gợi gọi các callback đã đăng ký khi việc thu thập diễn ra. Các chu kỳ sống callback của Colly cung cấp các điểm kết nối trước một yêu cầu, sau một phản hồi, trong quá trình trích xuất HTML hoặc XML, và sau khi cạo một phản hồi. Điều này cho phép chương trình gắn hành vi tại giai đoạn mà nó thuộc về.
Một callback yêu cầu có thể ghi lại đích đến và gắn kết ngữ cảnh yêu cầu được phép. Một callback phản hồi có thể kiểm tra những gì đã đến. Một callback HTML có thể chọn các phần tử liên quan và xây dựng hồ sơ. Một callback lỗi có thể bảo tồn lý do mà một yêu cầu không tạo ra phản hồi có thể sử dụng. Những callback này nên có trách nhiệm khác nhau thay vì mỗi cái cố gắng chạy toàn bộ quy trình.
Đăng ký callback trước khi bắt đầu việc thu thập. Khi các yêu cầu bắt đầu, chương trình nên đã biết cách phân loại các trang và nơi gửi các hồ sơ đã chấp nhận. Xem việc đăng ký callback như một phần của khởi tạo giúp hành vi của bộ thu thập trở nên dễ đoán hơn khi công việc về sau trở nên bất đồng bộ.
Khám Phá và Trích Xuất Là Hai Quyết Định Tách Biệt
Khám phá quyết định các URL nào để yêu cầu, trong khi trích xuất quyết định các trường nào để đọc từ một trang đã chấp nhận. Colly có thể thực hiện cả hai thông qua callback, nhưng việc kết hợp các quy tắc của chúng một cách mù quáng có thể mở rộng một cuộc thu thập xa hơn tập dữ liệu dự định. Một liên kết không tự động là một mục tiêu thu thập hữu ích hoặc được chấp nhận.
Đối với một chỉ mục tài liệu công cộng, một trang có thể chứa liên kết bài viết, liên kết điều hướng, bộ chọn ngôn ngữ, và các tài nguyên bên ngoài không liên quan. Callback khám phá nên nhận ra đường dẫn bài viết mong muốn và giải quyết các tham chiếu tương đối so với trang hiện tại. Nó không nên theo dõi mọi neo chỉ vì neo đó có địa chỉ.
Trích xuất bắt đầu sau khi loại trang được thiết lập. Một bài viết tài liệu có thể yêu cầu tiêu đề và một khu vực nội dung chính. Những bộ chọn đó nên được xác định cho bài viết, không phải cho các tiêu đề điều hướng. Lưu URL nguồn với hồ sơ đã trích xuất để một kết quả bất ngờ có thể được truy vết về tài liệu của nó.
Việc tách những quyết định này cũng cải thiện việc bảo trì. Một chỉ mục được thiết kế lại có thể thay đổi việc khám phá liên kết trong khi việc trích xuất bài viết vẫn hợp lệ. Một mẫu bài viết mới có thể thay đổi việc trích xuất trong khi mẫu URL được chấp nhận vẫn ổn định. Các chức năng và thể loại kết quả riêng biệt giúp làm nổi bật những sự khác biệt đó.
Các Kiểm Soát Phạm Vi Giữ Một Cuộc Thu Thập Hữu Hạn
Colly cung cấp cấu hình cho các miền, bộ lọc URL, độ sâu, và các hành vi thu thập khác. Những kiểm soát này giúp xác định nơi mà bộ thu thập có thể đi và bao xa khám phá có thể tiếp tục. Mô hình cấu hình Colly cũng hỗ trợ các thiết lập ứng dụng và môi trường, do đó cấu hình hiệu quả xứng đáng được xem xét khi một công việc di chuyển giữa các môi trường.
Các miền được phép tạo thành một ranh giới, nhưng nhiều trang web tiết lộ các tổ hợp tham số truy vấn vô hạn trong một miền. Việc sắp xếp, lọc, và kiểm soát lịch có thể tạo ra các URL khác nhau không thêm hồ sơ hữu ích. Định nghĩa các đường dẫn và tham số nào thuộc về việc thu thập, và chọn một điều kiện kết thúc rõ ràng.
Xóa trùng lặp yêu cầu và xóa trùng lặp hồ sơ giải quyết các đối tượng khác nhau. Một cơ chế URL đã truy cập tránh lặp lại công việc mạng cho cùng một danh tính yêu cầu. Hai URL khác nhau có thể vẫn đại diện cho cùng một bài viết. Sử dụng mã định danh ổn định của bài viết hoặc địa chỉ chuẩn được chấp nhận khi xóa trùng lặp tập dữ liệu đầu ra.
Giữ cho công việc bị bỏ qua có thể quan sát được. Một URL bị từ chối vì nó nằm ngoài phạm vi được chấp nhận không nên được tính là một tải xuống thất bại. Một URL hợp lệ thiếu nội dung yêu cầu không nên được tính là đã thu thập thành công. Những sự phân biệt này cho phép một báo cáo chạy thể hiện độ bao phủ mà không làm nhầm lẫn các quyết định chính sách với những thất bại kỹ thuật.
Colly Bất Đồng Bộ Cần Một Điểm Hoàn Thành Rõ Ràng
Colly bất đồng bộ có thể chồng chéo các yêu cầu, nhưng ứng dụng phải chờ cho công việc của bộ thu thập hoàn thành trước khi thoát. Các ví dụ bất đồng bộ của framework kết hợp việc thu thập với Wait và các quy tắc giới hạn cụ thể của miền. Bắt đầu các yêu cầu và ngay lập tức quay trở lại từ chương trình có thể để lại công việc chưa hoàn thành.
Mẫu song song và trì hoãn của Colly cho thấy cách mà các quy tắc giới hạn quản lý các đích tương ứng. Chọn giới hạn xung quanh nguồn và khả năng xử lý của bạn. Một cài đặt công nhân toàn cầu đơn lẻ có thể không thể hiện được các nhu cầu khác nhau của vài máy chủ hoặc khả năng của trình viết đầu ra của bạn.
Các callback chạy đồng thời cũng có thể chạm vào trạng thái ứng dụng chung. Việc thêm vào một cấu trúc kết quả chia sẻ, cập nhật một bộ đếm, hoặc ghi vào một tệp cần một mô hình sở hữu có chủ đích. Trình phát hiện đua dữ liệu của Go giúp xác định quyền truy cập không đồng bộ trong quá trình thử nghiệm. Mạng do framework quản lý không tự động làm cho mọi biến trong các callback của bạn an toàn.
Một Cuộc Tìm Kiếm Tài Liệu Minh Họa
Một cuộc tìm kiếm tài liệu có thể sử dụng Colly để phát hiện các trang bài viết đã được chấp thuận và trích xuất một bản ghi nhỏ, ổn định từ mỗi trang. Giả sử đầu ra mong muốn bao gồm địa chỉ bài viết, tiêu đề, nhãn phần và văn bản chính. Ví dụ này mô tả thiết kế; nó không tuyên bố một số trang hoặc kết quả cụ thể nào.
- Bắt đầu với một chỉ mục tài liệu đã biết và xác định mẫu máy chủ và đường dẫn bài viết hợp lệ.
- Khám phá các liên kết bài viết khớp trong khi loại trừ các hành động điều hướng thay đổi ngôn ngữ hoặc sắp xếp.
- Giải quyết mỗi điểm đến và chỉ chấp nhận nếu nó vẫn nằm trong phạm vi đã chọn.
- Phân loại phản hồi như một bài viết trước khi chọn tiêu đề và vùng nội dung chính.
- Xác thực các trường cần thiết và gửi các bản ghi được chấp nhận đến một trình ghi đầu ra có kiểm soát.
- Chờ đến khi việc thu thập hoàn tất và báo cáo công việc được chấp nhận, từ chối và chưa hoàn thành một cách riêng biệt.
Giữ ngữ cảnh với một yêu cầu khi chỉ mục cung cấp thông tin mà bài viết không lặp lại, chẳng hạn như nhãn phần. Đừng giả định rằng thứ tự hoàn thành sẽ khớp với thứ tự phát hiện. Các yêu cầu đồng thời có thể hoàn thành theo một trình tự khác, vì vậy việc liên kết bản ghi theo vị trí mảng có thể gắn nhãn phần sai cho một bài viết.
Sử dụng một loại kết quả rõ ràng. Một tiêu đề thiếu nên trở thành một kết quả xác thực với lý do, không phải một tiêu đề trống lặng lẽ được ghi vào lưu trữ. Nếu vùng chính bao gồm một bảng, hãy quyết định xem tập dữ liệu có cần các hàng cấu trúc của nó hay chỉ cần văn bản có thể đọc được. Quyết định đó thuộc về hợp đồng bản ghi trước khi việc thu thập bắt đầu.
Colly So Sánh Với Một Khách Hàng Go Hay Trình Duyệt Thông Thường
Colly thêm vòng đời thu thập và điều phối phát hiện trên giao tiếp HTTP thông thường. Một khách hàng HTTP Go đơn giản có thể đủ cho một danh sách điểm cuối cố định. Colly trở nên hữu ích khi các callback trang, theo dõi liên kết và cài đặt thu thập chung sẽ cần được lắp ráp lặp đi lặp lại.
| Tiếp cận | Khớp Tốt Nhất | Trách Nhiệm Ứng Dụng |
|---|---|---|
| Khách Hàng HTTP Go | Yêu cầu trực tiếp đến một danh sách điểm cuối đã biết | Xây dựng lập lịch và phân tích khi cần thiết. |
| Colly | Tìm kiếm HTTP với phát hiện và callback | Xác định phạm vi, điểm trích xuất và chất lượng đầu ra. |
| Tự động hóa trình duyệt | Kịch bản trang và quy trình tương tác | Xác định hành động và trạng thái trang cần thiết. |
Một lựa chọn khuôn khổ nên theo nhu cầu điều phối của công việc. Một nguồn cấp cố định nhỏ có thể không được hưởng lợi từ máy móc crawlers. Một đồ thị tài liệu với các trang chi tiết và bố cục lặp lại thường thì có. Một ứng dụng JavaScript có thể cần một trình duyệt ngay cả khi đồ thị URL của nó đơn giản. Chỉ một sở thích ngôn ngữ không thể giải quyết yêu cầu thu thập.
Định Tuyến Proxy Cho Các Bộ Sưu Tập Colly
Proxy Không Rác có thể cung cấp một lộ trình mạng cho Colly khi ngữ cảnh nguồn yêu cầu hạ tầng proxy. Các gia đình proxy Không Rác hỗ trợ các nhu cầu định tuyến khác nhau, trong khi Colly tiếp tục quản lý yêu cầu và callback. Giữ việc chọn proxy tách biệt khỏi các quy tắc xác định các trang bài viết hợp lệ.
Xem Giới thiệu về Proxy Không Rác và giải thích liên quan về máy chủ proxy trong kiến trúc thu thập thông tin trước khi chọn một lộ trình. Sử dụng chi tiết cấu hình hiện tại từ dịch vụ và tránh đặt thông tin xác thực vào URL đã thu thập hoặc đầu ra gỡ lỗi.
Một proxy không tạo ra các nút được kết xuất bằng JavaScript cho một bộ thu thập HTTP. Nếu một callback không thể tìm nội dung chỉ tồn tại trong trình duyệt, hãy kiểm tra phản hồi và các yêu cầu thu thập của nguồn. Xem lại giá của Không Rác cho dịch vụ định tuyến đã chọn, và ước tính chi phí bằng cách sử dụng phạm vi thu thập đã dự định hơn là từng URL có thể khám phá.
Kết Luận
Colly cung cấp cho các ứng dụng Go một cách có cấu trúc để điều phối thu thập HTTP thông qua các bộ thu thập và callback. Xác định phạm vi phát hiện trước tiên, giữ điểm trích xuất liên kết với từng bản ghi, và làm cho việc hoàn thành bất đồng bộ và quyền sở hữu trạng thái chia sẻ trở nên rõ ràng. Một cuộc tìm kiếm thành công tạo ra độ bao phủ có thể giải thích và các bản ghi hợp lệ, không chỉ là một danh sách dài các địa chỉ đã ghé thăm.
Lập Kế Hoạch Đường Dẫn Cho Bộ Thu Thập Go Của Bạn
Kết nối một dịch vụ proxy Không Rác phù hợp với kiến trúc thu thập của bạn trong khi giữ quy tắc phạm vi và đầu ra của Colly rõ ràng.
Đă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
Q: Colly có thực thi JavaScript không?
Việc thu thập HTTP bình thường của Colly không thực thi JavaScript của một trang. Các callback HTML của nó hoạt động trên phản hồi mà nó nhận được. Nếu các phần tử cần thiết được tạo ra thông qua việc thực thi trong trình duyệt, một cuộc thu thập chỉ HTTP không thể thu được chúng chỉ bằng cách thay đổi bộ chọn hoặc tăng cường độ đồng thời.
Q: Colly chỉ là một bộ phân tích?
Colly là một khung công tác lấy dữ liệu điều phối các yêu cầu và hồi gọi cũng như việc trích xuất HTML hoặc XML. Một bộ phân tích riêng lẻ hoạt động trên một tài liệu được cung cấp. Colly cũng có thể theo dõi các liên kết được phát hiện theo các quy tắc thu thập mà ứng dụng của bạn định nghĩa.
Hỏi: Tại sao một chương trình Colly bất đồng bộ kết thúc quá sớm?
Một chương trình Colly bất đồng bộ có thể kết thúc sớm nếu ứng dụng xung quanh thoát trước khi các yêu cầu và hồi gọi đã xếp hàng hoàn tất. Sử dụng cơ chế hoàn thành của bộ thu thập và giữ cho trình ghi đầu ra còn sống để nhận kết quả được chấp nhận. Xem xét hoàn thành thu thập và duy trì đầu ra như là những bước vòng đời liên quan nhưng tách biệt.
Hỏi: Việc loại bỏ bản sao URL có xóa các bản ghi trùng lặp không?
Việc loại bỏ bản sao URL không nhất thiết xóa các bản ghi trùng lặp vì các địa chỉ khác nhau có thể mô tả cùng một thực thể. Giữ một danh tính đầu ra riêng biệt dựa trên một định danh nguồn ổn định hoặc địa chỉ chuẩn được chấp nhận. Bảo tồn ngữ cảnh khám phá khi điều đó giúp giải thích nơi mà một bản ghi đến từ.