在弄一个爬虫框架,类似于 alfred workflow,拖拖拽拽加少量的 script就可以写出一个爬虫~
发布于 10 年前 作者 ltebean 4662 次浏览 最后一次编辑是 7 年前

前两天突发奇想搞了一个爬虫框架,主要思想借鉴了alfred workflow和ios开发里的storyboard。

每一个爬虫只需要一个配置文件,demo在config.yaml里:从点评的搜索结果页开始爬起,抓取每一家商户的信息

components:
initializer:   
  type: initializer
  segues:
    - to: shopList
      func: 
        |
        offer("http://www.dianping.com/search/category/1/0");
shopList:   
  type: pageProcessor
  segues:
    - to: shopList
      func: 
        |
        var nextPage=$(".NextPage");
        if(!nextPage){
           return;
        }         
        offer("http://www.dianping.com"+nextPage.attr("href"));
    - to: shop
      func: 
        |
        $(".BL").each(function() {
           offer("http://www.dianping.com"+($(this).attr("href")));
        })
shop:   
  type: pageProcessor
  segues:
    - to: mongodb
      func: 
        |
        offer({
           shopName:$(".shop-title").text()
        });
mongodb:   
  type: mongodbAdaptor
  host: 127.0.0.1
  port: 27017
  collection: shop

解释一下这个配置文件: component是一个个功能单元,有处理页面的,有把数据持久化到db的 segue是连接各个component的(to:发送到哪个component,func:把什么数据发过去,通过offer函数) 比如shopList的两个segue,第一个segue是把下一页的链接也发给自己处理,第二个是把商户页的链接交给shop这个component处理~

附上项目地址 https://github.com/yucong/spiderman

目前主要的核心逻辑已经都实现了,就差把配置文件弄成像storyboard那样的可视化编辑了~

回到顶部