爬虫技术(01)神箭手爬虫初学案例解读

var configs = {
    //要爬取的域名
    domains: ["leiphone.com"],  
    //爬虫的入口URL  
    scanUrls: ["http://www.leiphone.com/search?s=vr&site=article"],
    //内容页url正则
    /*

    解读下面正则:
    http://www.leiphone.com/news/ (\d+表示任意位数的数字) /(.+表示任意字符多次或1次).html
    \d 匹配一个字数字符,/\d/ = /[0-9]/
    + 匹配前面元字符1次或多次  
    . 可以替代任何字符  
    例如:https://www.leiphone.com/news/201701/ri7dDB7Fq0mMj1qh.html
    */
    contentUrlRegexes: [
        /http:\/\/www\.leiphone\.com\/news\/\d+\/.+\.html/
    ],
    //列表页url正则 可留空
    /*

    解读下面正则:
    http://www.leiphone.com/search?s=vr&site=article(&page=\d+)? 表示页数可有不可有
    例如:https://www.leiphone.com/search?s=vr&site=article&page=2

    */
    helperUrlRegexes: [
        /http:\/\/www\.leiphone\.com\/search\?s=vr&site=article(&page=\d+)?/
    ],
    fields: [
        {
            // 抽取内容页的文章标题 
            // name自己写
            name: "article_title",
            // selector解读 表示该name的值是页面上的h1标签上的class="headTit"的页签的值
            /*

            <h1 class="headTit">
               4K之后,8K头显海外众筹表现不俗,小派科技为什么要死磕分辨率?                
            </h1>

            */

            selector: "//h1[contains(@class,'headTit')]",
            required: true
        },
        {
            // 抽取内容页的文章内容
            /*

            */
            name: "article_content",
            selector: "//div[contains(@class,'lph-article-comView')]",
            required: true
        },
        {
            // 抽取内容页的文章发布日期
            name: "article_publish_time",
            selector: "//td[contains(@class,'time')]",
            required: true
        },
        {
            // 抽取内容页的文章作者
            /*
            如果出现这种情况 就是定位的里面还有标签 那么就如下写
            <td class="aut">
                本文作者:<a href="https://www.leiphone.com/author/tianmiao" target="_blank" rel="nofollow">田苗</a>
            </td>
            */
            name: "article_author",
            selector: "//td[contains(@class,'aut')]/a",
            required: true
        }
    ]
};



// 在"afterExtractField回调函数"中将爬取到的时间转换为秒级时间戳
/*
    fieldName: 表示字段名称
    data: 表示字段值
    page: 表示当前正在爬取的网页对象
    site: 表示当前正在爬取的目标网站对象
configs.afterExtractField = function(fieldName, data, page, site) {
    if (fieldName == "article_publish_time") {
        var timestamp = Date.parse(data);
        return isNaN(timestamp) ? 0 : parseInt(timestamp/1000);
    }
    return data;
};

// 使用以上配置创建一个采集爬虫
var crawler = new Crawler(configs);
// 启动该采集爬虫
crawler.start();
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术闲聊DD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值