Scrapy là một chương trình quét và thu thập dữ liệu web. Nó giúp thu thập thông tin cần thiết từ khắp nơi trên Internet, xử lý dữ liệu và sắp xếp nó thành bảng tính. Toàn bộ quá trình này sẽ trở nên hiệu quả và an toàn hơn nữa nếu bạn thiết lập máy chủ proxy cho Scrapy. Hãy cùng chúng tôi tìm hiểu về cách thiết lập proxy Scrapy trong hướng dẫn dưới đây!
Scrapy là một chương trình thu thập thông tin từ các trang web khác nhau, xử lý và sắp xếp thông tin thành bảng tính. Tiếp theo, dữ liệu này được sử dụng cho mục đích tiếp thị, nghiên cứu, báo chí và các mục đích khác.
Việc thu thập dữ liệu web không bị cấm, nhưng chủ sở hữu của nhiều trang web lại không hỗ trợ các hành động đó trên tài nguyên của họ. Với các biện pháp chống bot ngày càng phổ biến và phức tạp hơn, công cụ quét của bạn chắc chắn sẽ gặp phải thông báo lỗi truy cập bị từ chối. Hệ thống bảo mật sẽ theo dõi địa chỉ IP mà quá trình thu thập dữ liệu diễn ra và chặn người dùng này. Tuy nhiên, việc ẩn IP gốc của bạn thông qua proxy sẽ giúp bạn vượt qua những thách thức đó. Đây là lý do tại sao Scrapy cần thiết lập máy chủ proxy.
Hay nói cách khác Proxy Scrapy là một máy chủ chặn các yêu cầu giữa Scrapy và trang web đang được thu thập dữ liệu. Thư viện đưa ra yêu cầu tới máy chủ proxy, sau đó chuyển tiếp yêu cầu đến trang web. Proxy sẽ cho bạn cơ hội:
Ẩn địa chỉ IP của bạn và sử dụng nhiều địa chỉ cùng một lúc cho các tác vụ đa luồng. Điều này sẽ giúp tránh bị chặn trên nhiều trang web.
Nhận thông tin cụ thể và phù hợp hơn từ các tài nguyên web.
Tự động hóa quá trình thu thập và phân tích thông tin.
Các proxy đáng tin cậy nhất cho Scrapy là proxy SOCKS5 và HTTP(S). Chúng thích hợp để thu thập một lượng lớn thông tin và bảo vệ dữ liệu của bạn trong quá trình này.
Cách thiết lập proxy trong Scrapy
Điều kiện
Scrapy yêu cầu Python 3.6 trở lên, vì vậy hãy đảm bảo bạn đã cài đặt nó. Sau đó, cài đặt Scrapy bằng cách gõ pip install Scrapy trong terminal hoặc dấu nhắc lệnh của bạn.
Quá trình cài đặt Scrapy yêu cầu hỗ trợ Twisted-iocp, nhưng nó không được hỗ trợ trên phiên bản mới nhất của Python (3.12.1). Vì vậy, hãy cân nhắc duy trì trong khoảng 3,6 và 3,11 nếu bạn gặp các lỗi liên quan.
Sau khi cài đặt, đã đến lúc tạo một dự án Scrapy mới. Để làm điều đó, hãy điều hướng đến thư mục bạn muốn lưu trữ và chạy lệnh sau thay thế (ProjectName) bằng tên bạn muốn.
scrapy startproject (ProjectName)
Điều hướng đến thư mục dự án và tạo trình thu thập thông tin của bạn, một thành phần Scrapy để truy xuất dữ liệu từ trang web mục tiêu. Nó có hai đối số: name và target URL.
cd (ProjectName)
scrapy genspider (SpiderName) (TargetURL)
Giả sử bạn muốn xóa URL https://www.example.com. Sau đó, bạn cần tạo một spider có tên Scraper bằng lệnh sau.
scrapy genspider scraper https://www.example.com
Điều đó sẽ tạo ra một mã cơ bản và khi bạn mở trình thu thập thông tin của mình, nó sẽ trông như thế này:
Mã cơ bản của một trình thu thập thông tin đã được tạo
Chúng tôi sẽ cho bạn biết về hai cách để định cấu hình proxy trong chương trình.
Cách 1: Sử dụng phần mềm trung gian của bạn
Phương pháp này được coi là an toàn hơn và đáng tin cậy hơn. Bạn cần tạo phần mềm trung gian của mình với các bước sau:
Mở chương trình.
Nhập mã với dữ liệu proxy của bạn ở định dạng: [“proxy”] = ” type://IP-address:Port:Username:Password”.
Lưu ý: Trong trường hợp này bạn nên mua proxy Việt Nam với giao thức SOCKS5 có thể luân phiên IP, bởi bạn vẫn có thể bị chặn khi sử dụng cùng một proxy, đặc biệt nếu bạn thực hiện quá nhiều yêu cầu. Đó là vì các trang web sẽ gắn cờ các yêu cầu quá mức từ một địa chỉ IP duy nhất. Sử dụng proxy xoay IP liên quan đến việc phân phối yêu cầu tới các IP ngẫu nhiên từ một nhóm proxy có sẵn để giảm nguy cơ bị phát hiện.
Nhập mã với thông tin proxy của bạn
Kích hoạt phần mềm trung gian này trong cài đặt và đặt nó trước tham số “HttpProxyMiddleware“. Sau đó đóng trang.
Kích hoạt phần mềm trung gian
Cách 2: Sử dụng tham số truy vấn
Trong trường hợp này, bạn cần đặt máy chủ proxy làm tham số. Thực hiện theo các bước sau:
Mở chương trình Scrapy.
Trong mã, tìm phần mềm trung gian có tên “HttpProxyMiddleware“.
Bây giờ, bên cạnh tham số “meta“, hãy nhập dữ liệu proxy của bạn theo định dạng: “proxy”: “type://IP-address:Port:Username:Password“.
Cách kiểm tra xem proxy có hoạt động trong Scrapy không
Bạn có thể kiểm tra xem mình đã định cấu hình proxy chính xác hay chưa bằng cách sử dụng một trang web thử nghiệm đặc biệt:
Tìm bất kỳ trang web nào có thể xác định địa chỉ IP của bạn.
Thực hiện việc quét nó bằng Scrapy.
Nếu kết quả là bạn thấy địa chỉ máy chủ proxy của mình thì quá trình thiết lập đã thành công. Đối với bất kỳ dự án trích xuất dữ liệu nào, bạn sẽ cần phải sử dụng các cơ chế phát hiện và proxy Scrapy đóng vai trò chính. Bằng cách định tuyến các yêu cầu của bạn thông qua nó, bạn có thể ẩn địa chỉ IP của mình và tránh bị chặn.
Bây giờ, bạn đã biết cách thiết lập và sử dụng nó một cách hiệu quả với Scrapy trong Python với sự trợ giúp của proxy. Tuy nhiên, vì proxy miễn phí thường không đáng tin cậy nên bạn có thể xem xét giải pháp cao cấp như ZingProxy. Chúc các bạn thành công!
Bạn setup một hệ thống thu thập dữ liệu hoạt động mượt mà cả đêm, đinh ninh sáng dậy sẽ có hàng triệu record hoàn chỉnh nằm gọn trong database. Thế nhưng, sáng mở log ra thì thấy dày đặc lỗi ECONNRESET hoặc dính hàng loạt mã 429 Too Many Requests. Nhìn kỹ lại thì […]
2 giờ sáng, hệ thống giám sát ping báo lỗi hàng loạt, màn hình hiển thị 502 Bad Gateway. Traffic spike chạm đỉnh, băng thông nghẽn cứng, proxy server từ chối mọi request. Trong lúc dầu sôi lửa bỏng, anh em Sysadmin vẫn phải hì hục SSH vào từng node, gõ lệnh tail -f đọc […]
Bạn đã bao giờ nhìn thấy pipeline GitHub Actions xanh rờn, test local pass 100%, hí hửng deploy lên Production rồi ngay lập tức nhận ticket report lỗi khẩn cấp từ user ở Nhật Bản vì trang thanh toán hiển thị USD thay vì JPY chưa? Hoặc một user ở Đức phàn nàn rằng họ […]
Đang thu thập dữ liệu mượt mà, pipeline chạy trơn tru, đột nhiên console đỏ rực một dải log: HTTP 429 Too Many Requests. Dữ liệu gãy nhịp, worker kẹt cứng, và tệ nhất là địa chỉ IP server chính thức mất kết nối. Đây chắc hẳn là kịch bản ám ảnh mà bất kỳ […]
Nhìn vào màn hình console với chỉ số CPU chạm nóc 100%, RAM cạn kiệt và MySQL liên tục báo lỗi Too many connections là cơn ác mộng kinh điển của bất kỳ developer hay sysadmin nào. Khi một bài viết trên WordPress bất ngờ viral hoặc hệ thống chạy chiến dịch quảng cáo lớn, […]
Tám giờ tối, bạn vừa deploy xong một tính năng cực mượt có tích hợp AI. Nhưng khi lượng user bắt đầu tăng lên, log trên backend liên tục báo lỗi với những dòng chữ đỏ: ECONNRESET, ETIMEDOUT, hoặc các luồng Server-Sent Events (SSE) đang stream dở văn bản thì đột ngột bị ngắt kết […]