Utknąłem podczas inicjowania wielu wystąpień tego samego pająka. Chcę uruchomić go jak 1 URL dla 1 instancji pająka. Muszę przetworzyć 50k adresów URL i do tego muszę zainicjować oddzielne wystąpienia dla każdego. W moim głównym skrypcie pająków ustawiłem timeut na closedpider na 7 minut, aby mieć pewność, że nie będę się czołgał przez dłuższy czas. Proszę patrz poniższy kod:Scrapy - jak zainicjować wiele wystąpień tego samego procesu pająka?
from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings
import urlparse
for start_url in all_urls:
domain = urlparse.urlparse(start_url).netloc
if domain.startswith('ww'):
domain = domain.split(".",1)[1]
process = CrawlerProcess(get_project_settings())
process.crawl('textextractor', start_url=start_url,allowed_domains=domain)
process.start()
To działa całkowicie na 1 url, bur po tym, gdy 2nd url przepuszcza ona daje poniżej błędu:
raise error.ReactorNotRestartable()
ReactorNotRestartable
Proszę zasugerować co należy zrobić, aby uczynić go uruchom dla wielu wystąpień tego samego pająka. Ponadto, myślę, aby zainicjować wiele przypadków scrapy na raz za pomocą wątków. Czy byłoby to dobre podejście?
każdej aktualizacji w tej sprawie? – UriCS