Hướng dẫn viết script Python kiểm tra lỗi 404 hàng loạt
Tối ưu hóa quy trình kiểm tra lỗi 404 bằng Python cho chuyên gia SEO
Kiểm tra lỗi 404 hàng loạt là nhiệm vụ quan trọng trong audit kỹ thuật SEO. Khi website của bạn có hàng trăm hoặc hàng nghìn đường dẫn, việc kiểm tra thủ công từng liên kết sẽ tốn rất nhiều thời gian. Script Python với thư viện requests cung cấp giải pháp tự động hóa, giúp bạn kiểm tra trạng thái HTTP của nhiều URL cùng một lúc, phát hiện những trang trả về mã lỗi 404, redirect 301, hoặc các vấn đề server khác một cách nhanh chóng và chính xác. Bạn sẽ học cách viết script từ cơ bản đến nâng cao, từ chuẩn bị môi trường cho đến tối ưu hóa hiệu năng với xử lý đa luồng.
Hướng dẫn chi tiết kiểm tra lỗi 404 bằng Python
Bước 1: Chuẩn bị môi trường Python
Trước khi viết bất kỳ dòng code nào, bạn cần cài đặt Python và thư viện requests. Đây là nền tảng cho mọi script kiểm tra lỗi 404 bằng Python mà bạn sẽ xây dựng sau này.
Cài đặt Python
Truy cập trang chính thức Python.org để tải phiên bản mới nhất phù hợp với hệ điều hành của bạn (Windows, macOS hoặc Linux). Trong quá trình cài đặt trên Windows, hãy chắc chắn tích chọn ô “Add Python to PATH” để có thể gọi Python từ Terminal hoặc Command Prompt mà không cần chỉ định đường dẫn đầy đủ.
Sau khi cài xong, mở Terminal hoặc Command Prompt và gõ lệnh python version hoặc py version để kiểm tra xem Python đã được cài đặt đúng và nhận diện bởi hệ thống chưa.
Cài đặt thư viện requests
Mở Terminal hoặc Command Prompt và gõ lệnh:
Thư viện requests là công cụ chính giúp bạn gửi yêu cầu HTTP và lấy mã trạng thái từ máy chủ. Nó cung cấp cách đơn giản nhất để truy cập property status_code, là chìa khóa để phát hiện lỗi 404 hay các mã HTTP khác.
Bước 2: Chọn trình soạn thảo code
Để viết script Python kiểm tra lỗi 404 hàng loạt, bạn cần một trình soạn thảo code tốt. Có nhiều lựa chọn, nhưng tôi khuyên dùng VS Code vì nó nhẹ, hỗ trợ tô màu cú pháp Python, và có các tính năng hữu ích cho lập trình.
Bước 3: Nhập thư viện cần thiết
Mỗi script Python cần bắt đầu bằng việc nhập các thư viện mà script sẽ sử dụng. Tùy vào mục tiêu cụ thể của bạn, bạn sẽ import các thư viện khác nhau.
Giải thích từng dòng: requests dùng để gửi HTTP request và lấy status_code, csv để lưu kết quả vào file CSV, time để thêm độ trễ giữa các request nhằm tránh quá tải server, concurrent.futures để chạy kiểm tra đa luồng và tiết kiệm thời gian với danh sách URL lớn.
Bước 4: Xác định danh sách URL cần kiểm tra
Cách bạn lấy danh sách URL để kiểm tra lỗi 404 tùy vào hoàn cảnh và quy mô của dự án SEO. Tôi sẽ hướng dẫn ba trường hợp phổ biến nhất mà bạn có thể gặp phải.
Trường hợp A: Danh sách URL cố định (nhỏ)
Phù hợp khi bạn chỉ có vài chục URL cần kiểm tra, thường là những URL bạn sưu tập thủ công từ Screaming Frog, Google Search Console, hoặc từ một báo cáo của khách hàng.
Trường hợp B: Đọc danh sách từ file văn bản (hàng trăm hoặc hàng nghìn URL)
Khi bạn có danh sách URL lớn, thường xuất từ sitemap, crawl tool hoặc log file server, nên lưu vào file .txt rồi đọc vào script. Tạo file urls.txt với mỗi URL trên một dòng riêng.
Trường hợp C: Lấy URL từ sitemap XML
Nếu bạn muốn kiểm tra tất cả URL trong sitemap mà không cần export thủ công, hãy dùng cách này. Script sẽ tải sitemap từ URL và tự động trích xuất tất cả các liên kết.
Bước 5: Viết hàm kiểm tra một URL
Hàm kiểm tra một URL là trái tim của script. Nó sẽ gửi yêu cầu HTTP GET tới một URL, lấy mã trạng thái, và trả về thông tin chi tiết để bạn phân tích.
Hàm này nhận vào một URL và giá trị timeout (thời gian chờ tối đa, mặc định 10 giây). Nó sử dụng requests.get() để gửi yêu cầu, có allow_redirects=True để tự động theo các redirect (301, 302) và lấy mã cuối cùng. Nếu request thành công, nó trả về dictionary chứa URL gốc, mã trạng thái HTTP, điều kiện is_404, và URL cuối cùng sau khi redirect. Nếu có lỗi (timeout, DNS không tìm thấy, lỗi SSL), exception handler sẽ bắt lỗi và trả về thông tin lỗi.
Bước 6: Viết hàm chạy kiểm tra hàng loạt
Tuỳ vào quy mô danh sách URL, bạn sẽ chọn cách chạy tuần tự hay song song (đa luồng). Danh sách nhỏ (dưới vài trăm) chạy tuần tự vẫn ổn, nhưng danh sách lớn sẽ chậm rất nhiều nếu không dùng đa luồng.
Phương pháp 1: Chạy tuần tự (đơn giản, dành cho danh sách nhỏ)
Phương pháp 2: Chạy đa luồng (nhanh hơn, dành cho danh sách lớn)
Phương pháp đa luồng sử dụng ThreadPoolExecutor để tạo 10 luồng chạy song song. Mỗi luồng sẽ xử lý một URL, chờ máy chủ phản hồi trong khi các luồng khác tiếp tục kiểm tra URL khác. Điều này giảm thời gian thực thi đáng kể so với chạy tuần tự.
Bước 7: Lưu kết quả vào file CSV
Để dễ dàng chia sẻ kết quả với đội ngũ hoặc phân tích trong Excel, bạn nên lưu kết quả vào file CSV thay vì chỉ in ra màn hình.
Đoạn code này tạo file CSV với các cột: url, status_code, is_404, final_url, error. Sau khi ghi xong, nó in ra tóm tắt: tổng số URL kiểm tra, số lỗi 404, và số lỗi kết nối. Bạn có thể mở file CSV trong Excel để lọc, sắp xếp, và phân tích kết quả một cách dễ dàng.
Bước 8: Chạy script
Sau khi viết xong, lưu file check_404.py, mở Terminal hoặc Command Prompt, chuyển đến thư mục chứa file, rồi chạy lệnh sau:
Hoặc nếu máy có nhiều phiên bản Python:
Script sẽ bắt đầu gửi yêu cầu tới các URL, in kết quả ra màn hình, và ghi vào file CSV. Tùy vào số lượng URL và tốc độ mạng, quá trình này có thể mất vài giây đến vài phút.
Bước 9: Tùy chỉnh script theo mục tiêu SEO
Kỹ năng viết script kiểm tra lỗi 404 bằng Python không chỉ dừng lại ở việc phát hiện 404. Bạn có thể mở rộng script để xử lý các trường hợp phức tạp hơn.
Chỉ lưu URL bị 404
Nếu bạn chỉ quan tâm đến những URL trả về 404 để đưa cho dev fix, hãy lọc kết quả khi ghi file:
Phát hiện redirect chain và lỗi 5xx
Ngoài 404, bạn cũng nên chú ý các mã trạng thái khác như 301, 302 (redirect) và 5xx (lỗi server).
Giới hạn tốc độ request
Để tránh quá tải server hoặc bị chặn bởi firewall, hãy thêm độ trễ giữa các request:
Những trường hợp sử dụng phổ biến cho chuyên gia SEO
Những lưu ý quan trọng khi viết script
- Luôn đặt timeout hợp lý (5–15 giây) để tránh script treo khi server phản hồi chậm
- Dùng encoding=”utf-8″ khi đọc/ghi file để hỗ trợ tiếng Việt và các ký tự đặc biệt
- Cẩn thận với max_workers khi dùng đa luồng, không nên quá lớn để tránh bị rate limit hoặc chặn IP
- Kiểm tra kỹ URL trong danh sách, đảm bảo mỗi URL có tiền tố http:// hoặc https://
- Nếu kiểm tra site của chính bạn, xem xét thêm độ trễ giữa request để tránh ảnh hưởng tới hoạt động bình thường
- Lưu kết quả vào file CSV để có thể phân tích, chia sẻ, và theo dõi lịch sử kiểm tra
Một số lỗi phổ biến và cách khắc phục
Mở rộng script với các tính năng nâng cao
Khi bạn đã làm quen với những kiến thức cơ bản, bạn có thể mở rộng script với các tính năng nâng cao nhằm tăng khả năng ứng dụng trong các dự án SEO phức tạp.
Đo thời gian phản hồi của từng URL
Tốc độ tải trang là yếu tố SEO quan trọng. Bạn có thể mở rộng script để ghi nhận thời gian phản hồi:
Lưu log chi tiết vào file text
Ngoài file CSV, bạn có thể tạo file log để ghi lại thông tin chi tiết về từng request, hữu ích cho debugging:
Mẹo tối ưu hiệu năng cho danh sách URL siêu lớn
| Tối ưu hóa | Mô tả |
|---|---|
| Tăng max_workers theo từng mức | Bắt đầu với 5, tăng lên 10, 15, 20 và đo thời gian. Tìm điểm cân bằng giữa tốc độ và tải server |
| Sử dụng session cho nhiều request | requests.Session() sẽ tái sử dụng kết nối TCP, nhanh hơn tạo kết nối mới mỗi lần |
| Xử lý retry cho request thất bại | Một số URL có thể timeout ngẫu nhiên. Thêm logic retry để kiểm tra lại trước khi kết luận |
| Chia nhỏ danh sách URL | Thay vì kiểm tra 10,000 URL cùng lúc, chia thành batch 1,000 URL và chạy lần lượt, dễ quản lý |
Tóm tắt nhanh quy trình viết script
- Cài Python và thư viện requests
- Chọn trình soạn thảo code (VS Code khuyên dùng)
- Tạo file .py và import các thư viện cần thiết
- Chọn cách lấy danh sách URL (list cố định, file, hoặc sitemap)
- Viết hàm check_url() để kiểm tra một URL
- Viết hàm main() để chạy kiểm tra hàng loạt (tuần tự hoặc đa luồng)
- Lưu kết quả vào file CSV để phân tích
- Lưu file, chạy script từ Terminal
- Tùy chỉnh script theo mục tiêu SEO cụ thể (chỉ 404, redirect, 5xx…)
- Mở rộng thêm tính năng nâng cao như đo thời gian phản hồi, log file, retry
Kết luận
Viết script Python kiểm tra lỗi 404 hàng loạt là một bước quan trọng giúp bạn nâng cao kỹ năng SEO kỹ thuật. Từ chuẩn bị môi trường Python, lựa chọn cách lấy danh sách URL, cho đến tối ưu hóa hiệu năng với xử lý đa luồng, bạn đã có đủ kiến thức để áp dụng vào các dự án thực tế. Hãy bắt đầu với một danh sách URL nhỏ, thử nghiệm và mở rộng dần khi có thêm kinh nghiệm. Script này sẽ giúp bạn tiết kiệm hàng chục giờ công thủ công mỗi tháng, đồng thời giảm thiểu sai sót trong quá trình kiểm tra 404. Nhớ rằng, lỗi 404 không chỉ ảnh hưởng tới trải nghiệm người dùng mà còn tác động tiêu cực đến thứ hạng tìm kiếm của bạn. Sử dụng công cụ tự động hóa một cách khôn ngoan, bạn sẽ có thể nắm bắt tốt hơn tình trạng sức khỏe kỹ thuật của website.