2011-12-17 29 views
6

Tôi có một câu hỏi gồm hai phần.Là một công dân và trang web cạo tốt

Trước tiên, tôi đang viết một trang web-scraper dựa trên các spider CrawlSpider trong Scrapy. Tôi đang nhắm tới việc xóa một trang web có hàng ngàn (có thể vào hàng trăm nghìn) hồ sơ. Những hồ sơ này được chôn 2-3 lớp xuống từ trang bắt đầu. Vì vậy, về cơ bản tôi có nhện bắt đầu trên một trang nhất định, thu thập thông tin cho đến khi tìm thấy một loại bản ghi cụ thể và sau đó phân tích cú pháp html. Những gì tôi đang tự hỏi là những gì phương pháp tồn tại để ngăn chặn nhện của tôi từ quá tải các trang web? Có cách nào để làm điều đó tăng dần hay tạm dừng giữa các yêu cầu khác nhau không?

Thứ hai và có liên quan, có phương pháp nào với Scrapy để kiểm tra trình thu thập thông tin mà không đặt căng thẳng quá mức trên trang web không? Tôi biết bạn có thể giết chương trình trong khi nó chạy, nhưng có cách nào để làm cho kịch bản dừng lại sau khi nhấn một cái gì đó giống như trang đầu tiên có thông tin tôi muốn cạo?

Mọi lời khuyên hoặc tài nguyên sẽ được đánh giá cao.

Trả lời

6

Có thể là một cách để làm điều của từng bước

Tôi đang sử dụng khả năng bộ nhớ đệm Scrapy để cạo trang web incrementaly

HTTPCACHE_ENABLED = True

Hoặc bạn có thể sử dụng tính năng mới 0.14 Jobs: pausing and resuming crawls

hoặc tạm dừng giữa các yêu cầu khác nhau?

việc kiểm tra này cài đặt:

DOWNLOAD_DELAY  
RANDOMIZE_DOWNLOAD_DELAY 

là có một phương pháp với Scrapy để thử nghiệm một trình thu thập mà không đặt căng thẳng quá mức trên một trang web?

Bạn có thể thử và gỡ lỗi mã của bạn trong Scrapy shell

Tôi biết bạn có thể diệt các chương trình trong khi nó chạy, nhưng có một cách để làm điểm dừng chân kịch bản sau khi chạm một cái gì đó giống như trang đầu tiên mà có thông tin tôi muốn cạo không?

Ngoài ra, bạn có thể gọi scrapy.shell.inspect_response bất kỳ lúc nào trong nhện của mình.

Mọi lời khuyên hoặc tài nguyên sẽ được đánh giá cao.

Tài liệu bị lỗi là tài nguyên tốt nhất.

+0

Tuyệt vời. Cảm ơn nhiều. – user1074057

-2

Bạn phải bắt đầu thu thập dữ liệu và ghi lại mọi thứ. Trong trường hợp bạn bị cấm, bạn có thể thêm sleep() trước khi yêu cầu trang.

Thay đổi User-Agent là một thói quen tốt, quá (http://www.user-agents.org/ http://www.useragentstring.com/)

Nếu bạn bị cấm bởi ip, sử dụng proxy để vượt qua nó. Chúc mừng.

+1

Đó là một câu trả lời thú vị cho câu hỏi về "là một công dân tốt và cào web" :) – damd

Các vấn đề liên quan