【发布时间】:2014-08-19 04:06:11
【问题描述】:
我正在尝试抓取网站上的多个属性。我打算将它们加载到一个数组中,然后将该数组加载到我服务器上 db 上的一个表中。
我尝试创建函数 getInfo() 并将这些 XPath 属性中的每一个加载到数组中(如果这是人们建议的,我可能只是将其加载到表中)。我在casper.repeat 步骤中调用了该函数5 次。我收到一个解析错误。我不知道这里出了什么问题,因为这是我设置数组以抓取 URL 并将它们添加到数组中的方式(我在手册中找到):Now let’s scrape Google!
任何见解将不胜感激。
代码:
var links = [];
var utils = require('utils');
var casper = require('casper').create();
casper.userAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36');
function getInfo() {
var info = document.querySelectorAll(fetchText((x(//*[@id="body"]/div[1]/ul[1]/li[3]/span[1]/span[2]/a)))
+ ', ' + fetchText((x(//*[@id="body"]/div[1]/ul[1]/li[2]/h2/text()))
+ ', ' + fetchText((x()))
+ ', ' + fetchText((x(//*[@id="body"]/div[1]/ul[1]/li[4]/ul/li/span[2]/a)))
+ ', ' + fetchText((x(//*[@id="body"]/div[1]/ul[1]/li[2]/h2/span)))
+ ', ' + fetchText((x(//*[@id="body"]/div[1]/ul[1]/li[5]/div[2]/ul/li[5]/span[2]/a)))
+ ', ' + fetchText((x(//*[@id="body"]/div[1]/ul[1]/li[5]/div[2]/ul/li[1]/span[2])))
+ ', ' + fetchText((x(//*[@id="key"]))
+ ', ' + fetchText((x()))
+ ', ' + fetchText((x(//*[@id="body"]/div[1]/ul[1]/li[5]/div[2]/ul/li[2]/span[2])))
+ ', ' + fetchText((x(//*[@id="body"]/div[1]/ul[1]/li[5]/div[2]/ul/li[6]/span[2]/span[2]/a)))
+ ', ' + fetchText((x())));
return Array.prototype.map.call(info, function());
}
// This was changed.
casper.repeat(5, function() {
this.thenOpen(bURL + links[i], function() {
this.wait(3000);
info = info.concat(this.evaluate(getInfo));
});
i++;
}).run();
【问题讨论】:
-
我删除了您的部分问题,因为它与您最初的问题无关。如果你能说得更清楚,你可以稍后再问一个新问题。
标签: javascript arrays xpath phantomjs casperjs