首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Node.js实时抓取网页

使用Node.js实时抓取网页
EN

Stack Overflow用户
提问于 2011-03-06 23:47:58
回答 4查看 45K关注 0票数 66

最好的办法是使用Node.js抓取网站内容。我想构建一些非常非常快的东西,可以以kayak.com的方式执行搜索,在这种情况下,一个查询被分派到几个不同的站点,结果被抓取,并在可用时返回给客户端。

让我们假设这个脚本只提供JSON格式的结果,我们可以直接在浏览器中或在另一个web应用程序中处理它们。

以下是几个起点:

Using node.js and jquery to scrape websites

有谁有什么想法吗?

EN

回答 4

Stack Overflow用户

发布于 2011-03-12 23:24:01

Node.io似乎接过了蛋糕:-)

票数 24
EN

Stack Overflow用户

发布于 2012-07-14 23:44:09

前面提到的所有解决方案都假定本地运行刮板。这意味着您的性能将受到严重限制(由于它们是按顺序或在有限的一组线程中运行)。一个更好的方法,imho,是依靠现有的,尽管是商业的,抓取网格。

下面是一个示例:

代码语言:javascript
复制
var bobik = new Bobik("YOUR_AUTH_TOKEN");
bobik.scrape({
  urls: ['amazon.com', 'zynga.com', 'http://finance.google.com/', 'http://shopping.yahoo.com'],
  queries:  ["//th", "//img/@src", "return document.title", "return $('script').length", "#logo", ".logo"]
}, function (scraped_data) {
  if (!scraped_data) {
    console.log("Data is unavailable");
    return;
  }
  var scraped_urls = Object.keys(scraped_data);
  for (var url in scraped_urls)
    console.log("Results from " + url + ": " + scraped_data[scraped_urls[url]]);
});

在这里,抓取是远程执行的,只有当结果准备就绪时,才会向代码发出回调(还有一个选项可以在结果可用时收集结果)。

您可以在https://github.com/emirkin/bobik_javascript_sdk下载Bobik client proxy SDK

票数 5
EN

Stack Overflow用户

发布于 2012-04-25 05:16:06

您并不总是需要jQuery。例如,如果您使用从jsdom返回的DOM,就可以很容易地自己获取所需的内容(同时考虑到您不必担心xbrowser问题)。看:https://gist.github.com/1335009根本不是从node.io中拿走的,只是说你可以自己做这件事,这取决于...

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5211486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档