Tôi đang sử dụng Scrapy, đặc biệt là lớp CrawlSpider
của Scrapy để xóa các liên kết web chứa các từ khóa nhất định. Tôi có một danh sách dài start_urls
khá dài có các mục nhập từ cơ sở dữ liệu SQLite được kết nối với dự án Django. Tôi muốn lưu các liên kết web được cạo trong cơ sở dữ liệu này.Làm thế nào để truy cập một start_url cụ thể trong một CrawlSpider Scrapy?
Tôi có hai mô hình Django, một cho các url bắt đầu như http://example.com
và một cho các liên kết web cạo như http://example.com/website1
, http://example.com/website2
vv Tất cả các liên kết web cạo là subsites của một trong những url đầu trong danh sách start_urls
.
Mô hình liên kết web có mối quan hệ nhiều với một mô hình url bắt đầu, tức là mô hình liên kết web có một Ngoại ngữ cho mô hình url bắt đầu. Để lưu các liên kết web đã được nạo của tôi một cách chính xác vào cơ sở dữ liệu, tôi cần phải thông báo phương thức 's parse_item()
bắt đầu url liên kết web cóp nhặt thuộc về. Làm thế nào tôi có thể làm điều đó? Lớp DjangoItem
của Scrapy không giúp ích về mặt này vì tôi vẫn phải xác định url bắt đầu được sử dụng một cách rõ ràng.
Nói cách khác, làm cách nào tôi có thể chuyển url bắt đầu hiện được sử dụng sang phương thức parse_item()
, để tôi có thể lưu nó cùng với các liên kết web cóp nhặt phù hợp vào cơ sở dữ liệu? Ý tưởng nào? Cảm ơn trước!
Bạn có thể có trường start_url trong cùng một bảng với bảng liên kết web (như trong DjangoItem bạn đang sử dụng) không?Chắc chắn, nó sẽ tạo ra sự không chuẩn hóa dư thừa nhưng nếu bạn muốn tránh gọi một cách rõ ràng, điều này có thể hữu ích. – zubinmehta