从另一个python脚本运行scrapy程序

时间:2019-01-21 20:20:13

标签: python-3.x web-scraping scrapy

这个问题以前已经被回答过了,但是答案已经有多年历史了。

在我的“项目”中,我有4个蜘蛛,其中每个蜘蛛处理我遇到的不同种类的产品(刮擦亚马逊ATM)。每个产品都有一个类别,例如,如果我要刮擦“笔记本电脑”,则使用一个刮刀,但是如果目标是刮擦衣服,则使用另一个刮刀。

那么,是否有一种方法可以运行python脚本,根据我必须抓取的产品(产品是从txt文件读取的),调用另一个蜘蛛?

代码看起来像这样

#Imports

def scrapyProject():

    #Get the products I want to scrape
    if productIsClothes:

        runClothesSpider

    else productIsGeneric:

        runGenericSpider

我知道以前的代码很粗糙,这是最终代码的草图。

这也将有助于了解我需要哪些进口商品才能使该程序正常工作

1 个答案:

答案 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()