I ended up using command-line arguments for the author's scraper:
class AuthorSpider(BaseSpider):
...
def __init__(self, articles):
self.start_urls = []
for line in articles:
article = json.loads(line)
self.start_urls.append(data['author_url'])
, Scrapy:
from scrapy import signals
from scrapy.exceptions import DropItem
class DuplicatesPipeline(object):
def __init__(self):
self.ids_seen = set()
def process_item(self, item, spider):
if item['id'] in self.ids_seen:
raise DropItem("Duplicate item found: %s" % item)
else:
self.ids_seen.add(item['id'])
return item
, JSON :
$ scrapy crawl authors -o authors.json -a articles=articles.json
, .