node-scraper:基于 Node.js 和 jQuery 的简易网页数据抓取工具

Easier web scraping using node.js and jQuery

分支1Tags0
文件最后提交记录最后更新时间
14 年前
15 年前
14 年前
15 年前
15 年前
14 年前

node-scraper

一个小巧的模块,让网站抓取变得简单。使用 node.js 和 jQuery。

安装

通过 npm

$ npm install scraper

示例

简单用法

第一个参数是字符串形式的 URL,第二个参数是回调函数,提供一个 jQuery 对象,其中 "body" 属性代表抓取到的网站内容,第三个参数是来自请求的信息对象。

var scraper = require('scraper');
scraper('http://search.twitter.com/search?q=javascript', function(err, jQuery) {
    if (err) {throw err}

    jQuery('.msg').each(function() {
        console.log(jQuery(this).text().trim()+'\n');
    });
});

高级用法

第一个参数是一个包含用于内部使用的 "request" 实例设置的对象,第二个参数是回调函数,提供一个 jQuery 对象,其中 "body" 属性代表抓取到的网站内容,第三个参数是来自请求的信息对象。

var scraper = require('scraper');
scraper(
    {
       'uri': 'http://search.twitter.com/search?q=nodejs'
           , 'headers': {
               'User-Agent': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)'
           }
    }
    , function(err, $) {
        if (err) {throw err}

        $('.msg').each(function() {
            console.log($(this).text().trim()+'\n');
        });
    }
);

并行抓取

第一个参数是一个数组,包含字符串或对象,第二个参数是回调函数,提供一个 jQuery 对象,其中 "body" 属性代表抓取到的网站内容,第三个参数是来自请求的信息对象。

你可以通过在第三个参数添加一个包含 reqPerSec 的选项对象来限制每秒的请求数量。

var scraper = require('scraper');
scraper(
    [
        'http://search.twitter.com/search?q=javascript'
        , 'http://search.twitter.com/search?q=css'
        , {
            'uri': 'http://search.twitter.com/search?q=nodejs'
            , 'headers': {
                'User-Agent': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)'
            }
        }
        , 'http://search.twitter.com/search?q=html5'
    ]
    , function(err, $) {
        if (err) {throw err;}

        $('.msg').each(function() {
            console.log($(this).text().trim()+'\n');
        });
    }
    , {
        'reqPerSec': 0.2 // 每个外部请求之间等待5秒
    }
);

参数

第一(必需)

包含关于要抓取的页面信息

字符串

'http://www.nodejs.org'

或者

请求对象

{
   'uri': 'http://search.twitter.com/search?q=nodejs'
       , 'headers': {
           'User-Agent': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)'
       }
}

或者

数组(如果你想要从多个 URL 抓取)

[
    urlString
    , urlString
    , requestObject
    , urlString
]

第二(可选)

允许你处理抓取数据的回调函数。

function(err, $) {
    if (err) {throw err;}

    $('.msg').each(function() {
        console.log($(this).text().trim()+'\n');
    }
}

第三(可选)

此参数是一个包含整体抓取器设置的对象。

  • reqPerSec: 浮点数;(让你能够调整抓取频率,避免对抓取服务器造成过大压力)

依赖项

项目介绍

Easier web scraping using node.js and jQuery

定制我的领域