Я только что набрал это прямо здесь, поэтому может иметь опечатки.
Но должно быть довольно близко к тому, что вы ожидаете
Просто чтобы сделать это лучше, вы можете разделить миллионы CSV файл в куски, используя pandas:
create_files.py
import pandas as pd
counter = 0
for df in pd.read_csv("your_file_with_urls.csv", chunksize=100000):
df.to_csv(f"input_{counter}.csv", index=False)
counter += 1
Это создает несколько файлов в том же месте.
Теперь в том же месте, что и scrapy.cfg
файл создать файл main.py
со следующим:
main.py
from glob import glob
from scrapy import cmdline
for each_file in glob("input_*.csv"):
cmdline.execute("scrapy crawl your_spider".split() + ["-a", each_file])
Таким образом, мы отправляем имя каждого небольшого файла конструктору паука ( init .py функция)
В вашем your_spider
получите аргумент each_file
следующим образом:
your_spider.py
def YourSpiderName(scrapy.Spider):
def __init__(self, each_file='', **kwargs):
self.start_urls = set(pd.read_csv("path_to/each_file")["URL_COLUMN"].tolist())
super().__init__(**kwargs) # python3