Articles of web crawler

如何关注PhantomJS中的document.location.reload?

我在PhantomJS中加载了一个页面(在NodeJS中使用它),在页面上有一个JS函数doRedirect() ,它包含 … document.cookie = "key=" + assignedKey document.location.reload(true) 我像这样从PhantomJS运行doRedirect() page.evaluate(function() { return doRedirect() }).then(function(result) { // result is null here }) 我希望PhantomJS遵循document.location.reload(true)并返回新页面的内容。 如何才能做到这一点?

在localhost上为meteor.js设置prerender.io

1)我已经安装并运行应用程序meteor.js https://github.com/meteor/simple-todos-react 2)我在应用程序目录附近安装了prerender服务器: git clone https://github.com/prerender/prerender.git cd prerender npm install 并设置端口: export PORT=3050 最终运行 node server.js 3)我已经安装了模块prerender-node : meteor npm install prerender-node –save 设置环境variables: export PRERENDER_SERVICE_URL="http://localhost:3050/" 4)我写在./server/main.js : import { Meteor } from 'meteor/meteor'; import { WebApp } from 'meteor/webapp'; import prerenderIO from 'prerender-node'; Meteor.startup(() => { prerenderIO.set('host', 'localhost'); prerenderIO.set('protocol', 'http'); prerenderIO.set('port', '3000'); WebApp.connectHandlers.use(prerenderIO); }); […]

PhantomJS没有正确地提供JS和CSS文件

我有一个节点服务器运行并监听端口8080.有一个mod_rewrite规则处于活动状态,将Botsredirect到此端口。 RewriteCond %{HTTP_USER_AGENT} (googlebot|adsbot-google|bingbot|msnbot|psbot|gigabot|twitterbot|linkedinbot|yahoo-mmcrawler|pingdom\.com_bot) [NC] RewriteRule ^ http://127.0.0.1:8080%{REQUEST_URI} [P] 节点脚本依赖phantomjs脚本来打开漫游器请求的任何URL并返回内容。 代码取自http://backbonetutorials.com/seo-for-single-page-apps/ 我通过在本地机器上运行phantomjs并使用相同的phantomjs代码直接请求我的网页来testing这一点。 结果与“crawl as google”表示的一样(google网站pipe理员工具),也就是说CSS和JS文件没有被phantomjs正确提供。 CSS文件只包含 <html><head></head><body></body></html> 没有实际的CSS内容。 JS文件有 <html><head></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;"> 插入任何JS代码之前的最开始。 因此,当谷歌试图抓取和呈现页面布局被打破,JS错误抛出。 任何提示? 谢谢。

纯粹的JavaScript解决scheme的谷歌Ajax可伸缩规范

我有一个基于JavaScript的项目(例如node.js,backbone.js等)。 我正在使用像/#!/ about这样的hashbangurl,并且已经阅读了google的ajax可search规范。 我已经做了一些与僵尸无头UItesting,可以很容易想到如何通过设置一个轻微的延迟和静态内容返回到谷歌机器人。 但是我并不想从头开始实现,希望有一个预先存在的库适合我的堆栈。 知道吗? 编辑:在写作时,我不认为这存在。 然而,在服务器和客户端上使用主干(或类似的)进行渲染是合理的方法(即使不是直接的答案)。 所以我打算把这个标记为答案,尽pipe未来可能会有更好的解决scheme。

如何获得casper.js http.status代码?

我有以下简单的代码: var casper = require("casper").create({ }), utils = require('utils'), http = require('http'), fs = require('fs'); casper.start(); casper.thenOpen('http://www.yahoo.com/', function() { casper.capture('test.png'); }); casper.on('http.status.404', function(resource) { this.echo('wait, this url is 404: ' + resource.url); }); casper.run(function() { casper.exit(); }); 有没有办法赶上http.status代码,不pipe它是什么? 现在我可以在文档中看到如何捕捉特定的代码事件。 如果我只想看看它是什么呢?