Tag: networking抓取

如何保持networking爬虫运行?

我想写在JS我自己的networking爬虫。 我正在考虑使用一个node.js解决scheme,如https://www.npmjs.com/package/js-crawler 我们的目标是每隔10分钟进行一次“抓取”,因此每10分钟我就要抓取工具从网站抓取数据。 我明白,我可以写一个无限循环,如: var keeRunning = true; while (keepRunning) { // fetch data and process it every 10 minutes } 如果我一直有我的电脑,而且我在网站上,这可能会工作得很好。 但是,如果我closures了电脑,我可以想象它将不再起作用。 那么即使电脑关机,我应该考虑怎样的解决scheme来保持脚本始终在运行?

在特定情况下向PHP开发人员解释nodejs的开发风格

我是一个PHP Web应用程序开发人员,他使用PHP / CodeIgniter构build了几个大型项目。 PHP总是完成这项工作,但现在我正在开发一个新的项目,在客户端使用javascript extjs4框架构build。 我对有经验的nodejs开发者有一些疑问。 在我最近的PHP项目中,用户login请求要求我的服务器对Facebook进行API调用。 为了提高可伸缩性,我处理这个事情的方式是我的客户端发出初始login请求,服务器会将请求传递给一个“gearman”job queing服务器,后台工作进程会抓住这个工作并执行API调用。 同时,服务器会回复客户端,然后客户端的浏览器会开始使用AJAX轮询服务器,看是否已完成工作。 (哦,我把工作人员的Facebook API调用结果通过memcached传递给应用程序服务器)。 我这样做是为了释放我的应用程序服务器,以处理来自用户的更多并发请求,因为PHP被locking,Facebook API调用需要几秒钟的时间。 我的问题是,由于nodejs是非locking的,应用服务器的整个模型,一个齿轮工作者队列服务器和后台工作人员是否对nodejs开发有意义? 我只是简单地接受来自客户端的ajax请求login,从应用程序服务器调用Facebook API,并等待它的响应(同时处理其他用户的请求,因为nodejs是非locking的),然后回复给用户? 为了能够利用真棒heroku环境,我也考虑进入nodejs开发。

在JavaScript中可能的networking协议

在JavaScript中build立服务器连接时,HTTP(每XMLHttpRequest )的替代方法是什么? 我唯一知道的是WebSocket协议 (每个WebSocket )。 其中包含相应的安全变体https和wss。 是否有可能select一个JavaScript的任意协议? 你如何与NTP,IMAP,UDP等进行通信 – 例如在Node.js中的服务?

在Node.js中保存应用程序状态

如何保存node.js的应用程序状态主要由HTTP请求组成的应用程序? 我在Node.JS中有一个脚本,它使用RESTful API将大量(10,000多种)产品导入到电子商务应用程序中。 API对请求数量有限制,我们正盯着这个限制。 在以前的运行中,脚本退出时出现Error: connect ETIMEDOUT可能是由于超出了API限制。 我想能够尝试连接5次,如果一小时后恢复失败,恢复限制。 在发生崩溃的情况下(停电,networking崩溃等),保存整个过程也是有益的。 并且能够从停止的位置恢复脚本。 我知道Node.js是一个巨大的事件队列,所有的http请求和它们的callback都会被放到这个队列中(和其他一些事件一起)。 这使得它成为保存当前执行状态的主要目标。 其他令人愉快的(对于这个项目来说不是完全必要的)将能够在不同networking上的多个机器之间分配工作以增加吞吐量。 那么现在有没有办法做到这一点? 一个框架也许? 或者我需要自己实现这一点,在这种情况下,任何有用的资源如何做到这一点将不胜感激。

通过Node.js路由http请求

我试图做一个黄瓜testing设置与Node.js可以testing任何网站通过使用iframe。 通常iframe是一个不行,因为跨脚本的安全限制。 但是,如果可能的话(我确定是这样的,而且我相信你会想出一个解决scheme),当请求一个特定的url名称时,通过请求的url获取testing的目标网站,这样iframe将被加载一个testing目标的副本。 基本上只是一个标准的node.js服务器,根据req.url获取特定的页面,类似于一个地址请求路由器。 这是我公然的尝试做到这一点。 通过获取testing页面。 该url的作品。 但我有问题从http服务器切换到连接对象。 有没有办法“喂”与http服务器响应的连接? PS。 我还创build了两个node.js服务器的解决scheme。 节点1获取testing目标并将其与黄瓜testing页面混合。 节点2主持黄瓜testing。 此解决scheme正在工作。 但是它会在发生JavaScript命名冲突的网站上产生问题。 这就是为什么通过封装解决这个问题的iframe解决scheme更具吸引力。 var http = require('http'); var connect = require('connect'); var port = process.env.PORT || 8788; var server = http.createServer(function(req, webres) { var url = req.url; console.log(url); if(url == '/myWebsiteToBeTestedWithCucumberJS') { // Load the web site to be tested "myWebsiteToBeTestedWithCucumberJS" // […]

使用cheerio执行scraped JavaScript

我有一个网页,其中有一些JS API不改变dom,但返回一些数字。 我想写一个NodeJS应用程序,下载这些页面,并在下载页面的上下文中执行这些function。 我正在寻找cheerio页面抓取..但是,当我看到有多容易导航和操作与它的DOM,我看不到任何访问运行页面function。 可以做到吗? 我应该看看,而不是在jsdom? 谢谢

如何使用CHEERIO.js这个HTML?

<div class="A"> <section class="B" data-vr-zone="B"> <header class="C"> BarFoo</header> <ul class="list"> <li data-vr-contentbox=""> <a href="http://www.foobar.com/…/html"> <small>BarBar</small> <span>Foo Bar foobarbar FooFoo?</span> </a> </li> <li data-vr-contentbox=""> <a href="http://www.foofoobar.com/…/html"> <small>BarBarBar</small> <span>Foo foo FooFoo?</span> </a> </li> 我想访问HREF属性中的URL。 而SPAN中的文本 – 只有第一个列表项。 我有什么作品,但我期待学习更好的方法。 var url = $('div .A').children().children().children().children()[0].attribs.href; var title = $('div .A').children().children().children().children()[0].children[2].children[0].data;

服务工作者推送Angular2的通知

我试图拼凑通过服务工作者给用户推送通知的一般工作stream程。 我遵循这个 Google Developers服务人员推送通知教程,并且正在考虑如何在基于小型用户的Web应用程序中实现这种事情。 在我看来,支持推送通知的Web应用程序的一般工作stream程如下所示: 客户端访问应用 服务工作者产生推送通知端点 客户端将端点发送到服务器 服务器将端点与生成端点的当前用户相关联 每当您的应用程序会说通知值得发生时,服务器就会抓取与该用户关联的推送通知端点,并触发该通知端点向任何用户设备发送推送通知(可能在Chrome 50+等) 基本上我只是想确认一下我的这个技术的一般实现思路是否准确,否则如果我缺less一些东西的话会得到反馈。

与服务器端对象进行双向通信以进行Web应用程序开发

背景 我的背景是面向对象的高级中间件和面向embedded式设备和桌面应用程序开发的C ++。 现在我们需要为我们的创业创build一个高规模的networking应用程序。 题 基于请求响应和连续轮询的当前web开发框架看起来非常原始,效率低下。 我正在寻找完全服务器端的面向对象和基于事件的编程。 这是一个例子, 在服务器上有一个名为employeeManager的持久对象, 这个对象的方法 , empList getAllEmployeeList(); empList getEmployeeOfDepartment(string strDept); /*Some more */ 这个对象的事件 employeeAdded(empID); employeeEdited(empID); employeeRemoved(empID); /*Some more */ 现在,客户端JavaScript应该能够调用这个(服务器端)对象的方法,并且应该能够接收这个对象的事件。 我们可以在asynchronous模式下获得方法调用的结果。 框架还应提供一种方式,以便view(或html-js页面)可以注册所需的服务器端事件。 有没有什么框架可以用这种方法。 在socketIO上面是这样的吗? 任何提供良好的客户端JavaScript和服务器端对象之间的双向RPC的框架?

刮Netflix

尝试以编程方式从Netflix中获取最新查看的数据,但仅在login阶段出现一些问题。 我目前的代码只是导致Netflix吐口水We were unable to process your request. 页: var request = require('request').defaults({jar: true}); var cheerio = require('cheerio'); var url = "https://www.netflix.com/Login?locale=en-GB&nextpage=https%3A%2F%2Fwww.netflix.com%2FWiViewingActivity"; request(url, function (error, response, body) { if (!error && response.statusCode == 200) { var $ = cheerio.load(body); var authCode = $("#login-form > input").attr("value"); request.post(url+"?email=myemail%40gmail.com&password=mypassword&RememberMe=on&authURL="+authCode, { }, function(err, response, body){ console.log(body); }); } }) […]