current.vc 项目的分析

仅仅 current.vc 这个网站的项目,这里写好文档对网站的抓取分析。

1.chinavc

原本以为 newsChannlid 已经被我找完了,实际上还有很多。但是,我仔细看了一下网站的首页,分析了 AJAX,得到未必需要全部的 newsChannlid。

找到标题的对应关系了,上面有 8 个对应的栏目,下面有按照顺序的 8 个对应的 AJAX 请求。

      //网站的栏目数组
      $column = array(
        '11'=>'VC/PE',
        '3'=>'瞰三板',
        '20'=>'产业资本',
        '14'=>'锐公司',
        '5'=>'金融',
        '4'=>'潮讯Hot',
        '23'=>'人物',
        '2'=>'原创'
      );

分析网站的 URL 链接:

https://www.chinaventure.com.cn/cmsmodel/news/detail/312533.shtml

https://www.chinaventure.com.cn/cmsmodel/report/detail/1277.shtml

目前从 URL 上面看,能抓取的数据是 news 和 report,report 目前没有抓取的必要,所以只抓取 news 的数据了。

2. 36kr

36kr 网站上的 URL 分析与上面的 chinavc 栏目分析是基本相同的。

    //网站的栏目数组
    $column = array(
      '23'=>'明星公司',
      '104'=>'行业新闻',
      '67'=>'早期项目',
      '70'=>'深度报道',
      '103'=>'技能GET',
      '71'=>'行业研究'
    ); 

3. 如何测试

通过 URL 进行测试,可以用来测试的 URL 链接如下:

http://daily.me.com/?/scrape/index/chinavc/

http://daily.me.com/?/scrape/index/pencil/

http://daily.me.com/?/scrape/index/GPLP/

http://daily.me.com/?/scrape/index/36kr/

http://daily.me.com/?/scrape/index/pedaily/pe/

http://daily.me.com/?/scrape/index/pedaily/news/

http://daily.me.com/?/scrape/index/pedaily/people/

如果上面的每个 URL 都能返回正确的消息,基本就完全测试完全了。

4. 整合出栏目

目前,先用这里的作为测试。

5. 目前的困难

目前我的困难在于思路的不清晰,思路一但乱了,程序也就写不下去了。现在的思路还是分模块的进行测试。先从比较简单点的 36kr 网站开始。

测试的 URL: http://daily.me.com/?/scrape/index/36kr/

6. 通过 URL 传递参数

在我们的系统中,甚至微信公众平台的开发中,通过 URL 来传递参数成为了一种通用的做法。通过 seg () 函数获取参数,通过 URL 在控制器和视图层之间传递 URL 参数。

数据一般的处理流程,1->2->3 或者 1->2->5 或者 1->2->3->4->5 这样的三个流程。

1->2->3:是显示索引(栏目索引)

1->2->5:直接点击了文章索引,点击出了文章信息

1->2->3->4->5:是点击出栏目,出现索引,索引出现后又点击文章信息

如果又要加上分页,越来越复杂了。

分页这个功能加在什么地方?

7. 发现铅笔道这个项目难度

https://www.pencilnews.cn/deep 这个项目有难度。

分析获取的 JSON 数据。

{
    "code": 1000,
    "message": "SUCCESS",
    "data": {
        "items": [
            {
                "user_contact_id": "8377",
                "article_id": "13919",
                "uid": "106139",
                "contact_uid": "109954",
                "reason": "",
                "create_at": "2017-05-07 16:26:49",
                "contactU": {
                    "uid": "109954",
                    "name": "李晟博",
                    "sex": "0",
                    "avatar": null,
                    "cert": {
                        "uid": "109954",
                        "state": "1",
                        "cert_type": "1",
                        "com": "山丘",
                        "job": "创始人",
                        "charge": null,
                        "card": "提交人:玛依热",
                        "create_at": "2017-05-06 23:08:15",
                        "update_at": "2017-05-06 23:08:15",
                        "op_uid": "101370",
                        "reason": null,
                        "show_barrage": "1",
                        "revise_reason": "0"
                    }
                },
                "u": {
                    "uid": "106139",
                    "name": "闫久领",
                    "sex": "0",
                    "avatar": null,
                    "cert": {
                        "uid": "106139",
                        "state": "1",
                        "cert_type": "2",
                        "com": "众筹客",
                        "job": "投资总监",
                        "charge": "负责互联网消费类,人工智能机器,连锁实体品牌领域投资",
                        "card": "users/card/7be9f234f2dc2b716b263dc3d73822d81490165872.jpg",
                        "create_at": "2017-03-22 14:59:49",
                        "update_at": "2017-03-22 15:36:33",
                        "op_uid": "100041",
                        "reason": null,
                        "show_barrage": "1",
                        "revise_reason": "0"
                    }
                }
            }
        ]
    }
}

上面的信息是联系人的信息,没有什么关系的,抓取网站不是从这里抓取的。

8. 总结

现在看这个项目,是比较简单的。36kr、chinavc、pencil 都是利用抓包的方式抓取的。GPLP、pedaily 都是比较传统类型的网站,按照套路来抓取就可以了。如果抓包的方式,写两个函数。如果比较传统类型的网站,都是基本的 4 个函数。