我在编程和JS方面都很陌生,所以我要做的是(在Visual Code上使用Selenium Webdriver)从页面中获取html表内容并将其转换为JSON数据。我成功获取了表数据,但转换似乎非常困难。
所以请帮助我解决我所遇到的困难,如果有人之前做过的话...... 感谢
很抱歉有人抽象了,所以这是我的代码......
var webdriver = require('selenium-webdriver'),
By = webdriver.By,
until = webdriver.until;
var driver = new webdriver.Builder().forBrowser('chrome').build();
driver.get('https://www.w3schools.com/html/html_tables.asp');
driver.sleep(15000).then(function () {
var table = [];
for (var i = 2; i < 8; i++) {
for (var k = 1; k < 4; k++) {
driver.findElement(By.xpath('//*[@id="customers"]/tbody/tr[' +
i + ']/td[' + k + ']')).getText().then(function(name){
table.push(name);
});
}
}
driver.sleep(10000).then(function () {
console.log(table);
});
});
这是输出......
[ 'Alfreds Futterkiste',
'Maria Anders',
'Germany',
'Centro comercial Moctezuma',
'Francisco Chang',
'Mexico',
'Ernst Handel',
'Roland Mendel',
'Austria',
'Island Trading',
'Helen Bennett',
'UK',
'Laughing Bacchus Winecellars',
'Canada',
'Magazzini Alimentari Riuniti',
'Giovanni Rovelli',
'Italy',
'Yoshi Tannamuri' ]
我想要JSON格式的数据,就像这样......
[
{ 'Company': 'Alfreds Futterkiste', 'Contact': 'Maria Anders',
'Country': 'Germany'} ,
{ 'Company': 'Centro comercial Moctezuma',
'Contact': 'Francisco Chang', 'Country': 'Mexico'} ,
......等等....
提前致谢!
答案 0 :(得分:0)
你可以通过多种方式解决这个问题,最简单也可能是最懒惰的方法就是拥有一个临时数组来存储每一列。
var table = [];
for (var i = 2; i < 8; i++) {
var tempArray = [];
for (var k = 1; k < 4; k++) {
driver.findElement(By.xpath('//*[@id="customers"]/tbody/tr[' +
i + ']/td[' + k + ']')).getText().then(function(name){
tempArray.push(name);
});
table.push({"Company":tempArray[0], "Contact":tempArray[1], "Country":tempArray[2]});
}
}
希望这有帮助