木偶师刮表返回错误结果



我正在尝试抓取(这个)产品页面,特别是当你点击"查看所有出价"时显示的模式。

html结构只是一个简单的表,我试图得到每一个"大小"元素。问题是,每当我运行我的代码,它打开模态,但只返回一些随机的鞋码,不是按顺序的。

的例子:

shoeSizeBids: [
'14', '11.5', '10.5',
'11', '8.5',  '11',
'9',  '9',    '7',
'13'
]
我代码:

const bidsChartSel =
'#market-summary > div.ask.ask-button-b > div.sale-size > div:nth-child(2)';
await Promise.all([page.click(bidsChartSel)]);
// Get all the shoe size bids 
const shoeSizeBids= await page.evaluate(() =>
Array.from(
document.querySelectorAll('tbody > tr > td:nth-child(1)'),
(element) => element.textContent
)
);

您正在与当前选择器(tbody > tr > td:nth-child(1))匹配多个HTML表。模态内的使用:

.activity-table > tbody > tr > td:nth-child(1)

您也可以使用page.$$eval作为Array.from(document.querySelectorAll(selector))的木偶表演简写:

const shoeSizeBids = await page.$$eval('.activity-table > tbody > tr > td:nth-child(1)', elems => elems.map(el => el.innerText))

排序顺序来自该页面,即大小按该顺序呈现。要对它们进行正确排序,您需要:

  1. (可选)删除重复的大小
  2. 将字符串数组转换为浮点数数组
  3. 排序数组

这可以通过以下方式实现:

const uniqueSortedSizes = Array.from(new Set(shoeSizeBids))
.map(s => parseFloat(s, 10))
.sort((a, b) => a > b ? 1: a < b ? -1 : 0);

相关内容

  • 没有找到相关文章

最新更新