V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Northxw
V2EX  ›  程序员

CrawlSpider 怎么针对多个爬取站点设置 rules 或者 Rule ???

  •  
  •   Northxw · 2019-04-22 14:31:18 +08:00 · 1972 次点击
    这是一个创建于 2033 天前的主题,其中的信息可能已经有所发展或是发生改变。

      如题,先放一段代码:

        start_urls = ['https://bj.58.com/ershouche/',
                      'https://www.guazi.com/bj/buy/']
    
        rules = (
            # Rule(LinkExtractor(restrict_css='div.main_list.clearfix > div.info_list > ul > li > div.col.col2 > a'), callback='parse_item'),
            # Rule(LinkExtractor(restrict_css="a[class='next']"))
            Rule(LinkExtractor(restrict_xpaths='div.list-wrap.js-post > ul > li > a'),
                 # process_request='parse_guazi_request',
                 callback='parse_guazi'),
        )
    
    
    

    我的需求:根据 start_urls 先抓取 58 同城二手车信息,然后执行相应的 rules 或 Rule ;然后,抓取瓜子二手车信息,再执行相应的 rules 或者 Rule。

    目前的困难:不知都该怎么针对不同的抓取链接写 rules 或 Rule, 尝试过写在一个里面,行不通。所以前来拜求解决方案。先谢谢大家。

    5 条回复    2019-04-22 19:58:43 +08:00
    dsg001
        1
    dsg001  
       2019-04-22 18:26:46 +08:00
    分成两个爬虫呗,58 的爬虫直接入库,瓜子的爬虫从数据库中获取信息
    Northxw
        2
    Northxw  
    OP
       2019-04-22 18:55:26 +08:00
    @dsg001 但是我想要在一个 spider 里面完成,毕竟是 crawlspider, 如果不能达到通用化,做着就没意思嘞
    snappyone
        3
    snappyone  
       2019-04-22 19:16:19 +08:00
    写一个带通用方法的爬虫,然后根据配置生成不同实例
    dsg001
        4
    dsg001  
       2019-04-22 19:49:08 +08:00
    @Northxw CrawlSpider 改的太多,还不如用 Spider 控制流程
    Northxw
        5
    Northxw  
    OP
       2019-04-22 19:58:43 +08:00
    @snappyone 我的思路就是通用爬虫。哈哈。

    @dsg001 不不不,我只做到半通用化,好理解化就可以啦。全部配置我也不喜欢。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1034 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 22:12 · PVG 06:12 · LAX 14:12 · JFK 17:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.