成都网站建设设计

将想法与焦点和您一起共享

(Krake)简易数据抓取范例

之前在github上发布了一个Scrapy的抓取项目,然后收到了来自 krake.io 的邮件,准确的说是推广邮件,抱着好奇心进去看了看

公司主营业务:网站设计、网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出泽库免费做网站回馈大家。

krake 基于 EC2提供了在线的数据抓取服务,不过对于国人来说 遗憾的一点是他是收费的

不过注册有送500点券,也就是能免费抓500条数据  也太少了点  呵呵...

为了节省您的时间,如果感觉不必要的 请就此打住。

下面是花了大概半个下午的时间在 krake上的测试

感觉他用于结构简单、关系清晰的数据采集还是不错的(ps:由于api文档说明不太完善,加之鄙人的英文不是太好,复杂的东西就没去深究了)

好了,废话不多说了,上范例代码:

//一个抓取对象   说明
//周公解梦生活篇  http://astro.sina.com.cn/jian/jiemeng/shenghuo.html
// 此页面的 中间部分采用 iframe 加载了 http://astro.sina.com.cn/jian/4997.shtml
// 然后到达最终页面 如 http://astro.sina.com.cn/jian/4997.shtml
{
    //  抓取网址
    origin_url : ["http://astro.sina.com.cn/jian/jiemeng/shenghuo.html",],
                                                                       
    //  采集的数据 规则
    columns : [
        {
            col_name : '第一层',
            xpath : '//iframe[@id="content"]',//选中iframe
            required_attribute : 'src',
            options : {
                columns : [ /** An array of column_object **/
                    {//一个数据列为一个对象
                        col_name :  '第二层',
                        //dom_query : '.css_class_name_of_columns'//jQuery 选择器   包含jQuery时可使用如下规则进行分析
                        xpath : '//div[@id="wrap"]/h4',//'//xpath/to/elements'// xPath 选择器   默认使用
                        required_attribute : "innerText",
                    },
                    {
                        col_name : '子项内容',
                        xpath : '//div[@id="wrap"]/p/a',//最终层
                        required_attribute : 'href',//required_attribute_type //你希望采集的属性  比如 innerHTML innerText textContent href src
                        options : { //扩展一个新的 抓取对象
                            columns : [
                                {
                                    col_name : '标题',
                                    xpath : '//div[@id="wrap"]/h4',
                                    required_attribute : "innerText",
                                },   
                                {
                                    col_name : '内容',
                                    xpath : '//div[@id="wrap"]/p',
                                    required_attribute : "innerHTML",
                                },
                            ],
                            wait : 0,
                        },
                    }
                ],
            },
            wait : 0,
        }
    ],
                                                                       
                                                                       
    //  分页规则
    next_page : '',//next_page_object,包含 dom_query 或 xPath 选择器 的对象
                                                                       
                                                                       
    //  cookie 验证规则 
    cookies : '',//cookies_object,包含 cookie内容的 对象数组
                                                                       
    //  需要提取的数据列 可选择columns 中的部分数据导出
    column_filter : [],//column_filter_object 
                                                                         
                                                                         
    //  是否包含jQuery(可使用 jquery dom选择器) 需注意是否会导致原页面js冲突问题
    exclude_jquery : true,//boolean 
                                                                         
                                                                         
    //  页面数据采集等待时间(用于Ajax延迟)
    wait : 3,//integer   默认0秒
}

如果有兴趣,你也可以试试哦

当然在需求比较复杂的时候,建议还是直接使用Scrapy这类的抓取框架,就不要在这种小的在线工具代码上浪费时间了(恐怕对于国人来说,收费才是最要命的 哈哈)

这边顺便附上 测试的项目地址吧

https://krake.io/krakes/445-testkrake  



本文名称:(Krake)简易数据抓取范例
URL地址:http://chengdu.cdxwcx.cn/article/ijhhei.html