如何在CSV文件中存储Javascript数据
我正在使用PhantomJs库获取数据如何在CSV文件中存储Javascript数据,javascript,php,csv,web-scraping,Javascript,Php,Csv,Web Scraping,我正在使用PhantomJs库获取数据 var page = require('webpage').create(); console.log('The default user agent is ' + page.settings.userAgent); page.settings.userAgent = 'SpecialAgent'; page.open('https://www.apwagner.com/appliance-part/wpl/wp661600', function(stat
var page = require('webpage').create();
console.log('The default user agent is ' + page.settings.userAgent);
page.settings.userAgent = 'SpecialAgent';
page.open('https://www.apwagner.com/appliance-part/wpl/wp661600', function(status) {
if (status !== 'success') {
console.log('Unable to access network');
} else {
var ua = page.evaluate(function() {
return document.getElementById('ModelList').textContent;
//return document.getElementById('ModelList').innerHTML;
});
console.log(ua);
}
phantom.exit();
});
输出
1DNET3205TQ0
7MMMS0100VW0
7MMMS0100VW1
7MMMS0120VM0
7MMMS0140VW0
7MMMS0160VW0
如果我试图使用innerHTML获取输出,那么输出如下
<ul class="modelnos">
<li><a class="cursor" href="/appliance/1dnet3205tq0" onclick="return ProductService.SaveLogModelView('1DNET3205TQ0', 'MAC')"> 1DNET3205TQ0</a></li>
<li><a class="cursor" href="/appliance/7mmms0100vw0" onclick="return ProductService.SaveLogModelView('7MMMS0100VW0', 'MAC')"> 7MMMS0100VW0</a></li>
<li><a class="cursor" href="/appliance/7mmms0100vw1" onclick="return ProductService.SaveLogModelView('7MMMS0100VW1', 'MAC')"> 7MMMS0100VW1</a></li>
<li><a class="cursor" href="/appliance/7mmms0120vm0" onclick="return ProductService.SaveLogModelView('7MMMS0120VM0', 'MAC')"> 7MMMS0120VM0</a></li>
<li><a class="cursor" href="/appliance/7mmms0140vw0" onclick="return ProductService.SaveLogModelView('7MMMS0140VW0', 'MAC')"> 7MMMS0140VW0</a></li>
</ul>
组合使用
split()
函数和join()
函数可以获得正确的结果。。(有关详细说明,请参见代码内部的注释)
注释显示为灰色
,周围有/*
和*/
/*为ua值创建新数组*/
var my_数组=[];
var page=require('webpage')。create();
console.log('默认的用户代理是'+page.settings.userAgent);
page.settings.userAgent='SpecialAgent';
第页打开('https://www.apwagner.com/appliance-part/wpl/wp661600,功能(状态){
如果(状态!=“成功”){
console.log('无法访问网络');
}否则{
var ua=page.evaluate(函数(){
return document.getElementById('ModelList').textContent;
//return document.getElementById('ModelList').innerHTML;
});
控制台日志(ua);
/*将ua拆分为阵列*/
my_array=ua.split(/\s+/);
}
phantom.exit();
});
/*现在,在最后使用join()生成“csv”*/
/*“,”参数指定在值之间插入哪个字符*/
var csv_array=my_array.join(“,”);
console.log(csv_数组)代码>第一部分的可能重复,而不是console.log(ua)
您可以在数组中推送值。请尝试split()
函数创建数组ua.split('\n')
或ua.split('')
取决于字符串中的分隔符。它将返回数组如何将此数据推入数组。这些数据一次打印一次once@abhishekkannojiaanu请检查问题中的更新push()
用于将单个值放入数组,它不会创建值数组。你需要split()
instead我刚刚更新了我的答案,以考虑到@anu saidAlso的内容,它不一定是空白,它可以是一个新行作为分隔符。因此,如果空格不起作用,您需要尝试split('\n')
。@anu实际上split(/\s+/)
匹配换行符和空格很好,那么我的坏文件不会在该位置创建。获取错误TypeError:undefined不是一个函数(评估'fs.writeFile')
您正在使用节点执行此操作。如果phantomjs
那么请使用fs.write(path,content,'w')
代替fs.writeFile
您可以简单地创建一个变量数组ua
,这样我就可以从该数组创建表。您想存储在csv文件中还是想创建一个html表?变量array
包含一个数组中的所有值,您可以在上面的解决方案上迭代,而不是像打开csv文件时出现编码错误那样工作。我想要一个html表格格式的,可以放在csv文件
<table>
<tr><td> 1DNET3205TQ0 </td>
<td> 7MMMS0100VW0 </td>
<td> 7MMMS0100VW1 </td>
</tr>
<tr><td> 7MMMS0120VM0 </td>
<td> 7MMMS0140VW0 </td>
<td> 7MMMS0160VW0 </td>
</tr>
</table>
var array = [];
var page = require('webpage').create();
console.log('The default user agent is ' + page.settings.userAgent);
page.settings.userAgent = 'SpecialAgent';
page.open('https://www.apwagner.com/appliance-part/wpl/wp661600', function(status) {
if (status !== 'success') {
console.log('Unable to access network');
} else {
var ua = page.evaluate(function() {
return document.getElementById('ModelList').textContent;
});
console.log(ua);
array = ua.split(/\s+/);
}
phantom.exit();
});
var fs = require('fs');
//for users running with node
/*fs.writeFile("/home/data.csv", array.join(','), function(err) {
if(err) {
return console.log(err);
}
console.log("The file was saved!");
});*/
//for users running with phantomjs
fs.write('/home/data.csv', array.join(','), 'w');