# Assumes that items have a domain field and that all target domains are
# defined in an ALL_DOMAINS variable.
class DomainFilter:
def __init__(self, feed_options):
self.domain = feed_options["domain"]
def accepts(self, item):
return item["domain"] == self.domain
ALL_DOMAINS = ["toscrape.com", ...]
FEEDS = {
f"s3://mybucket/{domain}.jsonl": {
"format": "jsonlines",
"item_filter": DomainFilter,
}
for domain in ALL_DOMAINS
}
1条答案
按热度按时间jecbmhm31#
在FEED_URI设置中,您可以添加占位符,占位符将被抓取的数据替换。
例如,域名可以包含在文件名中,方法是使用domain属性,如下所示
这个解决方案只有在每个域运行一次spider时才有效,但由于您没有明确说明,我假设一次运行会爬取多个域。如果您事先知道所有域,则可以通过编程方式生成FEEDS设置的值并使用项目过滤。