Ich habe eine Spinne, die Links für die Websites durchläuft. Ich möchte dieselbe Spinne erneut starten, wenn die Ausführung mit anderen Datensätzen beendet ist. Wie kann derselbe Crawler erneut gestartet werden? Die Websites werden durch die Datenbank geleitet. Ich möchte, dass der Crawler in einer unbegrenzten Schleife läuft, bis alle Websites gecrawlt sind. Derzeit muss ich den Crawler scrapy crawl first
die ganze Zeit starten. Gibt es eine Möglichkeit, den Crawler einmal zu starten, und er stoppt, wenn alle Websites gecrawlt werden?Aufruf der gleichen Spinne programmgesteuert
ich für das gleiche gesucht, und eine Lösung gefunden, um den Crawler einmal seine geschlossenen/Fertig Handhabung. Aber ich weiß nicht, wie man die Spinne von der closed_handler
Methode programmatisch nennt.
Nachstehend ist mein Code:
class MySpider(CrawlSpider):
def __init__(self, *args, **kwargs):
super(MySpider, self).__init__(*args, **kwargs)
SignalManager(dispatcher.Any).connect(
self.closed_handler, signal=signals.spider_closed)
def closed_handler(self, spider):
reactor.stop()
settings = Settings()
crawler = Crawler(settings)
crawler.signals.connect(spider.spider_closing, signal=signals.spider_closed)
crawler.configure()
crawler.crawl(MySpider())
crawler.start()
reactor.run()
# code for getting the websites from the database
name = "first"
def parse_url(self, response):
...
Ich erhalte die Fehlermeldung:
Error caught on signal handler: <bound method ?.closed_handler of <MySpider 'first' at 0x40f8c70>>
Traceback (most recent call last):
File "c:\python27\lib\site-packages\twisted\internet\defer.py", line 150, in maybeDeferred
result = f(*args, **kw)
File "c:\python27\lib\site-packages\scrapy\xlib\pydispatch\robustapply.py", line 57, in robustApply
return receiver(*arguments, **named)
File "G:\Scrapy\web_link_crawler\web_link_crawler\spiders\first.py", line 72, in closed_handler
crawler = Crawler(settings)
File "c:\python27\lib\site-packages\scrapy\crawler.py", line 32, in __init__
self.spidercls.update_settings(self.settings)
AttributeError: 'Settings' object has no attribute 'update_settings'
Ist dies der richtige Weg, dies zu tun bekommen? Oder gibt es einen anderen Weg? Bitte helfen Sie!
Danke
[Scrapy docs haben einen Abschnitt über mehrere Spinnen in einem Skript ausgeführt] (http://doc.scrapy.org/en/latest/topics/practices.html#running-multiple-spiders-in-the-same- Prozess), und am Ende gibt es ein Beispiel dafür, wie Spinnen sequenziell ausgeführt werden, _ _ –