scrapy 多个起始网址如何把每个网址回调到不同的函数?

事情是这样的,例如我要去怕一个网站,这个网站有10个频道、60个栏目,然后我把这60个栏目都放到了起始网址里(start_urls)。
问题是,不同频道每个栏目的列表页获取规则和文章页获取规则都不一样(例如新闻频道下的栏目列表页获取规则就和热点频道下的栏目列表页获取规则不同),那如何让不同的起始网址调用不同的函数呢(news开头的网址都用news_prase函数,hot开头的网址都用hot_prase函数)?
贴下我的思路,但是不知道咋写了...

class FspiderSpider(Spider):
    name = 'FSpider'
    allowed_domains = ['eastmoney.com']
    start_urls = ['http://fund.123.com.cn',
                  'http://stock.123.com.cn',
                  'http://money.123.com.cn']

    def parse(self, response):
        if 'fund.123.com.cn' in response:
            yield Request(url = ) #这里想把符合条件的url回调给相应的函数的,然后发现if的时候并不能这么做...

请求HELP , 如果我有表述不清的,请指出,我修改

阅读 5.5k
1 个回答
class FspiderSpider(Spider):
    name = 'FSpider'
    allowed_domains = ['123.com.cn']

    def start_requests(self):
        channels = ['fund', 'stock', 'money']   # 频道列表
        for channel in channels:
            url = 'http://{}.123.com.cn'.format(channel)
            yield Request(url, callback=getattr(self, channel+'_parse', self.parse))
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏