【问题标题】:Options for article scraping from many different websites从许多不同网站抓取文章的选项
【发布时间】:2015-08-16 15:55:17
【问题描述】:

我需要将网页抓取功能添加到单页应用程序中。

我需要从许多不同的博客和服务中检索有用的内容。有用的内容是指文章、文本和视频链接,以便将它们嵌入我的页面。

这个工具似乎提供了我需要的东西:http://www.diffbot.com/

使用它,我可以简单地输入一篇文章的 URL,该服务将从该单个页面检索我需要的所有数据。
但是,我不需要每月处理 25 万个请求,这将花费每月 300 美元;我需要一个解决方案来每月处理大约 5000 个请求,并有可能在以后进行扩展。

我通过 Google 找到了很多抓取解决方案,但它们大多提供定期从少数网站抓取自定义内容的解决方案 - 这不是我需要的。另外,我在这方面没有经验,所以我希望你能告诉我我应该为此目的使用什么。我主要处理 JavaScript。

此外,是否有可能允许页面被客户端浏览器而不是服务器端抓取?

我使用 ReactJS 和 Flux 架构开发 SPA。服务器 NodeJS+Express,数据库 - 无后端

【问题讨论】:

  • 你用什么来开发SPA?
  • 我已经在描述中添加了答案
  • 我在答案中添加了一个客户端 js 库

标签: javascript web-scraping


【解决方案1】:

听起来像是基于node.js 构建的自定义解决方案将是您最好的选择(考虑到 js 要求)。您可以使用几个节点模块来完成此操作。我会推荐以下内容:

request - 用于从目标网页抓取html

cheerio - 用于过滤从请求中收集的 html

node-horseman - 用于在目标网页上执行 javascript(用于更高级的抓取)

artoo - 客户端抓取库(我从未使用过这个,但它可能是您正在寻找的)

至于 SPA 开发,我推荐sailsjs

这是一个使用上述模块抓取https://rotogrinders.com/pages/mlb-pitcher-hub-sp-salary-charts-260515的示例节点应用程序

请求和欢呼:

var cheerio = require('cheerio'),
    request = require('request');

//Define your target URL and HTTP method here
var options = {
  url: 'https://rotogrinders.com/pages/mlb-pitcher-hub-sp-salary-charts-260515',
  method: 'GET'
}

// Use request to grab the HTML defined in options and return the contents in "body"
request(options, function (err, res, body) {
  if (!err && res.statusCode == 200) {

    // Load the "body" with cheerio
    var $ = cheerio.load(body);

    // grab each occurrence of the matched html (Use Chrome developer tools to determine CSS) using Cheerio
    $('tbody').children().each(function(i, element){
      var $element = $(element);
      var name = $element.children().eq(0).text().trim();
      var salary = $element.children().eq(3).text().trim();

      // Put the filtered data in an object
      var post = {
        name: name,
        salary: salary
      }
      // Print the object to the console
      console.log(post);
    });
  }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-04
    • 2020-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-08
    相关资源
    最近更新 更多