Tôi có một tập lệnh có tên là algorithm.py và tôi muốn có thể gọi các trình thu thập dữ liệu trong suốt tập lệnh. Các scructure tập tin là:Cách gọi các trình thu thập dữ liệu cụ thể từ một tập lệnh Python khác
algorithm.py MySpiders/
nơi MySpiders là một thư mục có chứa một số dự án scrapy. Tôi muốn tạo các phương thức perform_spider1(), perform_spider2() ... mà tôi có thể gọi trong algorithm.py.
Tôi làm cách nào để tạo phương pháp này?
Tôi đã quản lý để gọi một con nhện bằng cách sử dụng mã sau đây, tuy nhiên, nó không phải là một phương pháp và nó chỉ hoạt động cho một con nhện. Tôi là người mới bắt đầu cần giúp đỡ!
import sys,os.path
sys.path.append('path to spider1/spider1')
from twisted.internet import reactor
from scrapy.crawler import Crawler
from scrapy.settings import Settings
from scrapy import log, signals
from scrapy.xlib.pydispatch import dispatcher
from spider1.spiders.spider1_spider import Spider1Spider
def stop_reactor():
reactor.stop()
dispatcher.connect(stop_reactor, signal=signals.spider_closed)
spider = RaListSpider()
crawler = Crawler(Settings())
crawler.configure()
crawler.crawl(spider)
crawler.start()
log.start()
log.msg('Running reactor...')
reactor.run() # the script will block here
log.msg('Reactor stopped.')
Cảm ơn, alecxe! Làm thế nào tôi có thể dừng lò phản ứng sau con nhện cuối cùng? Hiện nay tôi đang sử dụng def stop_reactor(): reactor.stop() dispatcher.connect (stop_reactor, signal = signals.spider_closed) Tuy nhiên, điều này dừng lại sau khi nhện đầu tiên ... –
Bạn được hoan nghênh. Câu hỏi hay! Làm thế nào về việc theo dõi các nhện được đóng lại trong 'stop_reactor' theo cách thủ công và dừng lò phản ứng nếu tất cả đã bị đóng? Btw, tôi đã chỉnh sửa câu trả lời và bao gồm liên kết đến một chủ đề có liên quan. – alecxe
Cảm ơn, bạn đời. Tôi không có đủ danh tiếng để bỏ phiếu cho bạn nhưng tôi đạo đức ủng hộ bạn thay vì :) –