Tôi muốn có thể chạy Scrapy web crawling framework từ bên trong Django. Bản thân chính nó chỉ cung cấp công cụ dòng lệnh scrapy
để thực thi các lệnh của nó, tức là công cụ này không được cố tình viết để được gọi từ chương trình bên ngoài.Lệnh quản lý tùy chỉnh Django chạy Phế liệu: Cách đưa các tùy chọn của Scrapy?
Người dùng Mikhail Korobov đã đưa ra một nice solution, cụ thể là gọi Scrapy từ lệnh quản lý tùy chỉnh Django. Để thuận tiện, tôi lặp lại giải pháp của mình tại đây:
# -*- coding: utf-8 -*-
# myapp/management/commands/scrapy.py
from __future__ import absolute_import
from django.core.management.base import BaseCommand
class Command(BaseCommand):
def run_from_argv(self, argv):
self._argv = argv
return super(Command, self).run_from_argv(argv)
def handle(self, *args, **options):
from scrapy.cmdline import execute
execute(self._argv[1:])
Thay vì gọi điện, ví dụ: scrapy crawl domain.com
Tôi hiện có thể làm python manage.py scrapy crawl domain.com
từ bên trong dự án Django. Tuy nhiên, các tùy chọn của lệnh Scrapy không được phân tích cú pháp. Nếu tôi làm python manage.py scrapy crawl domain.com -o scraped_data.json -t json
, tôi chỉ nhận được câu trả lời sau đây:
Usage: manage.py scrapy [options]
manage.py: error: no such option: -o
Vì vậy, câu hỏi của tôi là, làm thế nào để mở rộng lệnh quản lý tùy chỉnh để áp dụng tùy chọn dòng lệnh Scrapy không?
Thật không may, Django's documentation of this part không phải là rất rộng lớn. Tôi cũng đã đọc tài liệu về số optparse module của Python nhưng sau đó nó không rõ ràng hơn với tôi. Bất cứ ai có thể giúp tôi trong sự tôn trọng này? Cảm ơn rất nhiều trước!
nhưng chúng ta không nên ở trong thư mục trên cùng để thu thập dữ liệu ?? Làm thế nào là thực hiện? @pemistahl – Nabin