【发布时间】:2021-07-29 08:57:23
【问题描述】:
我正在尝试使用 puppeteer 在网站上创建链接列表。如果网页有链接,请转到该链接并获取链接。
我可以将链接作为myArr 之类的数组获取,现在我想将它们格式化为对象。
我从数组创建嵌套对象时遇到问题。我可以像这样从数组创建嵌套对象吗?
或者有没有其他好的方法?
预期输出:
myObjFromArr = [
{
"keyword":"a",
"children":[
{
"keyword":"d",
"children":[
{
"keyword":"k"
},
{
"keyword":"l"
}
]
},
{
"keyword":"e",
"children":[
{
"keyword":"m"
}
]
},
{
"keyword":"f"
}
]
},
{
"keyword":"b",
"children":[
{
"keyword":"g"
}
]
},
{
"keyword":"c",
"children":[
{
"keyword":"h"
},
{
"keyword":"i"
},
{
"keyword":"j"
}
]
}
...
]
我做了什么:
- 使用 puppeteer 获取链表数组。
let count = 0;
let childrenArray = [];
for (let i = 0; i < keywords.length; i++) {
const keyword = keywords[i];
if (count < 20) {
await new Promise((resolve) => setTimeout(resolve, 1000));
await page.goto(`someurl/${keyword}`);
count++;
childArray = await page.$$eval(selector, (list) => {
return list.map((data) =>
data.href
);
});
childrenArray[i] = childArray;
}
let allKeywords = keywords;
childrenArray[i] = childrenArray[i].map((item) => {
allKeywords.push(item);
});
}
await browser.close();
- 我有一个这样的数组:
myArr = [['a', 'b' , 'c'], ['d', 'e', 'f'], ['g'],['h', 'i', 'j'],['k', 'l'],['m']...]
但不确定如何格式化这个数组来创建链接树?
【问题讨论】:
-
这是一个很好的任务。到目前为止,您尝试过什么,您在哪里卡住了?
-
另外,您的
myObjFromArr不是有效对象。 -
我修复了
myObjFromArr。我还写了我想要的细节。 @ilkerkaran -
你还没有修复你的
myObjFromArr,你确定应该有keyword: 'f'还是只有f?此外,您至今仍未分享您的尝试,这就是人们不回答您的原因。 -
我的建议:你的
myObjFromArr应该像这样更一致:[ { "keyword": "a", "children": [ { "keyword": "d", "children": [{ "keyword": "k" }, { "keyword": "l" }] }, { "keyword": "e", "children": [{ "keyword": "m" }] }, { "keyword": "f" } ] }, { "keyword": "b", "children": [{ "keyword": "g" }] }, { "keyword": "c", "children": [{ "keyword": "h" }, { "keyword": "i" }, { "keyword": "j" }] } ]
标签: javascript arrays loops puppeteer