这个问题以前已经被回答过了,但是答案已经有多年历史了。
在我的“项目”中,我有4个蜘蛛,其中每个蜘蛛处理我遇到的不同种类的产品(刮擦亚马逊ATM)。每个产品都有一个类别,例如,如果我要刮擦“笔记本电脑”,则使用一个刮刀,但是如果目标是刮擦衣服,则使用另一个刮刀。
那么,是否有一种方法可以运行python脚本,根据我必须抓取的产品(产品是从txt文件读取的),调用另一个蜘蛛?
代码看起来像这样
#Imports
def scrapyProject():
#Get the products I want to scrape
if productIsClothes:
runClothesSpider
else productIsGeneric:
runGenericSpider
我知道以前的代码很粗糙,这是最终代码的草图。
这也将有助于了解我需要哪些进口商品才能使该程序正常工作
答案 0 :(得分:2)
您可以使用if语句设置蜘蛛类:
import sys
import scrapy
from scrapy.crawler import CrawlerProcess
from project.spiders import Spider1, Spider2
def main():
process = CrawlerProcess({})
if sys.argv[1] == '1':
spider_cls = Spider1
elif sys.argv[1] == '2':
spider_cls = Spider2
else:
print('1st argument must be either 1 or 2')
return
process.crawl(spider_cls)
process.start() # the script will block here until the crawling is finished
if __name__ == '__main__':
main()