【发布时间】:2021-01-02 12:28:53
【问题描述】:
我用 python 和美丽的汤成功地做到了这一点,但现在我正试图将它移植到 Node.js 中
我的问题是循环没有将每个项目放入数组中自己的对象中,而是将所有内容都放入一个这样的对象中:
[
{
numbers: '123987456789',
letters: 'ABCDEFG'
}
]
代替:
[
{
numbers: '123',
letters: 'A'
},
{
numbers: '987',
letters: 'B
}
]
棘手的部分是 div 具有相同的 ID,因此我需要在 div 数组中获取特定的 ID。
在 Python 中我这样做了,然后使用 append 将项目添加到一个空列表中
myDivs = soup.select('#my-divs')[2]
numbers = myDivs('text.numbers')
labels = myDivs('text.labels')
Node.js
exports.scrapeData = async (req, res) => {
const html = await Axios.get(
"https://example.com"
);
const $ = await cheerio.load(html.data);
let tests = [];
$("#my-divs:eq(2)").each((i, elem) => {
tests.push({
numbers: $(elem).find("text.numbers").text(),
labels: $(elem).find("text.labels").text(),
});
});
console.log(tests);
html:
<div id="my-divs">
<text class="numbers">123</text>
<text class="labels">A</text>
<text class="numbers">987</text>
<text class="labels">B</text>
</div>
<div id="my-divs">
<text class="numbers">567</text>
<text class="labels">C</text>
<text class="numbers">543</text>
<text class="labels">D</text>
</div>
【问题讨论】: