首页 > 解决方案 > 是否可以用scrapy做(某种)多态性

问题描述

我目前在尝试调整我的scrapy程序时遇到了一些问题。我尝试做的事情是根据我所在的“站点”使不同的解析器工作。

目前我有这个开始请求

def start_requests(self):

    txtfile = open('productosABuscar.txt', 'r')

    keywords = txtfile.readlines()

    txtfile.close()

    for keyword in keywords:

        yield Request(self.search_url.format(keyword))

我想找到一种方法,根据我从 txt 文件中获得的关键字,调用不同的解析器来从页面中提取数据。

有没有办法做到这一点?

标签: python-3.xweb-scrapingscrapy

解决方案


如何根据你得到的关键字匹配回调start_requests呢?就像是:

def start_requests(self):
    keyword_callback = {
        'keyword1':  self.parse_keyword1,
        'keyword2': self.parse_keyword2,
    }


    txtfile = open('productosABuscar.txt', 'r')

    keywords = txtfile.readlines()

    txtfile.close()

    for keyword in keywords:
        yield Request(self.search_url.format(keyword), callback=keyword_callback[keyword])

推荐阅读