![](/img/trans.png)
[英]Equivalent of express app.get(“/:users/:names”) in yaml for PHP?
[英]Express app.get() equivalent in CasperJS
我构建了一个简单的Web刮板,该刮板可刮擦一个网站并输出访问此URL时所需的数据localhost:3434/page
。 我使用express app.get()
方法实现了此功能。
我有以下问题,
1)我想知道是否有一种方法可以在CasperJS中实现此功能。
2)在访问URL- localhost:8081/scrape
之后,是否有办法使此代码开始抓取。 我认为我没有正确创建端点,因为它甚至在访问URL之前就开始抓取
3)当我访问该URL时,出现错误提示该URL不可用。
我认为,如果可以在CasperJS中将端点正确设置为localhost:3434/page
,那么所有这些问题都将得到解决。 我不需要结果显示在页面上。 访问该URL时,仅需要它即可开始抓取。
以下是我为刮取网站并在Casper中创建服务器而开发的代码。
var server = require('webserver').create();
var service = server.listen(3434, function(request, response) {
var casper = require('casper').create({
logLevel:"verbose",
debug:true
});
var links;
var name;
var paragraph;
var firstName;
var expression = /[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/gi;
var regex = new RegExp(expression);
casper.start('http://www.home.com/professionals/c/oho,-TN');
casper.then(function getLinks(){
links = this.evaluate(function(){
var links = document.getElementsByClassName('pro-title');
links = Array.prototype.map.call(links,function(link){
return link.getAttribute('href');
});
return links;
});
});
casper.then(function(){
this.each(links,function(self,link){
if (link.match(regex)) {
self.thenOpen(link,function(a){
var firstName = this.fetchText('div.info-list-text');
this.echo(firstName);
});
}
});
});
casper.run(function() {
response.statusCode = 200;
response.write(firstName);
response.close();
});
});
该webserver
在您CasperJS脚本中使用是PhantomJS的Web服务器模块 ,这是“旨在便于PhantomJS脚本和外部世界之间的沟通,因此不推荐用作一般生产服务器”
您不应该在PhantomJS中构建Web服务器。 检出这些节点-幻象桥,这些桥将使您可以从常规NodeJS Web服务器使用Phantom:
SpookyJS是特别适用于CasperJS的驱动程序,而其他则仅适用于PhantomJS。
尽管CasperJS允许从PhantomJS内部加载,但是您至少可以在Phridge中使用它(不确定其他人),因为它具有.run
函数,可以直接在PhantomJS环境中运行任何函数:
casperPath = path.join(require.resolve('casperjs/bin/bootstrap'), '/../..');
phantom.run(casperPath, function(casperPath) {
phantom.casperPath = casperPath;
phantom.injectJs(casperPath + '/bin/bootstrap.js');
casper = require('casper').create();
...
除了使用PhantomJS的工具外,还有其他工具:
ZombieJS使用本机NodeJS库,这使其在NodeJS应用中使用最快,最自然。 尽管这意味着更多用于测试目的,并且可能无法在其他刮板可能的所有站点上正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.